2016年天梯赛初赛题集
L1:
-
#include<iostream> using namespace std; string s; int cnt,flag=0; int main() { getline(cin,s); if(s[0]=='-') { for(int i=1;i<s.size();i++) { if(s[i]=='2') cnt++; } if((s[s.size()-1]-'0')%2==0) flag=1; double ans=cnt*1.0/(s.size()-1); if(flag) { printf("%.2f%%",ans*100*1.5*2); } else printf("%.2f%%",ans*100*1.5); } else { for(int i=0;i<s.size();i++) { if(s[i]=='2') cnt++; } if((s[s.size()-1]-'0')%2==0) flag=1; double ans=cnt*1.0/(s.size()); if(flag) { printf("%.2f%%",ans*100*2); } else printf("%.2f%%",ans*100); } return 0; }
-
#include<stdio.h> #include<iostream> using namespace std; int hh,mm; char ch; int main() { cin>>hh>>ch>>mm; if(hh>12) { if(mm==0) for(int i=0;i<hh-12;i++) cout<<"Dang"; else for(int i=0;i<hh+1-12;i++) cout<<"Dang"; } else { printf("Only %02d:%02d. Too early to Dang.",hh,mm); } return 0; }
-
#include<iostream> using namespace std; int a,b,n; int x1,y1,x2,y2; int main() { cin>>a>>b; cin>>n; int cnta=a,cntb=b; while(n--) { cin>>x1>>y1>>x2>>y2; int temp=x1+x2; if(y1==x1+x2 && y2!=y1) { cnta--; } if(y2==x1+x2 && y1!=y2) { cntb--; } if(y1==y2) continue; if(cnta<0) { cout<<'A'<<endl; cout<<b-cntb<<endl; break; } if(cntb<0) { cout<<"B"<<endl; cout<<a-cnta<<endl; break; } } return 0; }
-
stl set !!!
#include<iostream> #include<set> using namespace std; int n,k,x,m,flag=0; set<int> a,ans; int main() { cin>>n; while(n--) { cin>>k; if(k>=2) { while(k--) { cin>>x; a.insert(x); } } else cin>>x; } cin>>m; while(m--) { cin>>x; if(a.find(x)==a.end() && ans.find(x)==ans.end()) { if(flag) cout<<" "; flag=1; ans.insert(x); printf("%05d",x); } } if(!flag) cout<<"No one is handsome"<<endl; }
-
#include<iostream> using namespace std; int main() { for(int i=0;i<3;i++) { cout<<"I'm gonna WIN!"<<endl; } return 0; }
-
#include<iostream> using namespace std; int n,x,cnt; int main() { cin>>n; for(int i=0;i<n;i++) { cin>>x; if(x%2==0) cnt++; } cout<<n-cnt<<" "<<cnt<<endl; return 0; }
-
#include<iostream> using namespace std; int g=0,p=0,l=0,t=0; string s; int main() { getline(cin,s); for(int i=0;i<s.size();i++) { if(s[i]=='g' or s[i]=='G') g++; if(s[i]=='p' or s[i]=='P') p++; if(s[i]=='l' or s[i]=='L') l++; if(s[i]=='t' or s[i]=='T') t++; } while(g+p+l+t) { if(g) { cout<<"G"; g--; } if(p) { cout<<"P"; p--; } if(l) { cout<<"L"; l--; } if(t) { cout<<"T"; t--; } } return 0; }
-
#include<iostream> using namespace std; int n; int main() { cin>>n; int ans=n+2; if(n==5) cout<<7; else cout<<ans%7; return 0; }
L2:
-
#include<iostream> #include<algorithm> using namespace std; int n,k,id,p; struct node{ int id,cnt; float res; }a[10001]; int cmp(node x,node y) { if(x.res!=y.res) return x.res>y.res; else if(x.cnt!=y.cnt) return x.cnt>y.cnt; else return x.id<y.id; } int main() { cin>>n; for(int i=1;i<=n;i++) { a[i].id=i; cin>>k; for(int j=0;j<k;j++) { cin>>id>>p; a[i].res-=p; a[id].cnt++; a[id].res+=p; } } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) { printf("%d %.2f\n",a[i].id,a[i].res/100); } return 0; }
-
经典的并查集 👉详细了解!!!
#include<iostream> using namespace std; int n,m,k,x1,x2,r; int g[101][101],fa[101]; void init(int n) { for(int i=1;i<=n;i++) fa[i]=i; } int find(int x) { if(fa[x]==x) return x; else { fa[x]=find(fa[x]); return fa[x]; } } void merge(int i,int j) { fa[find(i)]=find(j); } int main() { cin>>n>>m>>k; init(n); while(m--) { cin>>x1>>x2>>r; if(r==1) { merge(x1,x2); } else { g[x1][x2]=1; g[x2][x1]=1; } } while(k--) { cin>>x1>>x2; if(find(x1)==find(x2) && !g[x1][x2] && !g[x2][x1]) cout<<"No problem"<<endl; if(find(x1)!=find(x2) && !g[x1][x2] && !g[x2][x1]) cout<<"OK"<<endl; if(find(x1)==find(x2) && g[x1][x2] && g[x2][x1]) cout<<"OK but..."<<endl; if(find(x1)!=find(x2) && g[x1][x2] && g[x2][x1]) cout<<"No way"<<endl; } return 0; }
-
-
L3:
AMCMER 该你们表演了。