2021-2022年度第三届全国大学生算法设计与编程挑战赛(夏季赛)

主要是用于记录涉及的知识点,本次比赛是团队赛。

http://oj.saikr.com/contest/20/problems

部分题目讲解视频:

https://edu.saikr.com/course/957/task/5879/show

文章目录

  • 2021-2022年度第三届全国大学生算法设计与编程挑战赛(夏季赛)
    • B、Path
      • 问题:
      • 解题思路:
    • C、Square
    • D、Poly
    • F、String
      • 问题:
    • G、Rev
    • I、Tree
    • J、大富翁
      • 问题:
      • 解题思路:

B、Path

问题:

地上存在着一个 n \times nn×n 的地图,地图中包括两种字符,PP 和 NN, 其中 PP 表示该处可以通过,NN 表示该处不可以通过。

游戏规定:Makik 需要进行多次滑动。每次滑动选择一个 P 作为自己的起点,从起点出发,并沿着一个方向(上下左右)前进,前进的同时需要保证

  1. 不能走到 NN 的格子上
  2. 不能走出 n \times nn×n 的地图
  3. 不能中途改变方向。

当一次滑动结束时,Makik 可以开始选择下一个 P 并开始下一次滑动直到地图中不存在 PP, 游戏结束。

为了增加游戏的趣味性,每经过一个格子,这个格子就会从 PP 变成 NN

米忽悠为了让游戏充满挑战性,进行的滑动的次数越少,得到的奖励越多,现在 Makik 想要拿到最高等级的奖励,来抽取小吉祥草王,所以他把地图交给了你,请你好好研究下怎么解决这个问题。

Input

第一行一个数字 nn 表示正方形地图的边长

接下来 nn 行,每行 1 个长度为 nn 的字符串,由 NN 和 PP 组成。

Output

一行一个数字,表示最少需要的滑动次数。

Sample Input 1

2
PN
NP

Sample Output 1

2

Sample Input 2

5
PNNPN
PNPPP
NPPPP
PNNNP
PNNNP

Sample Output 2

6

Hint 数据规模

n≤50

解题思路:

属于网络流问题,问题在于怎么防止在某个点转向

将横纵拆开,设立源点S,汇点T。

C、Square

枚举分割线,DP即可

相同的题:

https://codeforces.com/contest/1404/problem/E

D、Poly

也涉及了枚举

F、String

问题:

Makik 在上次的比赛后沉迷原神,现在要向你展示他给史莱姆排队的能力。

具体而言,我们用一个大写字母来表示一种史莱姆,同种史莱姆之间没有区别,这里我们认为共有 26 种不同类型的史莱姆。

Makik 有一个已经排好队的史莱姆序列 B, 现在又给了你一个还没排好队的史莱姆序列 A, 请问最少多少次操作能把 A 排成 B呢?

这个问题太简单了,所以 Makik 加了个限制条件:

每次移动 A 中的史莱姆的时候,只能将想要移动的史莱姆从原来的位置移动到队头,也就是第一个史莱姆的前面。

请问在这个限制下,最少多少次操作可以将 A 排成 B 呢?

Input

第一行一个数字 nn, 表示史莱姆序列的长度。

接下来一行 nn 个大写字母组成的字符串,表示史莱姆序列 A。

再接下来一行 nn 个大些字母组成的字符串,表示史莱姆序列 B。

Output

一行一个数字,表示最少需要的操作次数。

Sample Input 1

10
SIAJOIWUGB
IBUSJGWAOI

Sample Output 1

7

Hint

1≤n≤10**6 , 数据保证至少存在一种方法将 AA 排成 BB

解题思路:

以B的最后一个字符倒序开始找连续的字符串在A中相同出现顺序的最长长度,一定要以B的最后一个字符开始。

#include <iostream>
using namespace std;
char a[1000005];
char b[1000005];
int n;
int main()
{cin >> n;for(int i=0;i<n;i++){cin >> a[i];}for(int i=0;i<n;i++){cin >> b[i];}int ar,br=n-1;int bl;int min0=n;int count=0;bl=br;ar=n;while(ar>=0){if (b[bl]==a[ar]){bl--; count++;}ar--;if (bl<0){break;}}    cout << n-count << endl;return 0;
}

