比赛链接: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. js根据某属性对json数组分类

    原数据: var arr = [ {name: '张三', age: 23, work: '计算机'}, {name: '王五', age: 29, work: '计算机'}, {name: '张兴' ...

  2. C语言-变量常量数据类型

    常量:不会变化的数据.不能被修改. 1. "hello".'A'.-10.3.1415926(浮点常量) 2. #define PI 3.1415 [强调]:没有分号结束标记. [ ...

  3. 轻量级SpringBoot配置中心 - Minimal-Config

    介绍 minimal-config-spring-boot-starter,是基于Spring-Boot原生配置注入实现原理的基础上,拓展的轻量级配置中心,项目体积只有24KB,设计理念为服务中小型项 ...

  4. [ABC261B] Tournament Result

    Problem Statement $N$ players played a round-robin tournament. You are given an $N$-by-$N$ table $A$ ...

  5. 聊一聊 .NET高级调试 内核模式堆泄露

    一:背景 1. 讲故事 前几天有位朋友找到我,说他的机器内存在不断的上涨,但在任务管理器中查不出是哪个进程吃的内存,特别奇怪,截图如下: 在我的分析旅程中都是用户态模式的内存泄漏,像上图中的异常征兆已 ...

  6. java断言机制(assert)

    java断言机制(assert) 概述 断言使用的时候不是很多,测试时会使用,springboot中也有使用,总的来说断言还是要慎重. 在Java中,同样也有assert关键字,表示断言 在Java中 ...

  7. Python——第二章:列表的概念

    在编程中,列表(List)是一种常用的数据结构,用于存储一组有序的元素.列表是Python中的内置数据类型之一,它允许你在一个变量中存储多个值,并且这些值可以是不同的数据类型,包括整数.浮点数.字符串 ...

  8. 斐波那契数Fibonacci

    509. 斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列.该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0,   F(1) = ...

  9. flink 笔记

    flink 分区实现 http://smartsi.club/physical-partitioning-in-apache-flink.html

  10. 简化业务代码开发:看Lambda表达式如何将代码封装为数据

    摘要:在云服务业务开发中,善于使用代码新特性,往往能让开发效率大大提升,这里简单介绍下lambad表达式及函数式接口特性. 1.Lambda 表达式 Lambda表达式也被称为箭头函数.匿名函数.闭包 ...