标签:
能够参加这次比赛得了第一名,首先得感谢阳哥,谢谢你当初的帮助,让我在这一年进步这么大啊
但是我认为自己输给了自己,没有在最后的关头做最正确的决定!!!!!
因为最后一题比赛结束的四十分钟前就知道怎么做了,却没有A掉
附上一榜单:(大牛勿笑)
1001
BACDBACDBAACCCDDDBCDBDCBABBBBDDDDAAACCAC BACDBACDBAACCCDDDBCDBDCBABBBBDDDDAAACCAD 39 BACDBACDBAACCCDDDBCDBDCBABBBBDDDDXXXCCAC BACDBACDBAACCCDDDBCDBDCBABBBBDDDDAAACCAC 39 BACDBACDBAACCCDDDBCDBDCBABBBBDDDDXXXCCAC BACDBACDBAACCCDDDBCDBDCBABBBBDDDDAAACCAC 36 END
Absolute Possible Wrong
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char a[55],b[55]; int num; int main() { while(scanf("%s",a)!=EOF) { if(!strcmp(a,"END")) return 0; scanf("%s",b); scanf("%d",&num); int temp=0; int flag=0; for(int i=0;i<40;i++){ if(a[i]=='X') flag++; else if(a[i]==b[i]) temp++; } if(flag==0&&temp==num) puts("Absolute"); else if(flag&&(temp<=num&&num<=(temp+flag))) puts("Possible"); else puts("Wrong"); } return 0; }
95 396 28 4 40 0
95 45 20 0 396 162 12 2 28 16 6 4 40 0
#include<stdio.h> #include<string.h> int a[10]; int pos; int deal(int n) { pos=0; int ans=1; while(n) { ans=ans*(n%10); n=n/10; } return ans; } int main() { int num; while(scanf("%d",&num),num!=0) { while(num>9) { printf("%d ",num); num=deal(num); } printf("%d\n",num); } return 0; }
4 0 2 0 6 3 1 3 7 5 1 10 3 5 -2 2 4 -2 2 -1
273.20 210.48
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> using namespace std; int n; double a,b; double num[15]; double power(double x,int y) { double temp=1; for(int i=1;i<=y;i++) temp=temp*x; return temp; } int main() { while(scanf("%d",&n)!=EOF) { if(n==-1) return 0; for(int i=0;i<=n;i++) scanf("%lf",&num[i]); scanf("%lf%lf",&a,&b); for(int i=0;i<=n;i++) num[i]=num[i]*(1/((double)(i+1))); double ans_a=0; double ans_b=0; for(int i=0;i<=n;i++){ ans_a+=num[i]*power(a,i+1); ans_b+=num[i]*power(b,i+1); } printf("%.2lf\n",ans_b-ans_a); } return 0; }
2 010 111 10 111 89 16 aB 10 10 000 00
1001 200 BB 0
#include<string.h> #include<stdio.h> #include<algorithm> using namespace std; void print(int x) { if(x==15) printf("F"); else if(x==14) printf("E"); else if(x==13) printf("D"); else if(x==12) printf("C"); else if(x==11) printf("B"); else if(x==10) printf("A"); else printf("%d",x); } int main() { int n; char a[1010],b[1010]; while(scanf("%d",&n)!=EOF) { getchar(); scanf("%s%s",a,b); int len1=strlen(a); int len2=strlen(b); reverse(a,a+len1); reverse(b,b+len2); int maxlen=max(len1,len2); int ans[1010]; memset(ans,0,sizeof(ans)); for(int i=0;i<len1;i++){ if(a[i]<='9'&&a[i]>='0') ans[i]+=a[i]-'0'; else if(a[i]<='F'&&a[i]>='A') ans[i]+=a[i]-'A'+10; else if(a[i]<='f'&&a[i]>='a') ans[i]+=a[i]-'a'+10; } for(int i=0;i<len2;i++){ if(b[i]<='9'&&b[i]>='0') ans[i]+=b[i]-'0'; else if(b[i]<='F'&&b[i]>='A') ans[i]+=b[i]-'A'+10; else if(b[i]<='f'&&b[i]>='a') ans[i]+=b[i]-'a'+10; } for(int i=0;i<maxlen;i++){ ans[i+1]+=ans[i]/n; ans[i]=ans[i]%n; } int flag=1; for(int i=maxlen;i>=0;i--){ if(flag&&ans[i]==0) continue; else{ print(ans[i]); flag=0; } } if(flag) printf("0"); puts("\n"); } return 0; }
1005
3 1 2 3 4 1 2 3 4
Case #1: 3 Case #2: 6
#include <stdio.h> #include <string.h> #define MAX(a,b) ((a)>(b)? (a):(b)) const int M=1000+5; int dp1[M],dp2[M]; int n; int work(int a[]) { int dp[M]; dp[0]=a[0]; dp[1]=MAX(a[0],a[1]); for(int i=2;i<n-1;i++) dp[i]=MAX(dp[i-1],dp[i-2]+a[i]); return dp[n-2]; } int main() { int K=1; while(~scanf("%d",&n)){ memset(dp1,0,sizeof(dp1)); memset(dp2,0,sizeof(dp2)); scanf("%d",&dp1[0]); if(n==1){ printf("Case #%d: %d\n",K++,dp1[0]); continue; } for(int i=1;i<n-1;i++) scanf("%d",&dp1[i]), dp2[i-1]=dp1[i]; scanf("%d",&dp2[n-2]); int ans1=work(dp1); int ans2=work(dp2); printf("Case #%d: %d\n",K++,MAX(ans1,ans2)); } return 0; }
1006
34 201 2098765413 1717171717171717171717171717171717171717171717171718 0
1 0 1 0
#include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> using namespace std; int main() { char a[1000]; memset(a,'0',sizeof(a)); while(~scanf("%s",a)) { int len=strlen(a); if(len==1&&a[0]=='0') return 0; reverse(a,a+len); a[len]='0'; a[len]='0'; int temp=(a[0]-'0')*5; int flag; for(int i=1;i<len;i++){ flag=(a[i]-'0')+(a[i+1]-'0')*10+(a[i+2]-'0')*100; flag=flag-temp; a[i]=flag%10+'0'; a[i+1]=(flag/10)%10+'0'; a[i+2]=flag/100+'0'; temp=(a[i]-'0')*5; } if(flag%17) printf("0\n"); else printf("1\n"); memset(a,'0',sizeof(a)); } return 0; }
另解:(运用的不是题目的中方法,而是同余求模定理)
#include<stdio.h> #include<string.h> int main() { char s[200]; while(scanf("%s", &s) == 1) { if(!strcmp(s, "0")) break; int m = 0; for(int i = 0; i < strlen(s); i++) m = (m*10+s[i]-'0')%17; printf("%d\n", m==0?1:0); } return 0; }
1007
1 6
Case #1:1
#include<stdio.h> int main() { int n; int coun=1; scanf("%d",&n); while(n--) { int temp; scanf("%d",&temp); printf("Case #%d:%d\n",coun++,temp/2-2); } return 0; }
这此只是一次小的比赛,希望自己可以再接再厉,能够再更好的平台上面取得更好的成绩
总结比赛之前的种种:
自己在poj水题到两百多,hdu水题六十多道后就不想再继续水题目,而是复习之前自己所写的代码,并且深入理解dp 搜索 的精髓
下面附上一张poj做过的题目集合照,大牛勿笑!!!!
在之前的学习中,枯燥而且相当乏味,只有当A掉一个题目的时候才是自己最开心的时候。能够坚持每天写代码看代码两个小时已属不易啊!!!而我花大量时间在编程上面后,紧接着就是对代码的恶心
所以需要劳逸结合,不能够只是写代码,还应该看点别的书籍,提高自己的精神境界,并且提高自己其他方面的能力。编程不是一蹴而就
但是话又说回来了,算法如果不花大量时间在上面你怎么可能取得好的成绩呢??!!!
比赛中:
自己心态有点不好,开始的时候题目测试有个小问题,交上去一直WA,导致最后半个小时把公式退出来后居然还没有A了那一道题目
因此又一次深刻的理解了,在最后的关头冷静下来才是赢家,这次我认为自己输给了自己
标签:
原文地址:http://blog.csdn.net/summer__show_/article/details/51347560