注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Yavin(某沙茶的代码库)

Star Wars fan and OIer

 
 
 

日志

 
 

SRM553 Div2  

2012-08-23 11:51:23|  分类: topcoder |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
第一次做topcoder 感觉蛮不错的,最终rank28。
题目除了第三题以外都不是很难(第三题写了个贪心后就没细想了,好可悲的)
继续放代码
250

#include<cstdio>
#include<algorithm>
using namespace std;

struct PlatypusDuckAndBeaver
{
int minimumAnimals(int c,int b,int a)
{
a+c-(a*4)
int y=(4*a+2*b-c)/2;
int x=a-y,z=b-y;
return x+y+z;
}
};


500

#include<algorithm>
#include<stack>
#include<vector>
#include<iostream>
using namespace std;

struct Suminator
{
const static int MAX=100;
typedef long long LL;
int findMissing(vector<int> p,int u)
{
size_t i;
LL sta[MAX],stb[MAX],top=0,ans1=0;
for(i=0;i<p.size();++i)
if(p[i]==0)
{
LL a1,a2,b1,b2;
if(top)
{
a1=sta[top],a2=stb[top];
--top;
}else a1=a2=0;

if(top)
{
b1=sta[top],b2=stb[top];
--top;
}else b1=b2=0;

a1+=b1;a2+=b2;
sta[++top]=a1;stb[top]=a2;
}else
{
LL a1=(p[i]==-1),a2=(p[i]!=-1)*p[i];
sta[++top]=a1;stb[top]=a2;
}
if(sta[top])
ans1=(u-stb[top])/sta[top];
LL stc[MAX];
top=0;
for(i=0;i<p.size();++i)
if(p[i]==0 || p[i]==-1)
{
LL a,b;
a=top?stc[top--]:0;
b=top?stc[top--]:0;
stc[++top]=a+b;
}else stc[++top]=p[i];
if(stc[top]==u)
return 0;
if(ans1>0)return ans1;
return -1;
}
};

1000

#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;

const int MAX=50+10;
int del[MAX],dp[MAX][MAX][MAX][MAX];
vector<int> A1,A2,A3,A4;

int work(int a1,int a2,int a3,int a4,int sum,int res)
{
if(dp[a1][a2][a3][a4]!=-1)
return dp[a1][a2][a3][a4];
if(!res)return dp[a1][a2][a3][a4]=sum;
if(a1<A1.size() && (sum-A1[a1])%4)
dp[a1][a2][a3][a4]=max(dp[a1][a2][a3][a4],work(a1+1,a2,a3,a4,sum-A1[a1],res-1));
if(a2<A2.size() && (sum-A2[a2])%4)
dp[a1][a2][a3][a4]=max(dp[a1][a2][a3][a4],work(a1,a2+1,a3,a4,sum-A2[a2],res-1));
if(a3<A3.size() && (sum-A3[a3])%4)
dp[a1][a2][a3][a4]=max(dp[a1][a2][a3][a4],work(a1,a2,a3+1,a4,sum-A3[a3],res-1));
if(a4<A4.size() && (sum-A4[a4])%4)
dp[a1][a2][a3][a4]=max(dp[a1][a2][a3][a4],work(a1,a2,a3,a4+1,sum-A4[a4],res-1));
return dp[a1][a2][a3][a4];
}

struct SafeRemoval
{
int removeThem(vector<int> a,int k)
{
size_t i;
for(i=0;i<a.size();++i)
if(a[i]%4==0)A1.push_back(a[i]);
for(i=0;i<a.size();++i)
if(a[i]%4==1)A2.push_back(a[i]);
for(i=0;i<a.size();++i)
if(a[i]%4==2)A3.push_back(a[i]);
for(i=0;i<a.size();++i)
if(a[i]%4==3)A4.push_back(a[i]);
memset(dp,-1,sizeof dp);
sort(A1.begin(),A1.end());
sort(A2.begin(),A2.end());
sort(A3.begin(),A3.end());
sort(A4.begin(),A4.end());
int sum=0;
for(i=0;i<a.size();++i)
sum+=a[i];
return work(0,0,0,0,sum,k);
}
};




  评论这张
 
阅读(272)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018