如何才能穿过传送门

你走入了一条布满了传送门和墙的小巷。

小巷可以视为一条位于XX 轴上的线段,从 00 点开始,到 nn 点结束。你一次只能向左或者向右走一格。在小巷里面有若干对传送门,你不可以越过传送门而不进行传送。你从传送门的左侧一格进入,会从对应传送门出来并且下一次只能往右走;从传送门的右侧一格进入,会从对应传送门出来并且下一次只能往左走。同时中间现在有若干面墙,你不能走到墙上。保证所有的墙和传送门不会重合。你现在位于 00 点,请问你能否到达 nn 点?

#include <iostream>
using namespace std;
const int N = 1e3 + 10;int a[N];int main() {int n, m, q;cin >> n >> m >> q;for (int i = 1; i <= m; ++ i) {int x, y;cin >> x >> y;a[x] = y;a[y] = x;}for (int i = 1; i <= q; ++ i) {int x;cin >> x;a[x] = -1;}bool ok = true;int i = 0;int cnt = 0;for (; i < n; ) {cnt ++ ;if (a[i] == 0) {i ++ ;} else if (a[i] == -1) {ok = false;break;} else {i = a[i] + 1;}if (cnt == 10000) {ok = false;break;}}if (!ok || i != n) {cout << "NO";} else {cout << "YES";}
}

古老的恩尼格玛机

#include <iostream>
#include <map>
using namespace std;
const int N = 30;
char a[N];int main() {map<char, char> ma;for (int i = 1; i <= 26; ++ i)cin >> a[i];for (int i = 1; i <= 13; ++ i) {char t1 = a[2 * i - 1], t2 = a[2 * i];ma[t1] = t2;ma[t2] = t1;}int k;cin >> k;while (k -- ) {string s;cin >> s;for (int i = 0; i < s.size(); ++ i) {s[i] = ma[s[i]];}cout << s << ' ';}
}

并不智能的卡牌 AI

公元 2202 年,你漫步在元宇宙的世界中,遇见了守着 SHU 城门的 Foxity AI。Foxity AI 正被一个翻牌问题困扰着,并请求你帮帮他。

Foxity AI 面前存在 mm 张背面朝上的卡牌。在一步里,Foxity AI 可以将至多 nn 张牌翻面,Foxity AI 想知道他能不能通过若干步操作,使面前的所有卡牌都变为正面朝上的状态(即不存在牌背面朝上)。如果能的话,请告诉他至少需要多少步。

#include <iostream>
using namespace std;int main() {int m, n;cin >> m >> n;if (m == 0) {cout << 0;} else {if (n == 0) {cout << -1;} else {cout << m / n + (m % n != 0);}}
}

多吃蘑菇(dfs)

Crazycth 看见了穿过传送门的你,他邀请你帮助他的室友。

Crazycth 的室友经常深夜看马里奥录播,现在他正梦到自己被库巴追,被迫逃进了一个迷宫。

迷宫可以视为一棵 nn 个节点的树,在第 ii 个节点有一个大小 w_iw
i

,颜色为 c_ic
i

的蘑菇。

Crazycth 的室友喜欢吃蘑菇,但是相同颜色的蘑菇他只想吃一个,同时每个节点只能经过一次。他可以瞬间算出以任一节点为终点时他所能吃的蘑菇大小总和的最大值。不过他此时忙于在迷宫入口(11 号节点)吃蘑菇,聪明的你能帮忙解决这个问题吗?

#include <iostream>
#include <vector>
#define pb push_back
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;vector<int> g[N];
int n, w[N], c[N], fa[N], mx[N];
ll ans[N];
ll sum;void dfs(int u) {int last = mx[c[u]];ll tmp = sum;mx[c[u]] = max(mx[c[u]], w[u]);sum = sum - last + mx[c[u]];ans[u] = sum;for (auto v : g[u]) {if (v == fa[u]) continue;fa[v] = u;dfs(v);}sum = tmp;mx[c[u]] = last;
}int main() {cin >> n;for (int i = 1; i <= n; ++ i)cin >> w[i];for (int i = 1; i <= n; ++ i)cin >> c[i];for (int i = 1; i < n; ++ i) {int u, v;cin >> u >> v;g[u].pb(v);g[v].pb(u);}dfs(1);for (int i = 1; i <= n; ++ i)cout << ans[i] << endl;
}

