【CodeForces】【#285】Div.2

时间:2024-06-07 14:06:14

生平第一场Codeforce……纪念一下,虽然跪的跟渣渣似的……啊不就是跪成渣渣了……

A、B暴力过去的……不知道会不会超时……C我犯了个2B错误,让输出总共多少条边,我都求出来边集E了……直接输出E.size()就行了……我居然还特么的自己用n去算!还找度数为0的点去减!WA了两次pretest……然后时间上浪费也好多……本来可以上2000分的T_T果然还是经验不足啊。

A:

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std; int main(){
// freopen("input.txt","r",stdin);
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
int val1=max(a*/,a-a*c/),val2=max(b*/,b-b*d/);
if (val1>val2) printf("Misha\n");
else if (val1<val2) printf("Vasya\n");
else printf("Tie\n");
return ;
}

B:

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std; int cnt=,num[]; string oldname[],newname[];
bool sign[]; int main(){
ios::sync_with_stdio(false);
// freopen("input.txt","r",stdin);
int n;
cin >> n;
string s1,s2; int temp=; F(i,,n){
temp=;
cin >> s1 >> s2;
F(j,,cnt) if (s1==newname[j]) {temp=j; break;}
if (temp) newname[temp]=s2;
else {oldname[++cnt]=s1; newname[cnt]=s2;}
}
cout <<cnt<<endl;
F(i,,cnt)
cout << oldname[i]<<" "<<newname[i]<<endl;
return ;
}

C:

 #include<cstdio>
#include<queue>
#include<vector>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
const int N=; void read(int &v){
v=; int sig=;
char ch=getchar();
while(ch<''||ch>''){ if (ch=='-') sig=-; ch=getchar();}
while(ch>=''&&ch<=''){ v=v*+ch-''; ch=getchar();}
} int degree[N],sum[N],a[N],b[N];
queue<int>Q;
struct edge{int from,to;};
vector<edge>E; int main(){
// freopen("input.txt","r",stdin);
int n;
scanf("%d",&n);
F(i,,n-)
scanf("%d%d",&degree[i],&sum[i]);
int ans=;
F(i,,n-)
if (degree[i]==) Q.push(i); while(!Q.empty()){
int x=Q.front(); Q.pop();
if (degree[x]<) continue;
degree[x]=; E.pb((edge){x,sum[x]});
degree[sum[x]]--;
sum[sum[x]]^=x;
if (degree[sum[x]]==) Q.push(sum[x]);
}
printf("%d\n",E.size());
rep(i,E.size())
printf("%d %d\n",E[i].from,E[i].to);
return ;
}

D:(Orz vfleaking)

 伏特跳蚤国王() ::
a * ! + b * ! + c * ! + ...
a < , b < , c < ... 伏特跳蚤国王() ::
把大家表示成这个样子 = =|| 伏特跳蚤国王() ::
= =|||| 大家。。。就是。。所有数。。 伏特跳蚤国王() ::
比如读进来的排列。。。把它的名次写成这个形式。。 伏特跳蚤国王() ::
然后在这个形式下做加法。。 Tunix() ::
!然后按找逐位递增的进制来进位? Tunix() ::
只保留后n位……? 伏特跳蚤国王() ::
嗯 = = 伏特跳蚤国王() ::
你既然都写成这个形式了。。加到 ?? * n! 这一位的时候 伏特跳蚤国王() ::
就可以溜了

VFK的讲解