acm训练
训练题解
addmission
这个作者很懒,什么都没留下…
展开
-
Crosses and Crosses POJ - 3537 (博弈论)
Crosses and Crosses POJ - 3537 (博弈论)题意给出1∗n1*n1∗n的棋盘,a,b轮流画×,完成三连×的获胜。思路当一个点被画下了×,那么作为当前棋手在它的左右各两格内下棋必然是输的,所以,一旦一点被下了后,游戏便被分解为两个游戏。设当前点为x,则两个分解游戏分别为1→(x−3)1\rightarrow(x-3)1→(x−3)和(x+3)→n(x+3)\rightarrow n(x+3)→n,即为n1=(x−3)−1+1=x−3n_1=(x-3)-1+1=x-3n1=原创 2021-02-18 15:54:51 · 119 阅读 · 0 评论 -
Divisors CodeForces - 1033D (数论)
Divisors CodeForces - 1033D(数论)题意给出n个数,每个数有3到5个因数,问n个数的积有多少因数思路分情况讨论:3个因数:完全平方数4个因数:两个质因数或完全立方数5个因数:完全四次方数对于每个数先讨论是否是完全2|3|4次方数,若是,则为这些因子加上2|3|4。 若不是则在特殊讨论,若它的因数不包含已经得出的因数,且和其他需讨论的数最大公因数为1,说明它有独特的两个因数,直接给答案乘上即可。注意开根号的时候精度问题,一开始没考虑,后来看别人的题解发现问题,原创 2021-02-17 22:47:32 · 160 阅读 · 0 评论 -
Area of Polygons POJ - 2043 扫描线
Area of Polygons POJ - 2043 扫描线题意方格纸上的简单多边形所占的方格数。思路对于简单多边形的各边,用一条平行于y轴的宽度为1的扫描线,自左向右扫一遍,每两条边被扫描线扫到的4个交点之间的距离就是方格的数量,若有重合的小方格注意减去。AC代码#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<cmath>#include<algorithm>#include<原创 2021-02-17 20:34:56 · 88 阅读 · 0 评论 -
0-1 MST CodeForces - 1242B(并查集)
0-1 MST CodeForces - 1242B(并查集)题意给出由边权仅为0,1的边连成的完全图中的1-边,求最小生成树。思路显然,给出的完全图,在n的范围上跑一遍最小生成树肯定会TLE,那么就得想别的办法来解决这个问题。由于边权只有0,1,所以目标变为了求只由0-边构成的图中连通块的数量。所以通过并查集,每次和已有的连通块比较,如果当前点与已有连通块间的1-边的边数小于已有连通块的点数,那么必有一条0-边将题目相连,于是可以把该点并入连通块,否则新开连通块。AC代码#define _CR原创 2021-02-04 17:32:24 · 217 阅读 · 0 评论 -
Complete Tripartite CodeForces - 1228D
Complete Tripartite CodeForces - 1228D题意给出一个无向简单图,可能不连通,没有自环,没有重边。问能否将所有点划分成三个集合,每个集合中的所有点没有边直接连接,而且与其他两个集合中的所有点都有边直接连接(完全三分图)。思路先假设这个图是符合要求的,那么随意寻找一个开始染色,为起始点染色为1,所有与它直接相连的点染色为2,再任取一与起始点直接相连的点开始染色,所有与它相连的点,如果已经被染色为2,则将其染成3,(因为它既与1相连又与2相连),如果未被染色,则染色为1原创 2021-02-01 16:00:13 · 104 阅读 · 0 评论 -
Alex and Julian CodeForces - 1220D
Alex and Julian CodeForces - 1220D题意给出一个集合B,现根据规则在全整数域(一直以为是集合B看了半天)建图,所有整数作为端点,若整数i,ji,ji,j满足∣i−j∣∈SetB|i-j|\in SetB∣i−j∣∈SetB,则可以在它们之间连一条无向边,求从BBB中删去那几个点可以使得构成的图为一个二分图。思路1.判定二分图:不存在奇环2.加法的奇偶性:奇数+奇数=偶数奇数+偶数=奇数偶数+偶数=偶数奇数+奇数=偶数\\奇数+偶数=奇数\\偶数+偶数=偶数\原创 2021-02-01 11:51:46 · 154 阅读 · 0 评论 -
AB-string CodeForces - 1238D
AB-string CodeForces - 1238D题意如果一个字符串的每个字母,属于至少一个(长度大于1)的回文串,则称这个字符串为good。给出仅由AB组成的字符串,求出good子串数量。思路由于字符串只能由AB两种字符构成,如若其不为good串,其结构应为AAA...ABBBB...BAAB...BBBBA...AAAAAA...AB \\BBB...BA\\AB...BBB\\BA...AAA\\AAA...ABBBB...BAAB...BBBBA...AAA所以可以通过原创 2021-02-01 10:45:14 · 107 阅读 · 0 评论 -
A STRIP OF LAND POJ - 1156 (单调队列)
A STRIP OF LAND POJ - 1156 (单调队列)题意给出一个n*m的矩形,求一个宽度小于k,且高低差小于c的子矩形来修飞机场,求飞机场的最大面积。思路自左而右,自上而下地进行一个枚举,使用maxq和minq两个单调队列来维护当前的最大值和最大值,以此判断是否符合题意要求。AC代码#include<iostream>#include <cstdio>#include <cstring>#include <string>#in原创 2021-01-27 23:17:50 · 335 阅读 · 0 评论 -
Regular Number HDU-5972
Regular Number HDU-5972Regular Number HDU-5972Regular Number HDU-5972题意:给出一个由‘|’构成的正则表达式描述的模式串,求出给出文本串中所包含的所有模式子串。思路:依靠bitset+shif-and匹配算法解决。(shift-and和shift-or算法)注意:本题把string卡住了,只能用char来进行输入输出。AC代码如下:#define _CRT_SECURE_NO_WARNINGS#include<io原创 2021-01-25 11:25:33 · 91 阅读 · 0 评论 -
FLAG codeforces 1181C (搜索)
codeforces 1181C (搜索)codeforces 1181C (搜索)codeforces 1181C (搜索)题意:n*m的图,其中子矩阵由3个等高矩阵自上而下构成(相邻矩阵位置颜色不同),则可以看做一个旗帜,问图中有几个旗帜。思路:从左上角开始,自上而下遍历,寻找可以实现3块型的宽为1的旗帜,如若可以找到,再向右扩展,若能扩展成功,每扩展一列即可与之前的各列组成新的旗帜,因此自某点*(i,j)*可以扩展的旗帜数量可以如下计算:SUM=1+2+3+4+…+N(N为扩展后的旗帜宽度)原创 2021-01-24 21:37:54 · 187 阅读 · 0 评论