Problem A
题意:水题
代码如下:
1 //2014-01-20-23.26 2 #include3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #define MP(a, b) make_pair(a, b)12 #define PB(a) push_back(a)13 14 using namespace std;15 16 typedef long long ll;17 typedef pair pii;18 typedef pair puu;19 typedef pair pid;20 typedef pair pli;21 22 const int INF = 0x3f3f3f3f;23 const double eps = 1e-6;24 const int LEN = 1010;25 int Map[LEN][LEN];26 int ans;27 28 int main()29 {30 // freopen("in.txt", "r", stdin);31 32 int n;33 while(scanf("%d", &n)!=EOF){34 memset(Map, 0, sizeof Map);35 ans = 0;36 for(int i=1; i<=n; i++){37 int f = i%2;38 for(int j=1; j<=n; j++){39 Map[i][j] = f;40 ans += f;41 f = !f;42 }43 }44 printf("%d\n", ans);45 for(int i=1; i<=n; i++){46 for(int j=1; j<=n; j++){47 if(Map[i][j])printf("C");48 else printf(".");49 }printf("\n");50 }51 printf("\n");52 }53 return 0;54 }
Problem B
题意:对n个数组排序 每个长度都为n,让你输出一个序列(i,j)当i>j时才交换每个数组中的i,j号元素。
思路:这道题我十分二的,用了冒泡排序还去判断什么的。其实只要不管怎么样都交换m*(m-1)/2次就好了。
二B代码:
1 //2014-01-20-23.26 2 #include3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #define MP(a, b) make_pair(a, b)12 #define PB(a) push_back(a)13 14 using namespace std;15 16 typedef long long ll;17 typedef pair pii;18 typedef pair puu;19 typedef pair pid;20 typedef pair pli;21 22 const int INF = 0x3f3f3f3f;23 const double eps = 1e-6;24 const int LEN = 1010;25 int ary[LEN][LEN], n, m;26 27 int main()28 {29 // freopen("in.txt", "r", stdin);30 31 int order;32 33 while(scanf("%d%d%d", &n, &m, &order)!=EOF){34 for(int i=0; i q;41 for(int i=m-1; i>=0; i--){42 for(int j=0; j ary[k][j+1]){52 swap(ary[k][j], ary[k][j+1]);53 f = 1;54 }55 }56 }57 if(f) {58 if(order==0)q.push(MP(j,j+1));59 else q.push(MP(j+1,j));60 }61 ans+=f;62 }63 }64 printf("%d\n", ans);65 while(!q.empty()){66 pii nv = q.front(); q.pop();67 printf("%d %d\n", nv.first+1, nv.second+1);68 }69 }70 return 0;71 }
高神的正确姿势:
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include
10 #include 11 #include 12 #include 13 #include
Problem C
题意:一列牛1为头向右看的0为头向左看的。在一个牛被喂奶的时候有没喂过奶的牛看见会浪费一单元奶。问最少浪费多少单元奶?
思路:贪心先把朝一个方向的牛喂光,这样剩下来的就没有花费了。
代码如下:
1 //2014-01-20-23.26 2 #include3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define MP(a, b) make_pair(a, b)10 #define PB(a) push_back(a)11 12 using namespace std;13 14 typedef long long ll;15 typedef pair pii;16 typedef pair puu;17 typedef pair pid;18 typedef pair pli;19 20 const int INF = 0x3f3f3f3f;21 const double eps = 1e-6;22 const int LEN = 201010;23 24 int main()25 {26 // freopen("in.txt", "r", stdin);27 28 int n, tt;29 ll sum, ans;30 while(scanf("%d",&n)!=EOF){31 ans = sum = 0;32 for(int i=1; i<=n; i++){33 scanf("%d", &tt);34 if(tt)sum += tt;35 else ans+=sum;36 }37 printf("%I64d\n", ans);38 }39 return 0;40 }