ACM-题目合集
文章平均质量分 65
ACM-题目合集
豆沙睡不醒
永远不要停下脚步
展开
-
【训练题解】UPC Card Eater (思维)
Problem DescriptionSnuke has decided to play a game using cards. He has a deck consisting of N cards. On the i-th card from the top, an integer Ai is written.He will perform the operation described ...原创 2020-01-31 22:28:02 · 204 阅读 · 0 评论 -
2021辽宁省大学生程序设计竞赛(正式赛)G.字节类型(大数)
2021辽宁省大学生程序设计竞赛(正式赛)G.字节类型(大数)原创 2021-10-25 19:49:23 · 400 阅读 · 0 评论 -
2021 RoboCom 世界机器人开发者大赛-本科组(复赛)
2021 RoboCom 世界机器人开发者大赛-本科组(复赛)原创 2021-12-02 21:21:12 · 583 阅读 · 0 评论 -
2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)G.希望(组合数学 bfs)
题意:思路考虑mmm很小,分类讨论就行。如果环是mmm的话,那么中间两条边,也就是说在A,BA,BA,B树的环的长度为m−2m-2m−2以m==5m==5m==5为例,在A,BA,BA,B树的环长度为333,可以是A2+B1A2+B1A2+B1和A1+B2A1+B2A1+B2。也就是说从AAA树里选择长度为222的路径,从BBB树里选择长度为111的路径。所以记gaiga_igai表示AAA树里长度为iii的路径种数,gbigb_igbi表示BBB树里长度为iii的路径长度。这两个数组可以原创 2021-10-24 15:54:28 · 965 阅读 · 0 评论 -
The 15th Chinese Northeast Collegiate Programming Contest C. Vertex Deletion(树形dp)
linkkkk题意:给出一棵树,每次可以删去任意点,要求删完后不能有孤立的点,求方案数。思路:大概很容易看出来是个树形dp,状态不太好想。dp[u][0]dp[u][0]dp[u][0]表示删去这个点dp[u][1]dp[u][1]dp[u][1]表示不删这个点,而且删去所有子节点dp[u][2]dp[u][2]dp[u][2]表示不删这个点,而且至少留一个子节点对于第一种情况,此时的u一定满足条件;对于第二种情况,要求u的父亲节点也不被删去才可以满足条件;对于第三种情况,此时的u已经满原创 2021-09-05 16:49:19 · 324 阅读 · 0 评论 -
German Collegiate Programming Contest 2019 B . Bouldering (最短路)
题意:给出一个n∗mn*mn∗m的矩阵,对于矩阵里的点,如果为...则表示为障碍物,为数字表示经过这个点花费的力气。每次只能到达和当前点的欧几里得距离不超过rrr的点。并且在移动过程中力气不可以小于000。问在花费的力气小于sss的情况下,从第一个非障碍物走到最后一个非障碍物的最小距离。思路:实际上花费的力气最多为25∗25∗925*25*925∗25∗9,所以对于最短路多开一维,dis[x][y][w]dis[x][y][w]dis[x][y][w]表示走到(x,y)(x,y)(x,y)节点,...原创 2021-09-13 15:08:26 · 116 阅读 · 0 评论 -
AtCoder Beginner Contest 221 D - Online games(差分 离散化 区间)
linkkkk题意:给出mmm个操作[l,r][l,r][l,r],每次将[l,l+r−1][l,l+r-1][l,l+r−1]区间加一问最后有多少个位置为k,1<=k<=nk,1<=k<=nk,1<=k<=nl,r<=2e9,m<=2e5l,r<=2e9,m<=2e5l,r<=2e9,m<=2e5思路1:一眼差分题,但是有个细节没想好。将区间提取出来,存一个结构体,pospospos表示坐标,opopop表示是左端点还是原创 2021-10-03 08:59:46 · 325 阅读 · 2 评论 -
ICPC North Central NA Contest 2018 C . Rational Ratio(结论 模拟 gcd)
linkkkk题意:给出一个无限小数和循环节,将其化成最简分式。思路:先有个结论是0.456=456/999按照这种模拟就好了。如果说,循环节不是全部的小数位的话,先将多余的数变到小数点前,处理后再变回去。比如0.147575750.147575750.14757575,可以先变成14.75757514.75757514.757575,最后再除以100100100代码:#include<bits/stdc++.h>using namespace std;typedef原创 2021-10-11 17:02:51 · 106 阅读 · 0 评论 -
2019CCPC厦门站 H. Zayin and Obstacles(三维前缀和 bfs)
题意:在n∗n∗nn*n*nn∗n∗n的立方体中,有mmm个范围有障碍物,即每个范围里对于满足x1<=x<=x2,y1<=y<=y2,z1<=z<=z2x1<=x<=x2,y1<=y<=y2,z1<=z<=z2x1<=x<=x2,y1<=y<=y2,z1<=z<=z2的坐标为障碍物。问从起点到终点的最短距离思路:由于坐标系为三维的空间,可以将障碍物标记为111,借助三维前缀和计算出每个点能否可原创 2021-10-26 19:11:52 · 181 阅读 · 0 评论 -
2019CCPC秦皇岛HDU - 6736 F - Forest Program(dfs找环 组合数学)
linkkk题意:给出仙人掌图,问有多少种删边的方案使得该图变为一个森林。思路:跟上题类似。从每个环出发考虑方案数,长度为ttt的环的方案数为2t−12^t-12t−1,都不删的情况要减去,对于剩下的非环边,有删和不删两种选择,再乘上2x,x=2^{x},x=2x,x=非环边的数量。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;原创 2021-11-26 17:18:47 · 282 阅读 · 0 评论 -
upc 2021秋组队训练赛第三场 2020 Rocky Mountain Regional Contest
水题收割机(不是A.Stopwatch题意:有一个计时器,初始状态为暂停。只有一个按钮,按下可以开始或暂停计时。给出长度为nnn的序列aia_iai表示在时刻为aia_iai的时候按下计时器。问执行完nnn个操作后计时器显示的情况。思路:如果nnn为奇数,说明此时正在计时。否则,计时器的时间为偶数项减去奇数项的和。代码:ll a[1100]; int main(){ int n=read; for(int i=1;i<=n;i++) a[i]=read;原创 2021-09-01 19:06:08 · 296 阅读 · 0 评论 -
upc2021秋组队训练赛第一场 ICPC North Central NA Contest 2020
牛客链接D: Substring Characters对于一个字符串sss,求所有不同的最短连续子串的数量,要求不能是sss本身并且子串的不同字符的数量与sss的不同字符的数量相同。题意比较绕,最短的含义指的是删除某个子串ttt的前缀或后缀后,就无法保证不同字符的数量与sss相同了。比如104111041110411,可以删除后缀111111,变成104104104。双指针,队友写的#include <bits/stdc++.h>using namespace std;char s原创 2021-08-30 20:01:12 · 389 阅读 · 4 评论 -
2018ICPC青岛站 D . Magic Multiplication(构造 模拟)
linkkk题意:思路:代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<ll,ll>PLL;typedef pair<int,int>PII;typedef pair<double,double>PDD;#define I_int llinline ll read(){l原创 2021-11-02 19:11:02 · 358 阅读 · 0 评论 -
CTU Open Contest 2019 部分题解
Screamers in the Storm题意:狼向右走,在到最右部后会跳至最左面,然后接着向右走,周遭往复。羊向下走,到头后和狼同理。场地规则: 地上本是秃地,记作“ . ”三回合后会长草,草地记作“#”,羊会吃草,吃掉三回合后草会重新长,狼会吃羊,羊死后会标记为“ * ”如果羊 5 回合没吃草会被饿死,狼则为 10 回合,死后都会被记作“ *”标记为“ * ”的砖块不会再长草。输出T回合后的场地。思路:感觉题目里有很多细节没有解释清楚:每一轮的顺序是先进行狼和羊的行走原创 2021-09-07 20:35:46 · 270 阅读 · 0 评论 -
2021牛客国庆集训派对day1E Removal(dp 去重)
linkkk题意:给出长度为nnn的子序列,严格删除mmm个数后,有多少种子序列。思路:很容易想到,用dp[i][j]dp[i][j]dp[i][j]表示从前iii个数里删除jjj个的方案数,枚举第iii个是否删除,可以得到dp[i][j]=max(dp[i−1][j],dp[i−1][j−1])dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])dp[i][j]=max(dp[i−1][j],dp[i−1][j−1])但是这样会有重复,比如[1,2,1,2][1,2,1,2原创 2021-10-02 10:39:20 · 169 阅读 · 0 评论 -
2019CCPC厦门站 A. Zayin and Bus(bfs 贪心 排序)
题意:有nnn个座位和n−1n-1n−1个通道,有nnn个人,每个人到达座位后需要花费aia_iai的时间才能坐下,坐人后的座位不能再被经过。111为入口,第iii秒的时候第iii个人进入,经过一个通道花费1s1s1s,安排一种座位方案,使得所有人坐下花费的时间最短。思路:贪心的考虑,假设第xxx个人坐在座位yyy,depydep_ydepy表示从111到yyy花费的时间,那么第xxx个人花费的时间为x+ax+depyx+a_x+dep_yx+ax+depy贪心的考虑,肯定是想让x+axx+原创 2021-10-26 19:06:26 · 192 阅读 · 0 评论 -
2019ICPC上海K-Color Graph(二分图 状压枚举)
linkkk题意:给出nnn点mmm边的简单无向图,每条边最开始是白色的。每一轮都可以将一条白边染成红色,要求最后不能有红色的奇环,求最多能够染的边数。思路:核心在于二分图的性质:二分图不存在长度为奇数的环,因为每一条边都是从一个集合走到另一个集合,必须要走奇数次。这样的话问题就转化成了求最多可以选择多少条边使得选择出来的边为二分图。可以看到nnn只有161616,可以状压枚举所有情况,对于具体的每一种情况,如果该位为111的话,假设在左边集合里,否则在右边集合里。然后再枚举给出的mmm条边,原创 2021-11-11 20:37:29 · 322 阅读 · 0 评论 -
2019年第10届山东省赛 L . Median (floyd 拓扑排序)
linkk题意:序列长度为nnn,但是具体的数值不知道。给出了mmm对关系(x,y)(x,y)(x,y),表示序列中ax>aya_x>a_yax>ay。问每个数能否作为中位数。nmod 2==1&&n<=100n\mod2==1\&\&n<=100nmod2==1&&n<=100思路1:建图,对于关系(x,y)(x,y)(x,y)建立y−>xy->xy−>x的有向边。先考虑不合法的情况,如原创 2021-10-23 09:47:34 · 302 阅读 · 5 评论 -
gym102394 2019CCPC哈尔滨 A. Artful Paintings(二分 差分约束 优化)
linkkk题意:有nnn个方块,m1m1m1个限制条件111,m2m2m2个限制条件222,限制条件的描述如下:1:l,r,k1:l,r,k1:l,r,k表示区间[l,r][l,r][l,r]染色的方块数至少kkk个2:l,r,k2:l,r,k2:l,r,k表示除区间[l,r][l,r][l,r]染色的方块数至少kkk个思路:如果只有条件111的话就是ABC216ABC216ABC216的GGG了(传送门)当时有贪心跟差分约束两种解法,但是加了条件222的话,就只能差分约束了。先把条件都列原创 2021-10-21 12:12:15 · 235 阅读 · 0 评论 -
2019CCPC厦门站D. Zayin and Forest(树状数组 手写哈希表)
题意:定义B(x)B(x)B(x)表示xxx的二进制形式中111的个数,F(x)=min(y∣y>x&B(y)<=B(x))F(x)=min(y|y>x\&B(y)<=B(x))F(x)=min(y∣y>x&B(y)<=B(x))给出nnn,对于x<=nx<=nx<=n,如果F(x)<=nF(x)<=nF(x)<=n,那么xxx的父节点是F(x)F(x)F(x);否则,则xxx为根。两种操作,每次给出op,原创 2021-10-26 19:40:12 · 198 阅读 · 0 评论 -
The 15th Chinese Northeast Collegiate Programming Contest
linkkkkkk1001 Matrix题意:用[1,n2][1,n^2][1,n2]的数填n∗nn*nn∗n的矩阵,每个数字只能用一次,记aia_iai表示第iii行的最大值S=a1,a2,...,an∩1,2,...,n.S={a1,a2,...,an}∩{1,2,...,n}.S=a1,a2,...,an∩1,2,...,n..求∑∣S∣\sum|S|∑∣S∣思路:考虑每一个数的贡献,比如111可以作为贡献的方案数就是n∗Cn2−1n−1n*C_{n^2-1}^{n-1}n∗Cn2−1原创 2021-09-05 17:14:46 · 697 阅读 · 1 评论 -
2021牛客国庆集训派对day1 J.Different Integers(莫队)
linkkkk题意:给出一个长度为nnn的序列,每次询问[1,l][1,l][1,l]和[r,n][r,n][r,n]里不同数的个数。思路:先求出[1,n][1,n][1,n]不同数的个数,每次减去[l+1,r−1][l+1,r-1][l+1,r−1]的贡献就好了,莫队维护。代码:// Problem: Different Integers// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/20322/J// Me原创 2021-10-02 10:28:33 · 149 阅读 · 0 评论 -
UCF 2021 Practice F.Balanced Strings (思维 组合数学)
题意:给出一个字符串,???表示待填字母。问有多少种方式使得长度为偶数的子串都满足元音字母和辅音字母个数相同。元音字母为a,e,i,o,u,ya,e,i,o,u,ya,e,i,o,u,y字符串长度<=100<=100<=100思路:显然只需要按照元音-辅音-元音-辅音这样依次构造就好。先排除几种不合法的情况,对于剩下的情况尝试着计算的同时,也要判断构造出的字符串是否合法。代码:张巨的简短代码:#include <bits/stdc++.h>using nam原创 2021-09-14 21:27:18 · 147 阅读 · 1 评论 -
2020ICPC济南站 A . Matrix Equation (高斯消元)
linkkk题意:思路:原创 2021-09-18 10:15:11 · 249 阅读 · 0 评论 -
2019EC Final E-Flow(贪心 dfs)
linkkk题意:给出一张特殊的图,每次可以让一条边的容量+1+1+1,另一条边的容量−1-1−1,使得最大流最大,求最小操作次数。特殊在于:起点到终点的路径不相交且长度相同且路径上的点无重复思路:由于所有路径的长度都相同,所以最大流等于所有边的容量之和路径长度\frac{所有边的容量之和}{路径长度}路径长度所有边的容量之和。这里的最大流指的是每一层的流量,也就是所有路径第kkk条边的流量之和。对于路径的边来说,每条边都应该大于等于最大流,所以对于小于最大流的边来说,差值的累计就是代价原创 2021-11-16 17:59:35 · 147 阅读 · 0 评论 -
ICPC Greater New York Region 2020 (模拟)
测评地址题意:给icpcicpcicpc比赛的队伍排名。题数高的在前,相同题数用时少的在前,相同题数用时相同的比较acacac最后一题的时间、倒数第二题的时间……如果比较完后还是相同,两者排名相同。输出前nknknk名的信息。思路:存一个结构体里模拟即可,注意不足nknknk的情况代码:#pragma GCC optimize(1)#pragma GCC optimize(2)#pragma GCC optimize(3,"Ofast","inline")#include<iost原创 2021-08-27 09:47:21 · 175 阅读 · 0 评论 -
upc 2021秋组队训练赛第二场
问题 A: Three-Axis Views给出一个立方体的三个视图,问这样的立方体是否存在。最初的思路是通过图1,21,21,2的zzz坐标确定出(x,y)(x,y)(x,y),看这样的(x,y)(x,y)(x,y)在图333里是否也存在。但是应该对xxx坐标确定的(y,z)(y,z)(y,z)和yyy坐标确定的(x,z)(x,z)(x,z)也做相同的检查。int n;int mp[4][110][110];char s[110];int b[4][110][110];int las[1原创 2021-08-31 20:20:53 · 172 阅读 · 0 评论 -
2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)
思路:代码:原创 2021-10-23 20:23:17 · 391 阅读 · 0 评论 -
German Collegiate Programming Contest 2019 H . Historical Maths (二分 大数)
题意:给出三个数a,b,ca,b,ca,b,c的每位的数,问在几进制下a∗b==ca*b==ca∗b==c思路:可以看出是有单调性的,如果进制数较小的话,那么对于相同的乘积来说进位数也多,长度更长。所以如果对于某个进制a∗b<ca*b<ca∗b<c的话,说明应该增加进位,减少进制数。由于di<=230d_i<=2^{30}di<=230,所以会爆long long,用高精度模拟又很容易tletletle,所以应该用__int128\_\_int128__int.原创 2021-09-13 15:14:17 · 102 阅读 · 0 评论 -
Nordic Collegiate Programming Contest 2020 D.Damsindistress (dp)
linkkkkk题意:给定每个大坝先有水量以及总容量,超过总容量时就会流向下一级(靠近根)的大坝。问最少需要多少新的水可以使整个大坝体系的根崩溃?只能往一个里面加水。代码:啊开始的dpdpdp状态想错了,但还是记录一下,假设dp[i]dp[i]dp[i]表示从iii加水使得水量能够淹没000的水量,转移就要么从自身加水,要么从子节点转移。但是这样又要维护路径上的水量和。换一个思路,dp[i]dp[i]dp[i]表示要淹没第iii个大坝所需的水量,对于转移:首先,他自己的代价是ci−uic_i-u原创 2021-09-11 19:54:59 · 120 阅读 · 0 评论 -
ICPC North Central NA Contest 2018 G . Tima goes to Xentopia(最短路 空间优化 剪枝)
linkkkk题意:nnn点mmm边的图,每条边有边权和颜色,颜色有红蓝白三种,问从sss到ttt恰好走k1k1k1条红边和k2k2k2条蓝边的最短距离。思路:dp[i][j][k]dp[i][j][k]dp[i][j][k]表示从sss出发到达点iii并且经过了jjj条红边,kkk条蓝边的最短距离。转移就是普通的dijkstra转移,但是这样内存超限。题目中有一个条件是k1∗k2<=800k1*k2<=800k1∗k2<=800,如果我们始终把kkk值大的看做是红边,小的看做原创 2021-10-11 20:39:44 · 101 阅读 · 0 评论 -
PTA团体程序设计天梯赛-练习集 L3-009 长城 (计算几何)
#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<ll,ll>PLL;typedef pair<int,int>PII;#define I_int ll#define modl 19260817*19890604-19491001inline ll read(){ ll x=0,f=原创 2021-04-14 21:35:42 · 289 阅读 · 0 评论 -
PAT (Advanced Level) Practice 1044 Shopping in Mars (前缀和 二分)
PAT (Advanced Level) Practice 1044 Shopping in Mars (前缀和 二分)原创 2021-10-09 18:54:49 · 312 阅读 · 0 评论 -
PTA团体程序设计天梯赛-练习集 L3-010 是否完全二叉搜索树(顺序存储)
PTA团体程序设计天梯赛-练习集 L3-010 是否完全二叉搜索树原题链接思路:用奇技淫巧水过去了不想写链表存二叉树所以写了顺序存储。1.如果当前节点储存在a[i]a[i]a[i],那么他的左儿子储存在a[i∗2]a[i*2]a[i∗2],右儿子储存在a[i∗2+1]a[i*2+1]a[i∗2+1]。反推过去也是成立的,当前节点存储在a[i]a[i]a[i],他的父亲节点为a[i/2]a[i/2]a[i/2]。2.如何判断是完全二叉树:顺序存储里,如果该树和满二叉树的节点编号一一对应,该树就原创 2021-04-14 21:22:51 · 131 阅读 · 0 评论 -
PTA天梯训练赛一&二
训练赛一7-5 连续因子 (20 分)思路:暴力枚举起点,每次从起点往后延伸,并且更新长度和起点,最后输出即可。代码:int main(){ ll n;scanf("%lld",&n); ll res=0,pos=-1; for(ll i=2;i*i<=n+1;i++){ ll tmp=0; ll tmpn=n,t=i; for(;tmpn%t==0;t++,tmp++) tmpn/=t;原创 2021-04-04 10:29:43 · 320 阅读 · 0 评论 -
CF711D-Directed Roads(组合数学 dfs找环)
合法的方案数=总方案数-不合法方案数原创 2021-11-26 15:57:58 · 235 阅读 · 0 评论 -
CF1605D. Treelabeling(二分图 博弈)
linkkk// Problem: D. Treelabeling// Contest: Codeforces Round #754 (Div. 2)// URL: https://codeforces.com/contest/1605/problem/D// Memory Limit: 256 MB// Time Limit: 2000 ms// // Powered by CP Editor (https://cpeditor.org)#include<bits/stdc++.h原创 2021-11-16 16:11:07 · 936 阅读 · 0 评论 -
Codeforces Round #755 D. Guess the Permutation(交互 二分)
linkk题意:交互题,ttt组样例。给出序列的长度nnn,将序列选择了三个位置i,j,ki,j,ki,j,k,翻转序列中的[i,j−1],[j,k][i,j-1],[j,k][i,j−1],[j,k]。每次可以询问一段区间里逆序对的个数,在最多404040次询问里求出i,j,ki,j,ki,j,k.思路:区间左端点固定时,移动右端点得到的逆序对个数是非递减的。而且在区间[1,i][1,i][1,i]的逆序对个数为000,后续区间一定不为000,这样就可以二分查找出iii的位置posipos_ipo原创 2021-11-15 18:19:22 · 684 阅读 · 2 评论 -
CF1343E. Weights Distributing(最短路 枚举 思维)
linkk题意:给出nnn点mmm边的图和长度为mmm的权值序列,要求分配mmm条边的权值使得a−>b−>ca->b->ca−>b−>c的最短路权值之和最短。思路:求出每个点分别到a,b,ca,b,ca,b,c的最少边数,即分别以a,b,ca,b,ca,b,c为起点跑最短路。由于权值为111,最短路的本质就是边数。由于是求权值最小化,先将权值从小到大排序并且求前缀和,记作数组valvalval。如果a−>ba->ba−>b和b−>cb-原创 2021-11-11 20:00:21 · 148 阅读 · 0 评论 -
CF1225D Power Products(分解质因子 哈希)
linkkk题意:给出长度为nnn的序列和kkk,问有多少个数对(i,j)(i,j)(i,j)满足ai∗aj=xka^i*a^j=x^kai∗aj=xk思路:首先,对所有的数分解质因子。当aia_iai和aja_jaj的质因子对应的指数之和mod k==0\mod k==0modk==0的时候,是一对合法的数对。问题就转化成了如何快速判断。大概有两种方法,一是选择用map,vectormap,vectormap,vector嵌套判断,二是用哈希。暂且不怎么会第一种所以写了哈希,对每个数分原创 2021-11-10 17:25:09 · 525 阅读 · 0 评论