首页 > 学院 > 开发设计 > 正文

文章标题

2019-11-08 02:48:17
字体:
来源:转载
供稿:网友
2.18 NOip2010模拟考试的总结

首先呢,这次考试带给我最直观的印象就是,我自己的代码水平还是太低了,虽然是没做过的题目,但毕竟是我应该能做的题目,虽然字数不多,但还是写一下总结!吾王镇楼 1.在做题的时候呢,感觉并不能很好得掌握题目的概念,也就是说用怎么样的方法解题,题目类型又是如何,这些不能很好得把握。 2.然后调试的时候,更深感自己的代码能力不行,因为实在调试地太慢了,特别是第三题,把w打成v只有我能干得出来。。。 3.最后是比较经典的,这次noip2010第二题的四位dp,大神算法,6得飞起。 题目自己找—

#include<stdio.h>#include<algorithm>using namespace std;int n,m,c[10010],a[10010],f[41][41][41][41];int main(){ freopen("tortoise.in","r",stdin); freopen("tortoise.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=m;i++) { int x; scanf("%d",&x); c[x]++;//注意一共其实只有4种牌,所以直接统计每种牌“1,2,3,4”各有多少; } f[0][0][0][0]=a[1];//初始化,分别表示1取0张,2取0张,3取0张,4取0张,即在1位置时得到1的分数; for(int i=0;i<=c[1];i++) for(int j=0;j<=c[2];j++) for(int p=0;p<=c[3];p++) for(int k=0;k<=c[4];k++) { int a1=0,a2=0,a3=0,a4=0; int a0=a[i+j*2+p*3+k*4+1];//这里是懒得之后打; if(i>=1)//dp转移方程,求出少拿哪一种牌对应的分数最优解 a1=f[i-1][j][p][k]; if(j>=1) a2=f[i][j-1][p][k]; if(p>=1) a3=f[i][j][p-1][k]; if(k>=1) a4=f[i][j][p][k-1]; f[i][j][p][k]=max(max(a1,a2),max(a3,a4))+a0; } PRintf("%d",f[c[1]][c[2]][c[3]][c[4]]); return 0;}

第三题也很有意思,是用二分加染色!但并不是很新颖,只是调试一点难,就不写了哈!


上一篇:星乐视频

下一篇:2.1.3 字面值常量

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表