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

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
复制代码

 

posted @   zstuACM  阅读(244)  评论(0编辑  收藏  举报
编辑推荐:
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
阅读排行:
· 为什么AI教师难以实现
· AI Agent爆火后,MCP协议为什么如此重要!
· Draw.io:你可能不知道的「白嫖级」图表绘制神器
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
点击右上角即可分享
微信分享提示