Day 1:
第一次参加noip。小激动,小紧张,这些正常的情绪就不用说了。唯一值得一提的是 我早上步行去郑大工学院的时候迷路了,直接转进了隔壁的河南农大,绕了半天找不到机房,还给几个同学打了电话可就是没人接……于是就在保安异样的目光下灰溜溜地走出了校门= =...然后还算好,总算提前半个小时来到了考点。。。
然后找座位的时候我遇到了奇怪的事情!!我的座位旁边是夏五岳……同校+同语言……天知道负责人的随机数生成器是出了什么问题= =不过看起来我们似乎没有被监考的志愿者盯上?那就这样吧= =于是,按照平时的习惯,我先敲好了头文件和快速读入……(别问我为什么还有快速读入……我只是懒得每次打scanf又怕cin被卡……)然后……看题……
A: 生活大爆炸版石头剪刀布
给出五种手势的胜负关系,A、B的出拳循环节和总共进行的轮数N,求游戏结束时两人各自的输赢次数。
N <= 200。N <= 200。N <= 200。N <= 200。
QAQ……请告诉我我没有看错数据范围。请告诉我200遍我没有看错数据范围。不对……我是不是走错考场考成普及组了?可是普及组不应该是下午比赛吗……好吧好吧,我再检查200遍题目就开始敲代码。。。
于是开考后三十分钟,我开始了无脑模拟。话说这题要是数据范围再大那么几个零是不是就可以变成数论题了?= = 看来出题人有着特别的送分技巧……就这么敲完了模拟。果断开下一题?算了还是再检查200遍题目吧……万一理解错了呢……
1 /*========================================================*/
2 /*======================BY ASM.DEF========================*/
3 /*========================================================*/
4 #include <cstdio>
5 #include <cctype>
6 #include <cstring>
7 #include <cmath>
8 #include <algorithm>
9 #include <vector>
10 #include <queue>
11 #if defined DEBUG
12 FILE *in = fopen("test", "r");
13 #define out stdout
14 #else
15 FILE *in = fopen("rps.in", "r");
16 FILE *out = fopen("rps.out", "w");
17 #endif
18 template<typename T> inline bool getd(T &x){
19 int c = fgetc(in);
20 bool minus = 0;
21 while(c != '-' && c != EOF && !isdigit(c))c = fgetc(in);
22 if(c == EOF)return 0;
23 if(c == '-'){
24 minus = 1;
25 x = 0;
26 }
27 else x = c - '0';
28 while(isdigit(c = fgetc(in)))x = x * 10 + c - '0';
29 if(minus)x = -x;
30 return 1;
31 }
32 using namespace std;
33 /*==========================================================*/
34 const int maxn = 200 + 5;
35 const bool win[5][5] = {{0,0,1,1,0},{1,0,0,1,0},{0,1,0,0,1},{0,0,1,0,1},{1,1,0,0,0}};
36 int N, NA, NB;
37 int A[maxn], B[maxn], ansA = 0, ansB = 0;
38 int main(){
39 getd(N), getd(NA), getd(NB);
40 int i, a, b;
41 for(i = 0;i < NA;++i)
42 getd(A[i]);
43 for(i = 0;i < NB;++i)
44 getd(B[i]);
45 for(i = 0;i < N;++i){
46 a = A[i % NA];
47 b = B[i % NB];
48 if(win[a][b])++ansA;
49 if(win[b][a])++ansB;
50 }
51 fprintf(out, "%d %d\n", ansA, ansB);
52
53 return 0;
54 }
2 /*======================BY ASM.DEF========================*/
3 /*========================================================*/
4 #include <cstdio>
5 #include <cctype>
6 #include <cstring>
7 #include <cmath>
8 #include <algorithm>
9 #include <vector>
10 #include <queue>
11 #if defined DEBUG
12 FILE *in = fopen("test", "r");
13 #define out stdout
14 #else
15 FILE *in = fopen("rps.in", "r");
16 FILE *out = fopen("rps.out", "w");
17 #endif
18 template<typename T> inline bool getd(T &x){
19 int c = fgetc(in);
20 bool minus = 0;
21 while(c != '-' && c != EOF && !isdigit(c))c = fgetc(in);
22 if(c == EOF)return 0;
23 if(c == '-'){
24 minus = 1;
25 x = 0;
26 }
27 else x = c - '0';
28 while(isdigit(c = fgetc(in)))x = x * 10 + c - '0';
29 if(minus)x = -x;
30 return 1;
31 }
32 using namespace std;
33 /*==========================================================*/
34 const int maxn = 200 + 5;
35 const bool win[5][5] = {{0,0,1,1,0},{1,0,0,1,0},{0,1,0,0,1},{0,0,1,0,1},{1,1,0,0,0}};
36 int N, NA, NB;
37 int A[maxn], B[maxn], ansA = 0, ansB = 0;
38 int main(){
39 getd(N), getd(NA), getd(NB);
40 int i, a, b;
41 for(i = 0;i < NA;++i)
42 getd(A[i]);
43 for(i = 0;i < NB;++i)
44 getd(B[i]);
45 for(i = 0;i < N;++i){
46 a = A[i % NA];
47 b = B[i % NB];
48 if(win[a][b])++ansA;
49 if(win[b][a])++ansB;
50 }
51 fprintf(out, "%d %d\n", ansA, ansB);
52
53 return 0;
54 }