比赛链接: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. 写代码不用"if"行不行,曾经的反 if 运动

    如果在IT行业的时间够长的话,可能还记得大约10几年前,设计模式风靡一时的时候,有过一段反 "if" 的运动. 所谓的反"if"运动,其实是夸大了"i ...

  2. Excel表格数据可视化的六大常见方式,看看你都会吗?

    当涉及到Excel表格数据的可视化,有许多不同的方式可以展示和呈现数据.以下是六种常见的Excel表格数据可视化方式的详细介绍. 1. 条形图(Bar Chart) 条形图是一种常见的数据可视化图表类 ...

  3. 深度解析C#中LinkedList<T>的存储结构

    本文承接前面的3篇有关C#的数据结构分析的文章,对于C#有关数据结构分析还有一篇就要暂时结束了,这个系列主要从Array.List.Dictionary.LinkedList. SortedSet等5 ...

  4. Java并发(十八)----常见线程安全类及实例分析

    1.常见线程安全类 String Integer StringBuffer Random Vector Hashtable java.util.concurrent (JUC)包下的类 这里说它们是线 ...

  5. Python 潮流周刊第 31 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  6. linux没有ifconfig命令

    直接控制台安装(输入下面对应的tools命令就好了) ifconfig yum install -y net-tools.x86_64 vim yum -y install vim*

  7. lower_bound() upper_bound()函数

    转自http://blog.csdn.net/niushuai666/article/details/6734403 函数lower_bound()在first和last中的前闭后开区间进行二分查找, ...

  8. ElasticSearch安装中文分词器(插件)、分词测试

    https://github.com/medcl/elasticsearch-analysis-ik 分词测试: https://www.elastic.co/guide/en/elasticsear ...

  9. 华企盾DSC邮件发送成功,但是不解密也没有任何提示(未添加白名单)

    用Debugview监控整个过程,若日志中有信任邮箱未添加说明,白名单邮箱未添加或者添加错了(检查空格之类的或重新添加)

  10. pytest+allure+jenkins+python+git,实现Linux服务器看测试报告,并发送邮件通知

    1.简介 pytest:一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高. allure:是开源测试报告框架. jenkins:持 ...