ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021.7.10 校内模拟赛游记

2021-07-11 13:01:37  阅读:178  来源: 互联网

标签:10 校内 2021.7 map int sum -- 检查单 代码


严重事故征候 over and over again

这次 事故征候 模拟赛,暴露出我 安全意识淡薄,形式主义突出 省略标准程序的老问题。
T2 挂成 \(0\) 分了。

A

给定序列 \(a\), 问能否通过 \(a_i \to a_{i-1} + a_{i+1} - a_i\) 的操作变成 \(b\)。

看到 A 题吓死了,开始想了 30min+ 没有思路,先跳过了。

然后写完 T2, 看过 3、4 后又来想,恍然大悟了。
首先如果把三个数都减去 \(x\), 那么最后结果减少了俩加上了一个,所以结果也被减去了 \(x\),并不会对数的相对大小造成什么影响,那么就简化问题,吧 \(x, y, z\) 三个数变成 \(0, y-x, z-x\), 当作 \(0, x, y\) 来处理,进行一次操作后,发现数列变成了 \(0, y-x, y\), 惊喜地发现,差交换了位置!

众所周知,排列两两交换能达到任何排列,而换不出其它数来,所以只要比较差的多重集是否相同就可以了。

B

这就是出事的题。

构造排列满足输入的相邻两数的大小关系,同时让 LIS 尽可能 大/小

很快就想到了一个可行的构造,虽然有点复杂,但至少是对的,写完调了一会儿就放着了。

所谓的检查单完全只是扫了两眼代码,测试部分也只检查了是否是一个排列,而没有检查相对大小的关系,然后就成功挂分了。

可笑的是,代码的末尾还写着

// 0137Z - CCP
// 0142Z - CKC

其实连检查单都没有默出来就打上了 CKC 的标记。

今后必须要严格执行检查单,并且强制要求在代码末尾默写检查单且两个标记不得使用缩写,强制要求写完全称。

C

有箱子的网格图里从左上到右下,可以推箱子但不能推出去,求路径数。

想到了 dp 要一块转移,可是恍然发现这样会有重复。
然后就以为这是个错误的思路,直接弃掉,想了会儿容斥未果就写了个暴力交了。

有重复就想办法解决啊!!!
其实只要强制规定当前格转向,然后一块的转移用前缀和优化就可以了。

代码里保留了原来的代码。

void TYT() {
	for (int i = 1; i <= n; i++) std::cin >> (map[i] + 1);
	for (int i = n; i >= 1; i--)
		for (int j = m; j >= 1; j--)
			r[i][j] = r[i][j+1] + (map[i][j] == 'R'),
			d[i][j] = d[i+1][j] + (map[i][j] == 'R');
	f[n][m][0] = f[n][m][1] = sum[n][m][0] = sum[n][m][1] = 1;
	for (int i = n; i >= 1; i--)
		for (int j = m; j >= 1; j--) {
			if (i == n && j == m) continue;
			f[i][j][0] = (sum[i][j+1][1] - sum[i][m-r[i][j+1]+1][1] + P) % P;
			f[i][j][1] = (sum[i+1][j][0] - sum[n-d[i+1][j]+1][j][0] + P) % P;
			sum[i][j][0] = (sum[i+1][j][0] + f[i][j][0]) % P;
			sum[i][j][1] = (sum[i][j+1][1] + f[i][j][1]) % P;
		}
	std::cout << (f[1][1][1] + f[1][1][0]) % P;
}

D

我居然没有想到那么显然的链上部分分的倍增?!

想了半天未果,连暴力都没有想出来。成功 \(0\) 分。

题解在这里写了,不重复发了。

标签:10,校内,2021.7,map,int,sum,--,检查单,代码
来源: https://www.cnblogs.com/Acfboy/p/20210710_.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有