差不多得了

Auggie 非常喜欢说差不多,而 Crazycth 非常喜欢说得了,于是他们在一起玩时经常发出差不多得了的声音。

对于一个由正整数组成的数组 aa,定义 ss 为 aa 数组所有元素之和,即\displaystyle s=\sum_{i=1}^{n} a_{i}s=
i=1

n

a
i

。Auggie 会将数组中的一些数取出并按原来顺序拼接成一个新的子数组 bb,即 bb 是 aa 的一个子序列,而一个数组的子序列被称为差不多得了的当且仅当它的所有元素之和等于 s-1s−1。

Crazycth 想知道数组 aa 有多少种本质不同的差不多得了的 bb。你能帮他解答吗?

对于数组 xx 与 yy,它们是本质不同的当且仅当它们长度不同或存在 ii 使得 x_i \neq y_ix
i



=y
i

#include <iostream>
using namespace std;
const int N = 35;int n, a[N];int main() {int _;cin >> _;while (_ -- ) {cin >> n;int cnt = 0;for (int i = 1; i <= n; ++ i) {cin >> a[i];if (a[i] == 1 && a[i - 1] != 1) {cnt ++ ;}}cout << cnt << endl;}
}

数学题真难啊

你告别了 Crazycth 继续上路,又遇到了不喜欢数学的 DavidXu_JJ 讲故事。

DavidXu_JJ 有一天和他的队友在训练时,遇到这么一道题:

有一个长度为 nn 的数组 a = [a_1, a_2, \ldots, a_n]a=[a
1

,a
2

,…,a
n

],数组中的每个元素可以是 0 \sim 90∼9 中的任意一个整数。如果它所有元素之和 \sum a∑a 是 33 的倍数,那么就称它为有趣的数组,你需要求出所有长度为 nn 的数组中有多少种数组是有趣的。

DavidXu_JJ 和他的队友决定构造它的 生成函数 并使用 快速傅立叶变换 来计算这个值,但在复盘时发现这题有极其简单的方法能够算出答案,导致他们当场脑淤血晕倒过去。

DavidXu_JJ 从病床上想到了一个更加困难的问题,但他因为心理阴影导致无法独立解决这个问题,请问你能否帮助他解决?题目描述如下:

有一个长度为 nn 的数组 a = [a_1, a_2, \ldots, a_n]a=[a
1

,a
2

,…,a
n

],数组中的每个元素可以是 0 \sim 90∼9 中的任意一个整数。现将其下标为奇数的元素和偶数的元素分别取出,组成两个数组 a^{\text{odd}}a
odd
和 a^{\text{even}}a
even
。例如:数组 a = [1, 2, 3, 4, 5, 6, 7]a=[1,2,3,4,5,6,7] 被分为数组 a^{\text{odd}} = [1, 3, 5, 7]a
odd
=[1,3,5,7] 和数组 a^{\text{even}} = [2, 4, 6]a
even
=[2,4,6]。

如果 \sum a^{\text{odd}}∑a
odd
是 33 的倍数且 \sum a^{\text{even}}∑a
even
数组是 99 的倍数,那么就称 aa 为"不有趣的数组’',请求出所有长度为 nn 的不有趣数组的个数。由于答案可能很大,你只需要输出答案对 998244353998244353 取模后的结果。

