{
int ca; cin>>ca; gets(s); while(ca--) { gets(s);
for(int i=0;s[i]!='\\0';i++) {
// cout<='A'&&s[i]<='Z') {
if(s[i]=='F'&&s[i+1]=='F') {
cout<<'V'; i++; } else {
char a; a=s[i+1];
cout< cout< // system(\ } cout< return 0; } 8.重构二叉树 #include char a[100],b[100],s[100][3]; int cases,n,i,lena,lenb,c[100],d[100]; struct haha { char c; int k; }tree[100]; 16 void insert(char cc,int i) { if(c[cc] if(tree[2*i].c=='#') { tree[2*i].c=cc; tree[2*i].k=c[cc]; d[cc]=2*i; } else insert(cc,2*i); } else { if(tree[2*i+1].c=='#') { tree[2*i+1].c=cc; tree[2*i+1].k=c[cc]; d[cc]=2*i+1; } else insert(cc,2*i+1); } } int main() { scanf(\while(cases--) { for(i=0;i<100;i++) tree[i].c='#'; scanf(\ for(i=1;i<=n;i++) scanf(\ lena=strlen(a);lenb=strlen(b); //a[lena+1]='\\0'; // for(i=lena;i>0;i--) a[i]=a[i-1]; for(i=0;i tree[1].c=a[0];tree[1].k=c[a[0]];d[a[0]]=1; for(i=1;i printf(\ for(i=2;i<=n;i++) printf(\ printf(\} return 0; } 9.食物链 Acceteped : 322 Submit : 1049 Time Limit : 1000 MS Memory Limit : 65536 KB Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并 17 不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是\,表示X和Y是同类。 第二种说法是\,表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。 1) 当前的话与前面的某些真的话冲突,就是假话; 2) 当前的话中X或Y比N大,就是假话; 3) 当前的话表示X吃X,就是假话。 你的任务是根据给定的N(1 <= N <= 50,000)和K句话(0 <= K <= 100,000),输出假话的总数。 输入: 第一行是两个整数N和K,以一个空格分隔。 以下K行每行是三个正整数 D,X,Y,两数之间用一个空格隔开,其中D表示说法的种类。 若D=1,则表示X和Y是同类。 若D=2,则表示X吃Y。 输出: 只有一个整数,表示假话的数目。 Sample Input 100 7 1 101 1 2 1 2 2 2 3 2 3 3 1 1 3 2 3 1 1 5 5 Sample Output 3 Source Code Problem: 1047 User: 2009551233 Memory: 864K Time: 530MS Language: C++ Result: Accepted 18 Source Code #include int fs(int i) { if (f[i]==i) return i; int t=f[i]; f[i]=fs(f[i]); r[i]=(r[t]+r[i])%3; return f[i]; } void un(int x,int y,int h) { int a=fs(x),b=fs(y); f[a]=b; r[a]=(r[y]-r[x]+3+h)%3; } int main() { int n,k,i,ans(0); scanf(\ for (i=1;i<=n;++i) f[i]=i; for (i=0;i scanf(\ if (x>n || y>n) {++ans;continue;} if (d==1) { if (fs(x)==fs(y)) { if (r[x]!=r[y]) ++ans; } else un(x,y,0); } else { if (fs(x)==fs(y)) { if (r[x]!=(r[y]+1)%3) ++ans; } else un(x,y,1); } } printf(\ return 0; } 19 10.John的农场 Acceteped : 397 Submit : 687 Time Limit : 1000 MS Memory Limit : 65536 KB Description John是一个农场主,他有几个牧场,为了好好照顾他的牛,他必须在几个牧场之间来回,可糟糕的天气往往使得道路非常泥泞,为此John准备在牧场之间铺一些石子路,这样在下雨天也能快速地从一个牧场到另外一个牧场。但John的资金有限,为了自己能从任一个牧场都通过石子路到达另外一个牧场,他需要好好设计一下线路。请帮助John设计好线路,使得John能从任一个牧场都通过石子路到达另外一个牧场,且线路的费用最低。 输入: 第一行是一个整数K,表示有多少个测试用例,以后每个测试用例占n+1行。每个测试用例的第一行为一个整数n(3<=n<=20),表示有多少个牧场,从第二行开始为一个n*n的矩阵,矩阵元素aij表示从i个牧场到j个牧场的铺路费用。 输出: 每行输出一个测试用例的最小铺路费用。 Sample Input 2 6 0 6 1 5 0 0 6 0 5 0 3 0 1 5 0 5 6 4 5 0 5 0 0 2 0 3 6 0 0 6 0 0 4 2 6 0 4 0 1 2 3 1 0 3 4 2 3 0 1 3 4 1 0 Sample Output 15 4 20