2012年4月14日进行的第九届浙江省省赛,进行的网络同步赛,以小组进行的训练,比赛期间没有上机做题,仅仅是充当翻译的作用,
完全拖本组的后腿,如果没有我,完全可以相信对于排名没有影响,自己的水平还是太差,太一般,赛后把一些水题自己做一做,也能
做出三道题,以后开始每一次比赛都写一份解题报告以及感想了
A题 Taxi Fare
题意:修改前,坐车起步价10块,超过3公里2元/公里,超过10公里3元/公里,停车2元/5分钟,外加1元的油费超支
修改后,坐车起步价11块,超过3公里2.5元/公里,超过10公里3.75元/公里,停车2.5元/4分钟
The actual fare is rounded to the nearest yuan, and halfway cases are rounded up
这真实的价格是是最接近的那个整数,半数的就向上取整(四舍五入)
round up 向上取整
#include<stdio.h> int main() { int T; int d,t; scanf("%d",&T); while(T--) { scanf("%d%d",&d,&t); double sum1=0,sum2=0; if(d<=3) { sum1+=10; sum2+=11; } else if(d<=10) {sum1=10+(d-3)*2; sum2=11+(d-3)*2.5;} else {sum1=24+(d-10)*3; sum2=28.5+(d-10)*3.75;} sum1+=0.4*t; sum2+=0.625*t; sum1+=1; int s1=sum1+0.5;//单次计算就取整,而不是两个相减后在取整 int s2=sum2+0.5; printf("%d\n",s2-s1); } return 0; }
题意:给你n个含12个字符的字符窜,让你找出每窜字符中都出现的字母
Each letter can only be used once.
这句话的意思并不是说每个字符窜中的一个字母只出现一次,而是当你排除的时候
只能用一次
如AA A 当你第一个字符窜中的第一个A和第二个字符窜中的A对比后,第二个字符窜中的
A就不能用了(哈希肯定错误的)
分析:拿第一个字符窜当作源字符窜,依次和下n-1行进行对比,若
#include<stdio.h> int main() { int T,i,j,n,k; char str[30][100]; scanf("%d",&T); while(T--) { scanf("%d",&n); for (i=0;i<n;i++) scanf("%s",str[i]); for (i=1;i<n;i++) for (j=0;j<12;j++) { for (k=0;k<12;k++) if(str[0][j]==str[i][k]) break; if(k==12) str[0][j]='#';//剔除 else str[i][k]='#'; } for (i=65;i<=90;i++)//按字母顺序输出 for (j=0;j<12;j++) if(str[0][j]==i) printf("%c",i); printf("\n"); } return 0; }
D题:Yet Another Story of Rock-paper-scissors
题意:剪刀石头布,都是女的赢。。。。
不过还是wa了一次,真是太水了,自己竟然复制粘贴的时候选错字符了,水~~
#include<stdio.h> #include<string.h> int main() { int T; char str1[30],str2[30],str3[30]; scanf("%d",&T); while(T--) { scanf("%s%s%s",str1,str2,str3); printf("%s will survive\n",str2); } return 0; }
J题:Modular Inverse
赤裸的扩展欧几里德,可是我不会,等以后学了再来做。。。Orz。