首页 > 其他 > 详细

所谓的日常 #8 - 王司徒巧使連環計 董太師大鬧鳳儀亭

时间:2016-01-02 22:24:38      阅读:260      评论:0      收藏:0      [点我收藏+]

div.2

CodeForces 475A Bayan Bus

题意就是安排K个人的座位并且输出咯。

嘛,这是我以前的代码...好像比大家都长哈哈哈...

技术分享
 1 #include <bits/stdc++.h>
 2 
 3 int n;
 4 int A[4][50];
 5 
 6 void paint() {
 7     for (int i = 0; n; ++ i) {
 8         if (i == 0) {
 9             int c = std::min(4,n);
10             for (int j = 0; j < c; ++ j) {
11                 A[j][i] = 1;
12             }
13             n -= c;
14         } else {
15             int c = std::min(3,n);
16             for (int j = 0; j < c; ++ j) {
17                 A[j][i] = 1;
18             }
19             std::swap(A[3][i],A[2][i]);
20             n -= c;
21         }
22     }
23     putchar(+);
24     for (int i = 0; i < 12; ++ i) {
25         printf("--");
26     }
27     putchar(+);
28     puts("");
29     for (int i = 0; i < 4; ++ i) {
30         putchar(|);
31         for (int j = 0; j < 11; ++ j) {
32             if (i==2) {
33                 if (A[i][j]) putchar(O);
34                 else if (j==0) putchar(#);
35                 else putchar(.);
36             } else {
37                 if (A[i][j]) putchar(O);
38                 else putchar(#);
39             }
40             putchar(.);
41         }
42         if (i==2) putchar(.);
43         else putchar(|);
44         if (i==0) putchar(D);
45         else putchar(.);
46         if (i==0 || i==3) puts("|)");
47         else puts("|");
48     }
49     putchar(+);
50     for (int i = 0; i < 12; ++ i) {
51         printf("--");
52     }
53     putchar(+);
54     puts("");
55 }
56 
57 int main() {
58     scanf("%d",&n);
59     paint();
60     return 0;
61 }
View Code

 

div.1

CodeForces 466C Number of Ways

把长度为n(<=5e5)的数组分成三段非空段且和相等 的方案数。

所以枚举第二段末尾位置,拿一个cnt记录之前有多少满足条件的第一段末尾 就好啦。

技术分享
 1 #include <bits/stdc++.h>
 2 typedef long long LL;
 3 
 4 const int N = 500000 + 5;
 5 int A[N],n;
 6 
 7 LL work() {
 8     LL sum = std::accumulate(A,A + n,0ll);
 9     if (sum % 3 != 0) return 0;
10 
11     LL now = 0,ret = 0,cnt = 0;
12     for (int i = 0; i < n - 1; ++ i) {
13         now += A[i];
14         if (now == sum / 3 * 2) {
15             ret += cnt;
16         }
17         if (now == sum / 3) {
18             cnt ++;
19         }
20     }
21     return ret;
22 }
23 
24 int main() {
25     scanf("%d",&n);
26     for (int i = 0; i < n; ++ i) {
27         scanf("%d",A + i);
28     }
29     printf("%I64d\n",work());
30 }
View Code

 

所谓的日常 #8 - 王司徒巧使連環計 董太師大鬧鳳儀亭

原文:http://www.cnblogs.com/zstuACM/p/5095139.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!