2011百校联动“菜鸟杯”程序设计公开赛-解题报告
来源:互联网 发布:黑马程序员 达内 编辑:程序博客网 时间:2024/06/11 06:05
具体分析见:
http://page.renren.com/601081183/note/791507956?ref=minifeed&sfet=2012&fin=5&ff_id=601081183&feed=page_blog&tagid=791507956&statID=page_601081183_2&level=1
下面部分是转载的。
4143 :a simple game
#include <iostream>#include<math.h>using namespace std;#define N 1000000009void solve(int n){ int i,flag=0,k; int min=N; for(i=1;i<=sqrt(n)+1;i++) { if(n%i==0) { k=1; int r=n/i; if(r>=i) k=r-i; else k=i-r; if(k%2==0&&k!=0) { flag=1; int x=k/2; if(x<min) min=x; } } } if(!flag) printf("-1\n"); else printf("%d\n",min);}int main(){ int n; int t; scanf("%d",&t); while(t--) { scanf("%d",&n); solve(n); } return 0;}
4144 :Bacon's Cipher
#include<iostream>#include<math.h>using namespace std;int hroh(int a[]){ int s=0,i; for(i=4;i>=0;i--) s=s+a[4-i]*(int)pow((float)2,(float)i); return s;}int main(){ int l; char a[10001]; while(cin>>l>>a) { int i,k=0,j=0,c[2001]; int b[5]; for(i=0;i<l;i++) {k++; if(a[i]>='A'&&a[i]<='Z') {b[i%5]=0;} else if(a[i]>='0'&&a[i]<='9') { b[i%5]=1;} if(k%5==0) {c[j++]=hroh(b);} } for(i=0;i<j;i++) // printf("%d ",c[i]+65);cout<<endl; // for(i=0;i<j;i++) printf("%c",c[i]+65); cout<<endl; }}
4145
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct point { double x,y;}p[100010],a,b;double dis(point a,point b){ return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);}int cmp(point x,point y){ return dis(x,a)<dis(y,a);}double max(double a,double b){ return a>b?a:b;}double min(double a,double b){ return a<b?a:b;}double aa[100010];int main(){ int t; int i,j,n; scanf("%d",&t); while(t--) { scanf("%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y); scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%lf%lf",&p[i].x,&p[i].y); } double ans=1000000000; sort(p+1,p+n+1,cmp); aa[n]=dis(p[n],b); for(i=n-1;i>=1;i--) { aa[i]=max(dis(p[i],b),aa[i+1]); } double tmp=aa[1]; for(i=1;i<n;i++) { tmp=min(tmp,aa[i+1]+dis(p[i],a)); } tmp=min(dis(p[n],a),tmp); printf("%.0lf\n",tmp); }}
4146
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN=1024;int map[MAXN][MAXN];int row[MAXN];int col[MAXN];char buffer[MAXN];int read(){ int ret=0; char c; while((c=getchar())==' '||c=='\n'||c=='\r'); ret=c-'0'; while((c=getchar())!=' '&&c!='\n'&&c!='\r') ret=ret*10+c-'0'; return ret;}int main(){ int n,i,j; char ch; int t; int casenum; t=read(); for(casenum=1; casenum<=t; casenum++) { memset(row,0,sizeof(row)); memset(col,0,sizeof(col)); n=read(); for(i=1; i<=n; i++) { scanf("%s",buffer+1); for(j=1; j<=n; j++) { map[i][j]= (buffer[j]=='b' ? 0: 1); } } int opnum; int a,b; opnum=read(); while(opnum--) { a=read(); b=read(); row[a]=!row[a]; col[b]=!col[b]; } int ans=0; for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { if(row[i]^col[j]) map[i][j]=!map[i][j]; ans+=map[i][j]; } } printf("Case #%d: ",casenum); printf("%d\n",ans); } return 0;}
4147
#include<iostream>#include <string>using namespace std;int main(){ string t; int n,B,D,f,F; int ans; int i,j,cnt_a,cnt_b,cnt_c; while(cin>>n>>B>>D>>f>>F){ ans=~0U>>1; for(j=1; j<=n; j++){ cnt_a=0; cnt_b=0; cnt_c=0; cin>>t; for(i=0; i<t.size(); i++){ switch(t[i]){ case 'A':cnt_a++;break; case 'B':cnt_b++;break; case 'C':cnt_c++;break; } } int now=cnt_a*B + cnt_a*D + cnt_a*f; now+=cnt_b*2*B + cnt_b*D*2 + cnt_b*F; now+=cnt_c*3*B + cnt_c*D*3 + cnt_c*F*2; if(now<ans) ans=now; } cout<<ans<<endl; } return 0;}
4148
#include<iostream>using namespace std;int s[40];char str[40][10000];void solve(){ int i,j,q; s[1]=1; s[2]=2; str[2][0]='1'; str[2][1]='1'; str[2][2]='\0'; for(i=3;i<=30;i++) { int len=strlen(str[i-1]); int k=0; for(j=0;j<len;j++) { char t=str[i-1][j];int cnt=0; for(q=j;q<len;q++) { if(str[i-1][j]==str[i-1][q]) { cnt++; } else break; } j=q-1; str[i][k++]=cnt+'0'; str[i][k++]=t; } str[i][k]='\0'; len=strlen(str[i]); // puts(str[i]); s[i]=len; } }int main(){ solve(); int n; while(cin>>n&&n) { printf("%d\n",s[n]); } return 0;}
4149
#include<stdio.h>int main(){ int cas; scanf("%d",&cas); while(cas--) { int x[8],sum,i; for( i=0; i<8; i++) { scanf("%d",&x[i]); } scanf("%d",&sum); int jin=0,flag=1; int ans[35],at=0; while(flag) { int now=0; //表示当前这位只和 flag=0; for( i=0; i<8; i++) { now+=1& x[i]; x[i]=x[i]>>1; if(x[i]!=0) flag=1; } if((now+jin)%2==0) { if((1&sum)==1) { ans[at++]=1; jin=(8-now+jin)/2; //如果当前这些位是取反的,需要8-now,jin(进位)不影响 } else { ans[at++]=0; jin=(now+jin)/2; } } else { if((1&sum)==1) { ans[at++]=0; jin=(now+jin)/2; } else { ans[at++]=1; jin=(8-now+jin)/2; } } sum=sum>>1; if(jin!=0 || sum!=0) flag=1; } int res=0,two=1; for(i=0; i<at; i++) { res+=two*ans[i]; two*=2; } printf("%d\n",res); } return 0;}
4150
#include<iostream>using namespace std;char str[1000009];char temp[10];int main(){ int t,i,j; cin>>t; while(t--) { int ans=0; scanf("%s%s",str,temp); // cin>>str;cin>>temp; int lena=strlen(str); int lenb=strlen(temp); int l=0; for(i=0;i<lena;i++) { if(str[i]==temp[0]) { int l=i+1; for(j=1;j<lenb;j++,l++) { if(str[l]!=temp[j]) break; } if(j==lenb) { ans++; i=l-1; } } } printf("%d\n",ans); } return 0;}
4151 这题可以二分。。我是很暴力的。。
#include<iostream>using namespace std;#define N 11000001bool f[N];void solve(){ int i,j,k,l,m,n,o,p,q; for(i=1;i<=9;i++) f[i]=1; for(i=1;i<=9;i++) for(j=0;j<=9;j++) { if(i!=j) f[i*10+j]=1; } for(i=1;i<=9;i++) { for(j=0;j<=9;j++) { if(i!=j) for(k=0;k<=9;k++) if(j!=k&&k!=i) f[i*100+j*10+k]=1; } } for(i=1;i<=9;i++) { for(j=0;j<=9;j++) { if(j!=i) { for(k=0;k<=9;k++) { if(k!=j&&k!=i) { for(l=0;l<=9;l++) if(l!=k&&l!=j&&l!=i) f[i*1000+j*100+k*10+l]=1; } } } } } for(i=1;i<=9;i++){ for(j=0;j<=9;j++) { if(j!=i) { for(k=0;k<=9;k++) { if(k!=j&&k!=i) { for(l=0;l<=9;l++) if(l!=k&&l!=i&&l!=j) { for(m=0;m<=9;m++) if(m!=l&&m!=i&&m!=j&&m!=k) f[i*10000+j*1000+k*100+l*10+m]=1; } } } } } } for(i=1;i<=9;i++){ for(j=0;j<=9;j++) { if(j!=i) { for(k=0;k<=9;k++) { if(k!=j&&k!=i) { for(l=0;l<=9;l++) if(l!=k&&l!=i&&l!=j) { for(m=0;m<=9;m++) if(m!=l&&m!=i&&m!=j&&m!=k) { for(n=0;n<=9;n++) if(n!=m&&n!=i&&n!=j&&n!=k&&n!=l) f[i*100000+j*10000+k*1000+l*100+m*10+n]=1; } } } } } } } for(i=1;i<=9;i++){ for(j=0;j<=9;j++) { if(j!=i) { for(k=0;k<=9;k++) { if(k!=j&&k!=i) { for(l=0;l<=9;l++) if(l!=k&&l!=i&&l!=j) { for(m=0;m<=9;m++) if(m!=l&&m!=i&&m!=j&&m!=k) { for(n=0;n<=9;n++) if(n!=m&&n!=i&&n!=j&&n!=k&&n!=l) { for(o=0;o<=9;o++) if(o!=n&&o!=i&&o!=j&&o!=k&&o!=l&&o!=m) f[i*1000000+j*100000+k*10000+l*1000+m*100+n*10+o]=1; } } } } } } } } }int main(){ solve(); int n; int ans=0,i; while(cin>>n) { ans=0; for(i=1;i<n;i++) if(f[i]) ans++; printf("%d\n",ans); } return 0;}
4152
#include<cstdio>#include<cstring>int hab[20][25];int main(){ int n,m; int i,j,k; int sat[25]; while(scanf("%d",&n) != EOF) { for( i=0; i<n; i++) scanf("%d",&sat[i]); scanf("%d",&m); for( i=0; i<m; i++) { for( j=0; j<n; j++) { scanf("%d",&hab[i][j]); } } int res=0,r[20]; int to=1<<m; for( i=1; i<to; i++) { int tr[20],tt=0; int tsat[25]; memset(tsat,0,sizeof(tsat)); for( j=0; j<m; j++) if( (i>>j) & 1) { tr[tt++]=j; for( k=0; k<n; k++) { tsat[k]+=hab[j][k]; } } int flag=1; for(int j=0; j<n; j++) { if(tsat[j]<sat[j]) { flag=0; break; } } if(flag && tt==res){ for( j=0; j<tt; j++) { if(tr[j]>r[j]) { flag=0; break; } } } if(flag && tt>=res) { res=tt; for( j=0; j<res; j++) { r[j]=tr[j]; } } } printf("%d",res); for(int i=0; i<res; i++) { printf(" %d",r[i]+1); } puts(""); }}
- 2011百校联动“菜鸟杯”程序设计公开赛-解题报告
- 2011百校联动“菜鸟杯”程序设计公开赛
- 2011百校联动“菜鸟杯”程序设计公开赛 &&Powerful Incantation
- 2011百校联动“菜鸟杯”程序设计公开赛&&Flip Game
- 2011百校联动“菜鸟杯”程序设计公开赛&&Magic Potion
- 2011百校联动“菜鸟杯”程序设计公开赛(现更新5道)
- 2011百校联动“菜鸟杯”程序设计公开赛&&Length of S(n)
- 2011百校联动“菜鸟杯”程序设计公开赛&&Bacon's Cipher
- 2011百校联动“菜鸟杯”程序设计公开赛&&KFC -Z+W
- 2011百校联动“菜鸟杯”程序设计公开赛&&Cover The Enemy
- 2011阿里巴巴程序设计公开赛 / 解题报告 8.18
- 2011阿里巴巴程序设计公开赛 / 1001 Coin Game
- 2011阿里巴巴程序设计公开赛 1001 Coin Game
- 2011阿里巴巴程序设计公开赛 / 1002 Fruit Ninja
- 2011阿里巴巴程序设计公开赛 总结(by胡浩)
- 2011阿里巴巴程序设计公开赛 / 1004 Level up
- HDU 3952 2011阿里巴巴程序设计公开赛
- 2011阿里巴巴程序设计公开赛 / 1009 Board Game Dice
- htons(), ntohl(), ntohs(),htons() 函数
- PeopleSoft error report: Error: Data Integrity Error
- 关于itouch/ipad 等设备的飞行模式
- linux aio
- office 2003 无法插入特殊符号问题 [转]
- 2011百校联动“菜鸟杯”程序设计公开赛-解题报告
- libpcap原理
- 04_PEI之InstallPpi演算法
- Joggler的MeeGo系统移植
- 常用字符串操作函数
- 最近看过的书
- Nokia CEO Stephen Elop’s ‘Burning Platform’ Memo
- android-contentProvide基础例子
- Delphi6开发人员指南学习杂记4-变体类型