ACM 习题集
文章平均质量分 65
习题集
幼儿算数
这个作者很懒,什么都没留下…
展开
-
GPLT L1-连续因子
N的范围为 2312^{31}231 ,连续的因子不能超过12位,从len=12开始向下遍历,枚举因子之积,且每个因子不能超过sqrt(N)。注意考虑只有一个连续因子但是不是素数的情况所以初始ans应该置0#include <bits/stdc++.h>using namespace std;#define LL long long#define debug(a) cout << #a << " " << a << endl#.原创 2022-04-18 15:55:17 · 188 阅读 · 0 评论 -
Ryuji doesn‘t want to study 计蒜客 41186 线段树
Ryuji doesn’t want to study - 计蒜客 41186 - Virtual Judge (vjudge.net)题意给定一个数组 a[N]a[N]a[N],有两种操作给定 l,rl, rl,r, 查询 a[l]×L+a[l+1]×(L−1)+⋯+a[r−1]×2+a[r]a[l] \times L+a[l+1] \times(L-1)+\cdots+a[r-1] \times 2+a[r]a[l]×L+a[l+1]×(L−1)+⋯+a[r−1]×2+a[r] 的值给定 x,原创 2021-07-16 16:54:53 · 142 阅读 · 0 评论 -
AcWing 12. 背包问题求具体方案
12. 背包问题求具体方案 - AcWing题库0/1 背包求具体方案分析求具体方案实际上是判断每个物品是否被选倒推出 f[n][m]f[n][m]f[n][m] 是怎么求得的,和哪个状态相等,就代表了从哪个状态转移过来的实际上,动态规划求方案对应了最短路问题求路径字典序最小的处理:对于第一个物品,可能产生的三种情况,从前往后推只能选 →\to→ 必选只能不选 →\to→ 必定不选可选可不选 →\to→ 一定选择第一个物品(这样保证了字典序最小)在倒推状态转移路径的时候,只能原创 2021-07-10 16:56:01 · 124 阅读 · 0 评论 -
AcWing 1023. 买书 完全背包,求方案数
1023. 买书 - AcWing题库完全背包,求方案数分析集合:从前 iii 个物品中选,使得总体积恰好为 jjj 的所有方案的集合属性:方案数状态表示:设 f[i,j]f[i,j]f[i,j] 为从前 iii 个物品中选,使得总体积恰好为 jjj 的所有选法状态计算左边表示不选第 iii 的方案数,右边表示选第 iii 个物品,且选 s[i]s[i]s[i] 个的方案数,s[i]s[i]s[i] 表示选这个物品能选的上限(不超过背包容量){f[i,j]=f[i−1,j]+∑原创 2021-07-10 16:01:08 · 169 阅读 · 0 评论 -
AcWing 278. 数字组合 0/1 背包,求方案数
278. 数字组合 - AcWing题库0/1 背包,求方案数分析将和为 MMM 看成是背包的体积,每个正整数看成一个物品,每个正整数的数值看成每个物品的的价值集合:从前 iii 个物品中选,使得总体积恰好为 jjj 的所有选法属性:方案数状态表示:设 f[i,j]f[i,j]f[i,j] 为从前 iii 个物品中选,使得总体积恰好为 jjj 的所有选法状态计算:f[0,0]=1,f[others]=0,f[i,j]=f[i−1,j]+f[i,j−v[i]]f[0,0]=1,f[othe原创 2021-07-10 11:34:50 · 133 阅读 · 0 评论 -
AcWing 1020. 潜水员 二维费用的背包问题 求最小
1020. 潜水员 - AcWing题库二维费用的背包问题,求最小分析条件:需求氧气 MMM ,需求氮气 NNN ,氧气瓶的个数 KKK,需求特定数量的氧和氮集合:所有从前 iii 个物品中选,总氧气 =j= j=j ,总氮气 =k= k=k 的所有选法的集合属性:Min(w)Min(w)Min(w)状态表示:设 f[i,j,k]f[i,j,k]f[i,j,k] 为从前 iii 个物品中选,总氧气 =j=j=j ,总氮气 =k=k=k 选出物品的最小价值(氧气瓶的重量)原创 2021-07-08 15:47:15 · 173 阅读 · 0 评论 -
AcWing 1022. 宠物小精灵之收服 0/1 背包的二维费用
1022. 宠物小精灵之收服0/1 背包的二维费用的问题分析条件:野生小精灵总数 (大小为 KKK)花费1:精灵球的数量(大小为 NNN )花费2:皮卡丘的体力值 (大小为 MMM)价值:小精灵的数量,每个都表示为 111状态表示:f[i,j,k]f[i,j,k]f[i,j,k] 表示所有只从前 iii 个物品中选择,且花费1不超过 jjj,花费2不超过 kkk 的选法的最大价值(也就是最大数量)状态计算:f[i,j,k]=max(f[i−1,j,k],f[i,j原创 2021-07-08 13:52:11 · 100 阅读 · 0 评论 -
计蒜客 41408 Texas hold‘em Poker 模拟
Texas hold’em PokerSource: The Preliminary Contest for ICPC Asia Shenyang 2019 HLink: Texas hold’em PokerCode#include <bits/stdc++.h>using namespace std;typedef pair<int, int> PII;#define LL long long#define ULL unsigned long long#d原创 2021-07-06 18:57:27 · 525 阅读 · 4 评论 -
PAT 树的遍历
PAT 树的遍历给定后序和中序遍历,求前序遍历#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair<int, int> PII;#define debug(a) cout << #a << " " << a << endl#define x first原创 2021-04-10 17:38:35 · 180 阅读 · 0 评论 -
AcWing 379. 捉迷藏 二分图 最小路径重复点覆盖
AcWing 379. 捉迷藏Solution每条路径上的任意点都可以相互看到。那么我们可以求出这个图的最小路径重复点覆盖的条数 cntcntcnt 。 每条路径上我们至少可以选出一个点。 故藏身点的数量就等于最小路径重复点覆盖的条数。记最小路径重复点覆盖数为 cntcntcnt ,该题的答案就是 cntcntcnt证明k≤cntk\le cntk≤cnt这 cntcntcnt 条路径覆盖了所有的点,所以所求的 kkk 个点一定要从这 cntcntcnt 条路径中的点选,并且每条路径上最多原创 2021-03-16 09:50:43 · 126 阅读 · 0 评论 -
AcWing 372. 棋盘覆盖 二分图最大匹配
AcWing 372. 棋盘覆盖 二分图最大匹配372. 棋盘覆盖Solution将每个格子看成一个点,占据两个格子的小方块看成一条边,这个问题就可以看成最多可以取多少条边,使得所有取出的边没有公共点,就等价于做一个最大匹配问题那么,现在的问题是,这个图是不是二分图这是一个经典做法,对这个 n×mn\times mn×m 的矩形进行二染色,发现这个二染色是没有矛盾的,所以这个图就是一个二分图,因此我们可以用匈牙利算法求最大匹配。现在,把 i+ji+ji+j 为偶数的点放在一边,为奇数的原创 2021-03-10 17:06:45 · 130 阅读 · 0 评论 -
AcWing 257. 关押罪犯 二分图 染色法
Acwing257关押罪犯题目链接Meaning给定两座监狱,其中有 NNN 名罪犯,编号为 1∼n1\sim n1∼n ,两名罪犯之间的怨气值为 ccc 。题目通过给出关系对 a,b,ca,b,ca,b,c 来表示罪犯 a,ba,ba,b 之间会产生怨气值为 ccc 的矛盾,我们要将罪犯分到两个监狱,使得同一个监狱中的恩怨值的最大值最小Solution将 a,b,ca,b,ca,b,c 看成点,点,边权。罪犯之间的恩怨相当于在他们之间连一条边考虑一条数轴,假定一个答案 xxx,在恩怨值大于答原创 2021-03-08 16:08:58 · 141 阅读 · 0 评论 -
AtCoder Regular Contest 112 D 并查集dsu
AtCoder Regular Contest 112 DSolution官方题解原题链接不难发现,对于所有的格子,只要它是一个有效格子,那么它们就可以到达 (1,1)(1,1)(1,1) 这个格子。因此我们可以反过来看这个问题,如果所有从 (1,1)(1,1)(1,1) 出发的旅行者都能到达所有格子,那么这张图就是一个有效图。因为有墙面的存在,我们有以下结论1−st1-st1−st 行是有效的 ⟺ 1−st1-st1−st 列是有效的1−st1-st1−st 行是有效的 ⟺ W−thW-t原创 2021-03-08 09:42:37 · 350 阅读 · 0 评论 -
AtCoder Regular Contest 112 B 思维 数轴区间去重
AtCoder Regular Contest 112 B题目链接官方题解Solution考虑刚刚好使用 CCC 元当钱数为 CCC 时,考虑这样一个特殊序列,对数 BBB 做任意次减一操作之后,在乘上 −1-1−1 的结果如果我们乘上奇数次 −1-1−1 ,最终每一次减法都会在 BBB 上造成加 111 的贡献如果我们乘上偶数次 −1-1−1 ,最终每一次减法都会在 BBB 上造成减 111 的贡献当钱数 CCC 为奇数时,可以将 CCC 表示为 C=2n+1C=2n+1C=2n+1原创 2021-03-06 21:25:08 · 212 阅读 · 0 评论 -
Acw1359 有趣的数 思维 求组合数
Acw1359 有趣的数Acw1359 有趣的数条件它的数字只包含 0,1,2,3,且这四个数字都出现过至少一次。所有的 0 都出现在所有的 1 之前,而所有的 2 都出现在所有的 3 之前。最高位数字不为 0。题解对于条件 222把条件 2 划分为两类0.1 设有 kkk 位2.3 设有 n−kn-kn−k 位由于最高位不是 0 ,所以0在1之前不可以在第一位因为四个数字至少出现一次,所以 kkk 最多只能有 n−2n-2n−2 位于是我们得到了 kk原创 2021-02-17 21:44:36 · 1705 阅读 · 0 评论 -
CF461B Appleman and Tree
Problem - 461B - Codeforces题意给定一个 nnn 个顶点的树,每个顶点有黑色和白色两种颜色,删掉 kkk 条边,将这棵树分成 k+1k+1k+1 部分,要求每个部分有且仅有一个黑色的点,求分割方案数(对 109+710^9+7109+7 取模)题解对于一个结点 uuu 而言,如果它是黑点,那么将它子树中所有包含黑点的子树都删掉。如果不是,还是要删掉黑点,但保留一个包含黑点的子树。定义 f[u][1]f[u][1]f[u][1] 为子树只有一个黑点的方案数f[u][0]f原创 2020-12-04 00:41:00 · 138 阅读 · 0 评论 -
CF1451B - Non-Substring Subsequence
1451B - Non-Substring Subsequence题意给定一个字符串 sss,再给定一个字符串的子串 xxx,求这个字符串 sss 中是否存在一个不连续的子序列满足 xxx题解Key满足这一情况当且仅当在 xxx 的首元素或者最后一个元素不是 sss 中的第一个出现或是最后一个出现证明假定有一个不连续的子序列在上述条件不成立时存在,那么这个子序列 kkk 必须以字符串中的第一个出现开头,最后一个出现结尾,那么唯一存在的字符串就是长度等于给定原串 xxx 的字符串,xxx原创 2020-11-30 22:14:48 · 154 阅读 · 0 评论 -
CF1452B Toy Blocks
题意给定n个盒子a,aia_iai表示第i个盒子中积木的数量。可以将一些额外的积木放置到n个盒子中,使得下面的操作成立,将需要的额外的积木的最小值输出。任意选中一个i,将aia_iai中的所有积木放到其他n-1个盒子中,存在一种方案能够使n-1个盒子中的积木数量相等。题解考虑两种情况一般的情况,保证 sum mod (n−1)=0sum\ mod \ (n-1) =0sum mod (n−1)=0以保证总量能够被除尽k=⌈sumn−1⌉k原创 2020-11-20 23:58:50 · 378 阅读 · 0 评论 -
CF1207F Remainder Problem
CF1207F. Remainder Problem 暴力分治Notes给定一个50万大小的一维数组,有以下两个操作,进行最多50万次询问1 xxx yyy 把a[x]加上yyy2 xxx yyy 求在aaa数组中所有imodx=yi mod x =yimodx=y的a[i]的和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0IpwcWph-1603457798916)(https://i.loli.net/2020/10/23/EUkq4DoGSCAbBz3.原创 2020-10-23 20:56:56 · 279 阅读 · 0 评论 -
CF1207E XOR Guessing
1207E XOR GuessingNote什么是交互题自己给出一段输出,判题机接受到这个输出,给你的输出返回一个结果,你再根据这个结果返回一个答案,判题机会检验答案的正确性题目给出两次询问,每次问100个数字,然后会返回一个这一百个数字中随机一个和答案异或的值,要求输出答案,并且要求这200个数字不重复。Code#include <bits/stdc++.h>using namespace std;#define ll long long#define mod 1000原创 2020-10-23 20:55:15 · 137 阅读 · 0 评论 -
Acwing907 区间覆盖
https://www.acwing.com/problem/content/description/909/题解设要覆盖的区间从start 到 end以所有区间左端点为key从小到大排序从前往后以此枚举每个区间,在所有能覆盖start的区间中,选择一个右端点最大的区间,然后将strat更新成右端点的最大值证明将方案中选出的区间数量记为 CntCntCnt ,AnsAnsAns为所有可行方案的最小值Ans≤CntAns \le CntAns≤Cnt显然,根据上面的定义AnsAnsA原创 2020-12-14 22:43:19 · 174 阅读 · 0 评论 -
Acwing165 DFS 小猫爬山
165. 小猫爬山 - AcWing题库题解因为 nnn 很小,所以我们可以暴力枚举所有情况那么,我们要考虑的问题是搜索的顺序,dfs函数的参数搜索的顺序对于每个小猫,我们有两种决策如果当前已有的车不超重,把它放到当前已有的车中for 循环找已有的车如果当前的车超重,把它放到新的车中函数参数对于参数,定义 dfs(int u int k)dfs(int \ u\ int \ k)dfs(int u int k)原创 2020-12-07 20:02:55 · 144 阅读 · 0 评论 -
Acwing1072 树的最长路径
1072. 树的最长路径 - AcWing题库题解树的最长路径 →\to→ 树的直径找树的直径的方法任取一点作为起点,找出离该点距离最远的点 uuu DFS/BFS再找到离 uuu 最远的一点 vvv DFS/BFS那么, u,vu,vu,v 之间的路径就是树的直径证明如下证明的目标:第一个找到的 uuu 一定是某个直径的起点分类把这些树的直径分成若干类,使得分类唯一,在每一类中求最大值现在,问题转化为,如何求挂到某点上的树的路径的长度最大值设求结点 uu原创 2020-12-04 21:00:36 · 183 阅读 · 0 评论 -
Light OJ 1422 Running
题意奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行 nnn 分钟的晨跑。在每分钟的开始,贝茜会选择下一分钟是用来跑步还是休息。贝茜的体力限制了她跑步的距离。更具体地,如果贝茜选择在第 iii 分钟内跑步,她可以在这一分钟内跑 did_idi米,并且她的疲劳度会增加 1。不过,无论何时贝茜的疲劳度都不能超过 m。如果贝茜选择休息,那么她的疲劳度就会每分钟减少 1,但她必须休息到疲劳度恢复到 0 为止。在疲劳度为 0 时休息的话,疲劳度不会再变动。晨跑开始时,贝茜的原创 2020-11-22 22:50:02 · 157 阅读 · 0 评论 -
POJ Halloween Costumes
题意主人公要参加宴会,参加宴会的次序是固定的,每场宴会需要穿对应的服装,用数字(1−100)(1−100)(1−100)表示。可以在衣服外面套上衣服,但是衣服脱下后,不能再次使用,问至少需要准备多少件衣服?题意描述不太容易理解,以样例222为例穿上衣服1,参加第一场宴会; 衣着由里到外为 111在衣服111上套上衣服222,参加第二场宴会; 衣着由里到外为 1,21,21,2脱下衣服222,参加第三场和第四场宴会; 衣着由里到外为 111穿上衣服3,参加第五场宴会; 衣着由里到外为 1,31,原创 2020-11-22 22:48:56 · 98 阅读 · 0 评论 -
东华大学2020年程序设计竞赛题解
东华大学2020年程序设计竞赛题目链接:https://ac.nowcoder.com/acm/contest/5891A描述One day, Li Lei and Han Meimei want to hold a shooting game.Competition rules:1.There are three kinds of targets. Red : one point, White : two points, Black : three points.2.The winner i原创 2020-06-10 23:49:07 · 352 阅读 · 0 评论