比赛链接:Here

A - Max Add

观察一下发现每次输出与两点有关,前缀和和当前位置最大值

int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n; cin >> n;
ll s = 0, t = 0, mx = INT_MIN;
for (int i = 1, x; i <= n; ++i) {
cin >> x;
s += x, t += s;
mx = max(mx, 1ll * x);
cout << t + 1ll * i * mx << "\n";
}
}

B - Uniformly Distributed

问的是网格里有红色,蓝色,和没涂色的格子,问有多少种方法,将没涂色的格子上色,使得,无论怎么走(题目规定只能向下,向右),使得经过的红色的数量相等。

思路:从必经之路上(斜线)入手,如给斜线上两种颜色都有,那么题目无解,如果仅有一种颜色,那该斜线仅有一种涂色方式,如果都没有,则可涂两种颜色。于是问题的答案变成了 \(2^{cnt}\) ,cnt 代表没有涂色的斜线的条数.

const int N = 510, mod = 998244353;
string s[N];
ll qpow(ll a, ll b) {
ll ans = 1 ;
for (; b; b >>= 1, a = a * a % mod);
if (b & 1) ans = ans * a % mod;
return ans;
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; ++i) cin >> s[i], s[i] = "@" + s[i];
int r = 0, b = 0, cnt = 0, ans = 0;
bool f = 0;
for (int i = 1; i <= n; ++i) {
int x = i, y = 1;
r = 0, b = 0, cnt = 0;
while (x >= 1 and y <= m) {
if (s[x][y] == '.') cnt++;
if (s[x][y] == 'R') r = 1;
if (s[x][y] == 'B') b = 1;
x--, y++;
}
if (r == 1 and b == 1)f = 1;
else if (r == 1 and b == 0 || r == 0 and b == 1);
else {
if (cnt) ans++;
}
}
for (int i = 1; i <= m; ++i) {
if (i == 1) continue;
int x = n, y = i;
r = 0, b = 0, cnt = 0;
while (x >= 1 and y <= m) {
if (s[x][y] == '.') cnt++;
if (s[x][y] == 'R') r = 1;
if (s[x][y] == 'B') b = 1;
x--, y++;
}
if (r == 1 and b == 1)f = 1;
else if (r == 1 and b == 0 || r == 0 and b == 1);
else {
if (cnt) ans++;
}
}
if (f) ans = 0;
else ans = (ans + qpow(2, ans)) % mod;
cout << ans << "\n";
}

上面代码写复杂了,看了下其他人的发现一个很简洁的写法

const int md = 998244353;
int n, m, i, j, r;
char s[505][505], c[1010];
void solve() {
scanf("%d%d", &n, &m);
for (i = 0; i < n; i++) {
scanf("%s", s[i]);
for (j = 0; j < m; j++) if (s[i][j] != '.') {
if (c[i + j] != 0 && c[i + j] != s[i][j]) { puts("0"); return ;}
c[i + j] = s[i][j];
}
}
for (r = 1, i = 0; i <= n + m - 2; i++) if (c[i] == 0) r = (r * 2) % md;
printf("%d\n", r);
}

AtCoder Regular Contest 120 AB题的更多相关文章

  1. AtCoder Regular Contest 151补题

    AtCoder Regular Contest 151 A. Equal Hamming Distances 简单题,注意下答案需要字典序最小即可 #include<bits/stdc++.h& ...

  2. AtCoder Regular Contest 128 部分题题解

    关于鄙人罚坐两小时那件事...该开始看A题,这不就是个DP记录路径吗?Wrong了,嗯,我没用double,又Wrong,怎么回事,使劲检查自己的算法和细节问题,一个小时过去了,...这没错啊,又反复 ...

  3. Atcoder Regular Contest 060 F题第一问答案证明

    一切的开始 令 \(x\) 为字符串,\(p\) 为正整数.如果对于满足 \(0\le i<|x|−p\) 的任何整数 \(i\) 满足 \(x[i]=x[i+p]\),则 \(p\) 称为 \ ...

  4. AtCoder Regular Contest 094 (ARC094) CDE题解

    原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...

  5. AtCoder Regular Contest 092

    AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...

  6. AtCoder Regular Contest 102

    AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...

  7. AtCoder Regular Contest 096

    AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...

  8. AtCoder Regular Contest 097

    AtCoder Regular Contest 097 C - K-th Substring 题意: 求一个长度小于等于5000的字符串的第K小子串,相同子串算一个. K<=5. 分析: 一眼看 ...

  9. AtCoder Regular Contest 098

    AtCoder Regular Contest 098 C - Attention 题意 给定一个只包含"E","W"字符串,可以花一的花费使他们互相转换.选定 ...

  10. Atcoder regular Contest 073(C - Sentou)

    Atcoder regular Contest 073(C - Sentou) 传送门 每个人对开关的影响区间为a[i]--a[i]+t,因此此题即为将所有区间离散化后求所有独立区间的长度和 #inc ...

随机推荐

  1. CH59x 系统16位PWM使用

    以下使用CH592X做验证 CH59X系列相对于CH58X,CH57X系列的8位系统PWM多了6路的16位的PWM. CH59X除了定时器提供的 4 路 26 位 PWM 输出之外,系统还提供了 8 ...

  2. mysql的用户管理和权限控制

    1.创建用户用 create user '用户名' @ 'localhost' identified by '密码'; 这串代码是创建当地用,是这台电脑的用户,因为有个localhost: creat ...

  3. style绑定及随机颜色

    一个小案例 颜色变换 style单机事件的绑定

  4. 春秋云镜 - CVE-2022-29464

    WSO2文件上传漏洞(CVE-2022-29464)是Orange Tsai发现的WSO2上的严重漏洞.该漏洞是一种未经身份验证的无限制任意文件上传,允许未经身份验证的攻击者通过上传恶意JSP文件在W ...

  5. linux内核initcall放置在各个section中函数执行流程

    前言 linux以及嵌入式一些代码,我们看到core_initcall.device_initcall等等需要链接器分配各个section,并且在启动该模块时候执行.下面我们详细追溯一下执行过程. 作 ...

  6. 秒懂ajax轮询、long poll 、websocket

    ajax轮询 场景再现: 客户端:啦啦啦,有没有新信息(Request) 服务端:没有(Response) 客户端:啦啦啦,有没有新信息(Request) 服务端:没有..(Response) 客户端 ...

  7. 2023“强网杯”部分WP

    强网先锋 SpeedUp 题目 我的解答: 分析代码可知是求2的27次方的阶乘的每一位的和. 使用在线网址直接查看:https://oeis.org/A244060/list 然后sha256加密 f ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (25)-- 算法导论4.2 7题

    七.设计算法,仅使用三次实数乘法即可完成复数 a+bi和c+di 相乘.算法需接收a.b.c和d 为输入,分别生成实部 ac-bd 和虚部ad+bc. 文心一言: 可以使用如下算法来计算复数 a+bi ...

  9. SQL Server系列:系统函数之聚合函数

    聚合函数:指对一组值执行计算,并返回单个值.除了 Count(统计函数) 外,聚合函数都会忽略 Null 值 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用 1.Avg():返回 ...

  10. 学了这么久的高并发编程,连Java中的并发原子类都不知道?

    摘要:保证线程安全是 Java 并发编程必须要解决的重要问题,本文和大家聊聊Java中的并发原子类,看它如何确保多线程的数据一致性. 本文分享自华为云社区<学了这么久的高并发编程,连Java中的 ...