G、Rev

循环卷积,给定卷积后的结果,求符合条件的对称序列

I、Tree

有多少种本质不同的树上递增路径

度数写到节点上,不妨看为由度数作为一个广义字符的后缀树

问题转化为求本质不同的子串

后缀自动机

J、大富翁

问题:

机会卡描述如下:你会来到一个给定的街道,街道上一共有无限个店家相连,因此可以把街道看作是一个一维的数列,街道的前n个店有一个数值a_ia**i,表示你可以选择走到后面的0-a_i0−a**i个店,比如你当前在1号店,店的数值为3,则你选择可以走到1,2,3,4号店,越到后面的店的奖励越好,所以你想知道这样最远能走到哪一家店。

Input

第一行一个整数nn,表示有n家店(1 \leq n \leq 100000)(1≤n≤100000)第二行n个整数,表示每个店的数值a_ia**i(0 \leq a_i \leq 100000)(0≤a**i≤100000)

Output

一个整数x,表示能走到的最远的店

Sample Input 1

5
1 1 1 1 1

Sample Output 1

6

解题思路:

虽然这题没做完,但是有一定的想法。

从后往前将每个位置的值和最后一个位置的位置进行差分后排序,就知道哪个是走出最后一个有值的位置最远的点,然后看能不能从起点到达这个max的位置,如果不行就换成次的,直到找到能抵达的点。至于怎么看能不能从起点到这个点,也是倒着推的思想,先将max前的点的值与max的位置进行差分,选择差分在正的范围中里max最远的点,再以这个新点开始重复刚才的操作直到能不能到起点。但是这个做法似乎不是很靠谱。

#include <iostream>
#include <algorithm>
using namespace std;struct tmp1
{int pos;int ai;
}aa[100002];struct tmp2
{int pos;//用来记倒叙的位置 int pos_n;//用来记录与最后一个店的差值int bi;
}bb[100002];int cmp(const tmp &, const tmp &);//定义排序规则
int cmp(const tmp &s1, const tmp &s2)
{//从大到小排序 return s1.bi > s2.bi;
} int n;int main()
{cin >> n;for (int i=0;i<n;i++){aa[0].pos=i;bb[0].pos=i;bb[0].pos_n=n-1-i;cin >> aa[0].ai;bb[0].bi=aa[0].ai-bb[0].pos_n;}//按照差值降序sort(bb,bb+n,cmp);
//  for (int i=0;i<n;i++){
//      cout << aa[i].bi << endl;
//  }int m=0;while(m<n){int max_pos=bb[m].pos;for (int i=0;i<n;i++){//没写完}m++;}return 0;
}

