【CodeForces】【#285】Div.2
生平第一场Codeforce……纪念一下,虽然跪的跟渣渣似的……啊不就是跪成渣渣了……
A、B暴力过去的……不知道会不会超时……C我犯了个2B错误,让输出总共多少条边,我都求出来边集E了……直接输出E.size()就行了……我居然还特么的自己用n去算!还找度数为0的点去减!WA了两次pretest……然后时间上浪费也好多……本来可以上2000分的T_T果然还是经验不足啊。
A:
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<iostream> 5 #include<algorithm> 6 #define rep(i,n) for(int i=0;i<n;++i) 7 #define F(i,j,n) for(int i=j;i<=n;++i) 8 #define D(i,j,n) for(int i=j;i>=n;--i) 9 using namespace std; 10 11 int main(){ 12 // freopen("input.txt","r",stdin); 13 int a,b,c,d; 14 scanf("%d%d%d%d",&a,&b,&c,&d); 15 int val1=max(a*3/10,a-a*c/250),val2=max(b*3/10,b-b*d/250); 16 if (val1>val2) printf("Misha\n"); 17 else if (val1<val2) printf("Vasya\n"); 18 else printf("Tie\n"); 19 return 0; 20 }
B:
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<iostream> 5 #include<algorithm> 6 #define rep(i,n) for(int i=0;i<n;++i) 7 #define F(i,j,n) for(int i=j;i<=n;++i) 8 #define D(i,j,n) for(int i=j;i>=n;--i) 9 using namespace std; 10 11 int cnt=0,num[1010]; 12 13 string oldname[1010],newname[1010]; 14 bool sign[2010]; 15 16 int main(){ 17 ios::sync_with_stdio(false); 18 // freopen("input.txt","r",stdin); 19 int n; 20 cin >> n; 21 string s1,s2; int temp=0; 22 23 F(i,1,n){ 24 temp=0; 25 cin >> s1 >> s2; 26 F(j,1,cnt) if (s1==newname[j]) {temp=j; break;} 27 if (temp) newname[temp]=s2; 28 else {oldname[++cnt]=s1; newname[cnt]=s2;} 29 } 30 cout <<cnt<<endl; 31 F(i,1,cnt) 32 cout << oldname[i]<<" "<<newname[i]<<endl; 33 return 0; 34 }
C:
1 #include<cstdio> 2 #include<queue> 3 #include<vector> 4 #include<cstring> 5 #include<cstdlib> 6 #include<iostream> 7 #include<algorithm> 8 #define rep(i,n) for(int i=0;i<n;++i) 9 #define F(i,j,n) for(int i=j;i<=n;++i) 10 #define D(i,j,n) for(int i=j;i>=n;--i) 11 #define pb push_back 12 using namespace std; 13 const int N=100086; 14 15 void read(int &v){ 16 v=0; int sig=1; 17 char ch=getchar(); 18 while(ch<'0'||ch>'9'){ if (ch=='-') sig=-1; ch=getchar();} 19 while(ch>='0'&&ch<='9'){ v=v*10+ch-'0'; ch=getchar();} 20 } 21 22 int degree[N],sum[N],a[N],b[N]; 23 queue<int>Q; 24 struct edge{int from,to;}; 25 vector<edge>E; 26 27 int main(){ 28 // freopen("input.txt","r",stdin); 29 int n; 30 scanf("%d",&n); 31 F(i,0,n-1) 32 scanf("%d%d",°ree[i],&sum[i]); 33 int ans=0; 34 F(i,0,n-1) 35 if (degree[i]==1) Q.push(i); 36 37 while(!Q.empty()){ 38 int x=Q.front(); Q.pop(); 39 if (degree[x]<1) continue; 40 degree[x]=0; 41 42 E.pb((edge){x,sum[x]}); 43 degree[sum[x]]--; 44 sum[sum[x]]^=x; 45 if (degree[sum[x]]==1) Q.push(sum[x]); 46 } 47 printf("%d\n",E.size()); 48 rep(i,E.size()) 49 printf("%d %d\n",E[i].from,E[i].to); 50 return 0; 51 }
D:(Orz vfleaking)
1 伏特跳蚤国王(497446970) 22:22:34 2 a * 1! + b * 2! + c * 3! + ... 3 a < 2, b < 3, c < 4 ... 4 5 伏特跳蚤国王(497446970) 22:22:53 6 把大家表示成这个样子 = =|| 7 8 伏特跳蚤国王(497446970) 23:17:11 9 = =|||| 大家。。。就是。。所有数。。 10 11 伏特跳蚤国王(497446970) 23:17:24 12 比如读进来的排列。。。把它的名次写成这个形式。。 13 14 伏特跳蚤国王(497446970) 23:17:39 15 然后在这个形式下做加法。。 16 17 Tunix(775712558) 23:18:24 18 !然后按找逐位递增的进制来进位? 19 20 Tunix(775712558) 23:18:48 21 只保留后n位……? 22 23 伏特跳蚤国王(497446970) 23:18:53 24 嗯 = = 25 26 伏特跳蚤国王(497446970) 23:19:09 27 你既然都写成这个形式了。。加到 ?? * n! 这一位的时候 28 29 伏特跳蚤国王(497446970) 23:19:14 30 就可以溜了