传送门:http://poj.org/problem?id=1543
今天在wikioi上好不容易把天梯的题都刷光了,以为能"国家队员"结果TM还是“集训队员”,怒了,在洛谷OJ上交了30+以前做过的题,又去刷刷poj的水题安抚自己受伤的心灵~~~
P1543:
题意:
求满足a^3=b^3+c^3+d^3(a<=n b,c,d>1)的数
Code:
#include<cstdio> #include<cmath> #include<iostream> #include<algorithm> using namespace std; typedef long long lld; lld sum[101]; int n; int main(){ for(int i=1;i<=100;i++) sum[i]=i*i*i; cin>>n; for(int i=1;i<=n;i++){ for(int j=2;j<i;j++){ for(int k=j+1;k<=i;k++){ lld d=sum[i]-sum[j]-sum[k]; lld a=(int)(pow(d,0.333333)+0.5); if(a*a*a==d&&a>=k&&a<=i){ printf("Cube = %d, Triple = (%d,%d,%d)\n",i,j,k,a); } } } } return 0; }
P3062
读入什么就输出什么……= =、
Code:
#include<iostream> #include<string> using namespace std; string s; int main(){ while(getline(cin,s)){cout<<s<<endl;} return 0; }
经典的数字三角形,唉……十年前的IOI现在被人随便虐……
Code:
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int f[101][101]; int d[101][101]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>>d[i][j]; f[1][1]=d[1][1]; for(int i=2;i<=n;i++) for(int j=1;j<=i;j++){ f[i][j]=max(f[i-1][j],f[i-1][j-1])+d[i][j]; } int maxx=0; for(int i=1;i<=n;i++) maxx=max(maxx,f[n][i]); cout<<maxx<<endl; return 0; }
题意:班里有n个人,考了m次试,分数是累加的,求每次考完后Li Ming 的rank值
蒟蒻居然想用平衡树来搞,faebdc神犇告诉我O(n)算法后吓哭了……
Code:
#include<cstdio> #include<iostream> #include<algorithm> #include<string> #include<map> using namespace std; int sor[100001]; int n,m; int Li; string s; map<string,int>M; int main(){ scanf("%d",&n); getchar(); for(int i=1;i<=n;i++){ getline(cin,s); M[s]=i; if(s=="Li Ming") Li=i; }cin>>m; while(m--){ for(int i=1;i<=n;i++){ int x; cin>>x;getchar(); getline(cin,s); while(s[0]==' ')s.erase(0,1); int man=M[s]; sor[man]+=x; } int rank=1; for(int i=1;i<=n;i++){ if(i==Li)continue; if(sor[i]>sor[Li]) rank++; } printf("%d\n",rank); } return 0; }