2021-2022年度第三届全国大学生算法设计与编程挑战赛(夏季赛)相关推荐

  1. 2021-2022年度第三届全国大学生算法设计与编程挑战赛(冬季赛)题解(7道题)

    只有:B,D,E,G,I,K,L 正文 B:题目链接  Error 题目: 思路:二分 二分给出一个d,先考虑第一个数,让第一个数 r 为max(a[1]-d,0) 而且a[i]太小就直接返回NO,也 ...

  2. 2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)- 占座位(最小割)

    题目大意:给出一个 n∗mn*mn∗m 的矩阵,每个格子都有两个权值 aaa 和 bbb,分别代表花费和收益.一个格子被占,当且仅当: 格子上有人 格子的上下左右都有人 格子被占可以获得收益 bbb, ...

  3. 2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)- 分组(矩阵快速幂套NTT优化dp)

    题目链接:点击查看 题目大意:给出 nnn 个连续的小球,每次可以选择单独的一个或者相邻的两个小球分成一组,允许有剩余的小球,问恰好分成 k∈{1,2,3,⋯,m}k\in\{1,2,3,\cdots ...

  4. 2021-2022年度第三届全国大学生算法设计与编程挑战赛(冬季赛)-正式赛 部分题解

    比赛链接 http://oj.saikr.com/contest/19 B.Error 思路 这道题其实我们贪心加上二分就能做了,首先我们贪心得把 b[1]b[1]b[1] 变得很小,然后构造 b[i ...

  5. 【算法】第三届全国大学生算法设计与编程挑战赛(冬季赛)

    7题金,6题银,5题铜 [参考:2021-2022年度第三届全国大学生算法设计与编程挑战赛(冬季赛)题解_int 我的博客-CSDN博客] [参考:2021-2022年度第三届全国大学生算法设计与编程 ...

  6. 2022-2023年度第四届全国大学生算法设计与编程挑战赛(秋季赛)【热身赛】h-4题 花灯

    一.问题描述 二.分析: 此题的问题描述部分的第一句话:"花灯有n个,排列成l行供大家欣赏."中,"排列成l行"应与本题求解无关.由题意可知:n个花灯被均分为块 ...

  7. 第三届全国大学生算法设计与编程挑战赛 (冬季赛)部分题解

    部分题解 树的果实 题目描述 题目思路及代码 Error 题目描述 题目思路及代码 吃利息 题目描述 题目思路及代码 MP4 题目描述 题目思路及代码 展览 题目描述 题目思路及代码 礼物 题目描述 ...

  8. C:勇敢羊羊不怕困难!2022-2023年度第四届全国大学生算法设计与编程挑战赛(秋季赛)之羊驼

    目录 题目分析 程序设计 总体流程 信息输入 递归函数 完整代码 代码分析 题目分析 问题描述如图: 利用函数迭代,找出能走到出口的每一条路,取路径最短的路线. 程序设计 总体流程 输入相应的地图信息 ...

  9. 第三届全国大学生算法设计与编程挑战赛---K题 真假英雄

    真假英雄 Description xxx是一个热衷推理的小朋友.他喜欢看各种本格推理小说,更喜欢自己去参与到推理的过程中,所以每一次去恐怖密室时,他都不在意密室的npc,背景音乐,就是模拟医院里面病床 ...

最新文章

  1. AcWing 2983. 玩具 / POJ 2318.toys(计算几何基础、二分、判断点和直线的位置关系)
  2. 越阳刚的男人越容易生女孩
  3. C++ - A Simple Calculator Program
  4. 杭州 |《PMCAFF产品经理第一课》阿里国际CRM、LinkedIn、丁香园、网易邮箱等一线大咖私房干货免费奉送!...
  5. ubuntu16 自启动mysql_Ubuntu16.04关闭apache/mysql/php的开机启动
  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第18篇]画一个/描述ECB,CBC,CTR模式的操作
  7. 优麒麟十年,聚生态之力压缩时间壁垒
  8. lisp成套电气设计_关于成套设计转电气设计问题?
  9. 2021新版成语接龙小程序搭建详细教程
  10. mysql 分组求和_MySQL 分组最值、分组均值、分组求和
  11. Magisk 最新版本 V24.1 源码编译踩坑集锦
  12. 联想l430主板图纸_L430开箱+拆机+换内存+换U+评测+拷机15小时,图多杀猫
  13. dms档案资料管理系统(源码)
  14. 免费APP内测分发托管平台,支持应用合并、内测分发、扫码下载,下载量安装量统计,版本记录和应用在线封装打包app
  15. 互联网思维(三)——产业思维
  16. .Net Core 分布式微服务框架介绍 - Jimu
  17. 汽车汽配行业供应链协同管理平台一体化管理,SCM供应链提升企业竞争力
  18. 2018.9.18中科38所面试
  19. 从传统企业到字节、美团、京东,再到拿下华为Offer,程序员的逆袭之路。
  20. 如何利用线圈的B-H磁滞回线量化磁环的性能及其对网络变压器的影响关系?

热门文章

  1. python取得两个文件的交集、并集和差集。
  2. AI时代下如何治愈艾滋病?
  3. CCNP-IGP综合:多域多协议修改AD和Rou-map标签的区别
  4. 计算你来到世界多少天
  5. 超有用的电脑配置知识!!以后买电脑就不会被忽悠啦!终身受用!
  6. 黑马头条推荐项目知识点总结(一)
  7. android 短信 app下载,云短信app下载安装-云短信 安卓版v2.0.0-PC6安卓网
  8. 微信蓝牙设备连接不上原因总结(5)
  9. matlab利用magnify作图
  10. 德国:一个中国人在德国生活的真实感受