#include <iostream>
using namespace std;
typedef long long ll;
const ll mod = 998244353;ll qmi(ll a, ll b) {ll res = 1;while (b) {if (b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}int main() {ll n;cin >> n;ll odd = n / 2, even = n / 2;if (n & 1) odd ++ ;ll ans1 = ((qmi(10, odd) - 1 + mod) % mod * qmi(3, mod - 2) % mod + 1) % mod;ll ans2 = ((qmi(10, even) - 1 + mod) % mod * qmi(9, mod - 2) % mod + 1) % mod;cout << (ans1 * ans2 % mod + mod) % mod;
}

第20届上海大学程序设计联赛春季赛(同步赛)相关推荐

  1. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 E-小Y吃苹果

    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 E-小Y吃苹果 链接:https://www.nowcoder.com/acm/contest/91/E 来源:牛客网 题目描述 小Y买 ...

  2. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列

    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列 链接:https://www.nowcoder.com/acm/contest/91/L 来源:牛客网 题目描述 给一个数组 ...

  3. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A-Wasserstein Distance

    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A-Wasserstein Distance 链接:https://www.nowcoder.com/acm/contest/91/A ...

  4. 好久没撸c,第一场回状态的题(埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛

    题目链接: 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A:Wasserstein Distance ## 题意:有2大堆柱状图的土(总体积相同,问从第一堆土移动到第二堆消耗最少的 ...

  5. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 F- 1 + 2 = 3? (好难的找规律题)

    斐波那契真的牛掰 题目链接 题目描述: 小Y在研究数字的时候,发现了一个神奇的等式方程 ,他屈指算了一下有很多正整数x满足这个等式,比如1和2,现在问题来了,他想知道从小到大第N个满足这个等式的正整数 ...

  6. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 C序列变换...

    链接:https://www.nowcoder.com/acm/contest/91/C 来源:牛客网 没有账号的同学这样注册,支持博主 题目描述 给定两个长度为n的序列,ai, bi(1<=i ...

  7. 【牛客网】埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 题解

    题目连接 A.Wasserstein Distance (水题) 题意:给你2行土a,b,每行都有n堆,每堆对应有a[i],b[i]克,我们可以对a中的土进行移动,移动任意堆的k克泥土到a中其他堆消耗 ...

  8. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛B合约数

    链接:https://www.nowcoder.com/acm/contest/91/B 来源:牛客网 题目描述 在埃森哲,员工培训是最看重的内容,最近一年,我们投入了 9.41 亿美元用于员工培训和 ...

  9. 二数 (埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛)...

    题目描述 我们把十进制下每一位都是偶数的数字叫做"二数". 小埃表示自己很聪明,最近他不仅能够从小数到大:2,3,4,5....,也学会了从大数到小:100,99,98...,他想 ...

  10. 【牛客网】【埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛】B—合约数【莫队做法】

    题目链接:B-合约数 题意:一棵树,有n个节点,从1编号到n.根节点的编号为p.给出每个节点的val[i]值,定义f(i)为以编号i为根节点的子树中(包括根节点),所有val[j]是合数并且是val[ ...

最新文章

  1. 虚拟主播上线:多模态将改变人机交互的未来
  2. 电子商务企业借力呼叫中心提高效率
  3. 构建区块链数字货币交易平台服务器的选择
  4. LL-verilog 1000HZ分频为1HZ使用三个十位计数器合成
  5. 学会这些, 让你的服务器远离***影响
  6. java序列化有什么用_java中序列化的作用
  7. java原生的ajax怎么写_原生Ajax代码实现
  8. 作者:张彦霞(1974-),女,博士,中国科学院国家天文台研究员、硕士生导师...
  9. sem_wait sem_post信号量操作进本函数
  10. poj 3177 Redundant Paths(tarjan边双连通)
  11. 自动化测试学习之路--java 数组
  12. PMP通关必备——知识地图全套(附PMBOK第七版)
  13. c语言的论文,C语言论文
  14. SIM卡的密码PIN与PUK密码PIN
  15. 走出软件作坊之十七-走钢索的人
  16. matlab的主要功能与应用领域,MatLab的特点及应用领域?
  17. Jmter的接口测试提升篇
  18. 四阶行列式直接展开_4行列式按行(列)展开课程.ppt
  19. DSP芯片上电后在执行main函数前的执行流程
  20. 用python自动化玩游戏封号吗_玩游戏还花钱找代练?教你Python游戏开发原理实现自动化操作!...

热门文章

  1. java爬虫(爬取豆瓣电影排行榜)
  2. 人脸测温门禁 传感器_测温人脸门禁什么牌子好
  3. matlab字符识别ocr,OCR字符识别 matlab
  4. 【练习题】第四章--交互设计(Think Python)
  5. JS代码转换d.ts语法
  6. 外网无法访问花生壳域名的解决方法
  7. [ffmpeg][goav]ffmpeg代码例子pcmu重采样并转码aac格式
  8. 教你设置QQ空间个性签名档
  9. win7系统怎么安装dhcp服务器,笔者研习win7系统安装dhcp服务器的技巧介绍
  10. 如何缓解眼睛疲劳酸痛?