
思维
文章平均质量分 66
Frozen_Guardian
已退役菜鸡Acmer
展开
-
蓝桥杯 - 试题 H: 扫雷(思维)
题目大意:给出 nnn 个地雷和 mmm 个炸弹,都以 (x,y,r)(x,y,r)(x,y,r) 的形式给出,意义分别如下:对于每个地雷,位于点 (x,y)(x,y)(x,y),爆炸后会波及半径为 rrr 的圆形区域对于每个炸弹,会在点 (x,y)(x,y)(x,y) 爆炸,爆炸后会引爆半径为 rrr 的圆形区域内的地雷,随后地雷会 “连锁反应” 的爆炸问使用过 mmm 个炸弹后,一共可以引爆多少个地雷题目分析:(赛时读错题了,怪不得当时算复杂度的时候能多算一个 logloglog 出来).原创 2022-04-09 23:59:40 · 3559 阅读 · 8 评论 -
蓝桥杯 - 试题 J: 砍竹子(双向链表+堆/思维)
题目大意:给出一排 nnn 个竹子的高度,每次操作可以选择连续的,高度相同的竹子,使其高度变为 ⌊⌊H2+1⌋⌋\lfloor \sqrt{\lfloor \frac{H}{2}+1\rfloor} \rfloor⌊⌊2H+1⌋⌋,问最少需要执行多少次操作可以使得所有竹子都变成 111题目分析:最朴素的思路就是去模拟,赛时想到的也是这个思路,但是没时间去写了,就打了个 O(n2logn)O(n^2logn)O(n2logn) 的暴力骗了点分首先需要知道每次操作的一个性质,根号和除以二相结合,使得.原创 2022-04-09 21:00:43 · 2128 阅读 · 1 评论 -
CodeForces - 1593G Changing Brackets(思维)
题目链接:点击查看题目大意:给出一个长度为 nnn 的括号序列,其中包含了 {(,),[,]}\{(,),[,]\}{(,),[,]} 四种括号,现在可以进行两种操作:将括号反转,代价为 000,比如 [[[ 变为 ]]],))) 变为 (((将中括号变为小括号,代价为 111,比如 [[[ 变成 (((给出 qqq 次询问,每次询问需要回答使得区间 [l,r][l,r][l,r] 中的括号序列合法的最小代价。题目分析:因为反转括号是没有代价的,所以只需要关心括号的个数即可。手玩一下样例不难原创 2021-11-10 22:07:30 · 604 阅读 · 0 评论 -
CodeForces - 1567C Carrying Conundrum(思维/状压)
题目链接:点击查看题目大意:规定加法中使用隔项进位,问给定的 nnn 有多少种方案可以通过 “隔项进位加法” 得到题目分析:隔项进位意味着奇偶位置位置的数字互不影响,所以将两个数字拿出来,设为 aaa 和 bbb。不难看出组合出某个数字 xxx 的方案为 x+1x+1x+1,即 {0+(x),1+(x−1),⋯ ,x+(0)}\{0+(x),1+(x-1),\cdots,x+(0)\}{0+(x),1+(x−1),⋯,x+(0)}。所以总方案数为 (a+1)∗(b+1)(a+1)*(b+1)(a+1)∗原创 2021-09-06 20:28:49 · 405 阅读 · 2 评论 -
CodeForces - 1559D2 Mocha and Diana (Hard Version)(思维)
题目链接:点击查看题目大意:给出两棵森林,每次可以同时在两个森林中增加同一条边,问最多可以增加多少条边,使得两个森林仍然还是森林题目分析:结论参考至:https://blog.youkuaiyun.com/RunningBeef/article/details/119738571?utm_source=app&app_version=4.13.0&code=app_1562916241&uLinkId=usr1mkqgl919blen首先对于所有的点尝试与点 111 建边,此后考虑除了点原创 2021-08-17 20:09:30 · 362 阅读 · 3 评论 -
2021HDU多校6 - 7029 Median(思维)
题目链接:点击查看题目大意:初始时给出 nnn 个数字 1,2,3,...,n{1,2,3,...,n}1,2,3,...,n,再给出 mmm 个中位数,问是否能将 nnn 个数字分到 mmm 个组中,使得每一组的中位数分别为 bib_ibi题目分析:分袜子、分鲜花问题的变形:2019ICPC(沈阳) - Flowers不难发现 mmm 个中位数将 nnn 个数字划分为了 m+1m+1m+1 段,而任意两段的数字都是可以相互抵消的,所以转换模型为:给出 m+1m+1m+1 种颜色不同的鲜花,每种鲜花原创 2021-08-06 13:04:56 · 306 阅读 · 0 评论 -
CodeForces - 1530E Minimax(思维+构造)
题目链接:点击查看题目大意:规定 f(i)f(i)f(i) 为 KMPKMPKMP 算法中的 nextnextnext 数组,现在给出一个字符串 sss,需要将 sss 重新排列,使得在 maxi=1n{f(i)}\max\limits_{i=1}^{n}\{f(i)\}i=1maxn{f(i)} 尽量小的前提下,字典序最小题目分析:多写几组样例不难发现,除了所有字符都相同的情况下,都是可以构造出答案等于 111 的序列的,现在问题就是如何让字典序尽量小分类讨论一下:只有一种字符:直接输出大原创 2021-07-28 18:38:21 · 240 阅读 · 0 评论 -
2021牛客多校3 - Black and white(思维+最小生成树)
题目链接:点击查看题目大意:给出一个 n∗mn*mn∗m 的矩阵,初始时都是白色,可以花费掉 cost[i][j]cost[i][j]cost[i][j] 将格子 (i,j)(i,j)(i,j) 染黑,也可以通过魔法选择两行 x1,x2x1,x2x1,x2 和两列 y1,y2y1,y2y1,y2,如果标记中的四个点有三个点是黑色的,那么第四个点可以直接被染黑问矩阵被染黑的最小贡献题目分析:比赛的时候分析出来只需要选择 n+m−1n+m-1n+m−1 个点就可以满足条件了,但是没有思考出来这些点之间的关原创 2021-07-25 11:10:18 · 311 阅读 · 0 评论 -
2021牛客多校1 - Hash Function(思维+FFT)
题目链接:点击查看题目大意:给出一个长度为 nnn 的序列,现在要求找到一个 seedseedseed,使得所有数字变为 a[i]=a[i]mod seeda[i]=a[i]\mod seeda[i]=a[i]modseed 后两两互不相同,找到最小的 seedseedseed题目分析:考虑转换模型,如果存在着 iii 和 jjj 使得 a[i]≡a[j](modseed)a[i] \equiv a[j] \pmod {seed}a[i]≡a[j](modseed),那么肯定有 a[i]+k∗seed原创 2021-07-22 09:54:47 · 309 阅读 · 0 评论 -
CodeForces - 1486B Eastern Exhibition(二维中位数)
题目链接:点击查看题目大意:给出二维平面上的 nnn 个点,现在需要选择任意一个点满足到所有点的距离最小,问这样的点有几个题目分析:如果压成一维的话,那就是一个裸的中位数问题了,只是升到了二维而已一维的模型:CH - 0501 货仓选址代码:// Problem: B. Eastern Exhibition// Contest: Codeforces - Codeforces Round #703 (Div. 2)// URL: https://codeforces.com/contest/1原创 2021-06-09 16:18:46 · 259 阅读 · 0 评论 -
CodeForces - 1535C Unstable String(思维)
题目链接:点击查看题目大意:规定一个字符串将问号都替换成 000 或 111 后满足 010101 交替的话,该字符串是合法的,现在给出一个长度为 nnn 的字符串,求合法子串的个数题目分析:两种思路,第一种也是比赛里想到的,不太会实现细节,就是尺取每两个合法 010101 段,然后对两端连续的问号段容斥去重,个人感觉比较难写考虑子串就是每个前缀的所有后缀,所以枚举点 iii 作为每个前缀 s[1:i]s[1:i]s[1:i],找到其合法的最长的后缀所代表的左端点 lll,使得 [l,i][l,i][原创 2021-06-06 15:50:41 · 479 阅读 · 2 评论 -
牛客 - 牛牛的滑动窗口(单调栈+思维+差分)
题目链接:点击查看题目分析:给出 nnn 个数,定义滑动窗口的贡献是其中最大值与最小值的乘积,现在问对于长度分别为 [1,n][1,n][1,n] 的滑动窗口,贡献之和分别是多少题目分析:考虑暴力解法,是直接 RMQRMQRMQ 预处理一下,然后 O(n2)O(n^2)O(n2) 去模拟整个过程正难则反,考虑正这去枚举区间不行,那么我们是否可以通过枚举每个数字,从而计算每个数字对区间的贡献呢根据滑动窗口的定义,不难发现在每个长度下的滑动窗口,对于每个位置来说,都有可能作为一次窗口的起点或终点(如果越原创 2021-06-01 15:10:45 · 505 阅读 · 3 评论 -
牛客 - 牛牛的最大兴趣组(思维+数论)
题目链接:点击查看题目大意:给出 nnn 个数,要求选出最多的数,使得任意两个数的乘积不能是三次平方数,三次平方数,诸如23=8,33=272^3=8,3^3=2723=8,33=27题目分析:这个模型和前两天 cfcfcf 上遇到的一个样:CodeForces - 1497E2这个模型的特点就是,假设要使得任意两个数的乘积不能是 mmm 次平方数的话,当我们将所有的数字中,出现次数为 mmm 的倍数的质因子都筛掉后,剩下的数一定会两两匹配。具体到某个质因子来说,假设其出现次数为 xxx,那么其需要和原创 2021-06-01 14:51:58 · 652 阅读 · 0 评论 -
AtCoder - arc120_c Swaps 2(思维+线段树+模拟)
题目链接:点击查看题目大意:给出一个序列 aaa,问能否经过有限此操作使其变成 bbb,每次操作分为三步:选择一个 iii,满足 i+1<=ni+1<=ni+1<=n,然后 swap(ai,ai+1)swap(a_i,a_{i+1})swap(ai,ai+1)ai++a_i ++ai++(交换后的)ai+1−−a_{i+1}--ai+1−−(交换后的)如果有解,输出最小操作次数题目分析:思维点+固定模型的题目,有个结论是,题目有解的充分必要条件是,当且仅当 aaa原创 2021-05-29 16:35:34 · 363 阅读 · 1 评论 -
CodeForces - 1494E A-Z Graph(构造+思维)
题目链接:https://vjudge.net/problem/CodeForces-1494E题目大意:给出一个初始时只有 nnn 个点的有向带权图,需要执行 mmm 次操作,每次操作分为下列三种类型:+ u v c+\ u\ v\ c+ u v c:增加一条 u−>vu->vu−>v 的有向边,边权为 ccc− u v-\ u\ v− u v:删除 u−>vu->vu原创 2021-05-28 18:29:49 · 257 阅读 · 0 评论 -
CodeForces - 1529F It‘s a bird! No, it‘s a plane! No, it‘s AaParsa!(最短路+思维建图)
题目链接:点击查看题目大意:给出 nnn 个点(从 000 开始编号)和 mmm 条边的有向带权图,不过 mmm 条边是动态的,经过 ttt 秒后,第 iii 条边就从 ai−>bi,cia_i->b_i,c_iai−>bi,ci 变成了 ai−>(bi+t)mod n,cia_i->(b_i+t)\mod{n},c_iai−>(bi+t)modn,ci,现在要求输出任意两点之间的最短路(最短路矩阵)注意:在达到某个点后可以选择停留任意时刻再继续赶路题原创 2021-05-25 18:59:09 · 306 阅读 · 0 评论 -
CodeForces - 1498D Bananas in a Microwave(思维+dp)
题目链接:点击查看题目大意:给出 nnn 次操作,初始时有一个 k=0k=0k=0,每次操作抽象为三个数 t x yt\ x\ yt x y,其中 xxx 可能为小数,可以选择一个 num∈[0,y]num\in[0,y]num∈[0,y],使得:t=1t=1t=1:执行 numnumnum 次 k=⌈(k+x)⌉k=\lceil (k+x) \rceilk=⌈(k+x)⌉t=2t=2t=2:执行 numnumnum 次 k=⌈(k∗x)⌉k=\lceil (原创 2021-05-22 21:08:37 · 225 阅读 · 0 评论 -
CodeForces - 1504C Balance the Bits(思维+构造)
题目链接:https://vjudge.net/problem/CodeForces-1504C题目大意:给出一个长度为 nnn 的 010101 串,现在要求构造出两个长度为 nnn 的合法括号序列,使得在 010101 串对应为 000 的位置,两个序列的括号不相同,反之亦然题目分析:本以为是贪心,但后来发现其实是一个很简单的构造首先考虑非法的情况,无论如何起止位置一定是需要匹配的,也就是说 010101 串的开头和结尾一定都是 111 才行其次就是必须为串的长度必须是偶数才行,否则一定无法完全原创 2021-05-22 20:49:03 · 224 阅读 · 1 评论 -
CodeForces - 1516D Cut(思维+倍增)
题目链接:点击查看题目大意:给出一个长度为 nnn 的数列 aaa ,现在需要回答 mmm 次询问,每次询问给出一段区间 [l,r][l,r][l,r],需要回答最少需要将区间切分成几段,才能使得每一段区间中的 lcmlcmlcm 等于其自身的乘积题目分析:首先需要分析出 "lcmlcmlcm 等于其自身的乘积" 这句话的含义,其意义实际上就是,对于同一段中的所有数字来说,任意一个质因子,至多只能在一个位置中做出贡献然后就是一个不难看出的贪心:从某个位置 lll 作为起点,对于后续连续的每个数字来说,原创 2021-05-12 19:56:43 · 327 阅读 · 0 评论 -
HDU - 6184 Counting Stars(思维+三元环)
题目链接:点击查看题目大意:给出一个 nnn 个点 mmm 条边组成的无向图,问图中有多少个“三元环对”,“三元环对”指的是两个三元环共用了一条边题目分析:可以先计算出每条边被多少个三元环占用,然后组合数学统计一下答案就好了代码:// #pragma GCC optimize(2)// #pragma GCC optimize("Ofast","inline","-ffast-math")// #pragma GCC target("avx,sse2,sse3,sse4,mmx")#inclu原创 2021-05-06 23:08:37 · 216 阅读 · 0 评论 -
洛谷 - P1989 无向图三元环计数(思维建图)
题目链接:点击查看题目大意:给出一个 nnn 个点 mmm 条边组成的无向图,求三元环的个数题目分析:对于原图建新图,对于原来的每条边来说如果度数不同,度数小的点指向度数大的点如果度数相同,编号小的点指向编号大的点得到的是一个有向无环图,也就是DAG,然后直接暴力就可以了,可以证明时间复杂度是 O(mm)O(m\sqrt {m})O(mm) 的代码:// #pragma GCC optimize(2)// #pragma GCC optimize("Ofast","inline","-原创 2021-05-06 18:55:46 · 343 阅读 · 0 评论 -
CodeForces - 1469D Ceil Divisions(构造+思维)
题目链接:点击查看题目大意:给出一个初始时 ai=ia_i=iai=i 的序列,现在要求操作最多不超过 n+5n+5n+5 次,使得最终序列有 n−1n-1n−1 个 111 和 111 个 222,每次操作可以执行:ax=⌈axay⌉a_x = \left\lceil \frac{a_x}{a_y} \right\rceilax=⌈ayax⌉题目分析:正解是辗转求根号,因为 nnn 的上限是 2e52e52e5,辗转求根号的话最多需要执行五次,对于每次 (n,n)(\sqrt{n},n)(原创 2020-12-29 10:56:57 · 773 阅读 · 4 评论 -
牛客 - Pass Through With One Breath(中位数)
题目链接:点击查看题目大意:给出一个环,初始时每个数为 aia_iai,现在可以对每个数执行加一或者减一的操作,问最少进行多少次操作可以使得整个环存在着一个起点,开始逐渐递增题目分析:因为 nnn 不算大,可以考虑枚举起点,当起点确定后,又因为每个位置的偏移量都是确定的,所以不难求出...原创 2020-12-26 18:22:59 · 197 阅读 · 0 评论 -
牛客 - 共鸣问题(贪心+思维)
题目链接:点击查看题目大意:给出 nnn 个点,每个点都有点权,再给出 mmm 个关系,以 (x,y,z)(x,y,z)(x,y,z) 的形式给出,规定如下:同时选择点 xxx 和点 yyy 将获得 zzz 的代价选择点 xxx 或点 yyy 将不获得代价同时不选择点 xxx 和点 yyy 将获得 −z-z−z 的代价问如何选择可以使得总代价最大题目分析:假设把上述情况三去掉就是一个最大权闭合子图的裸题了,导致想了半个小时的网络流解法,虽然明知道是错误的但却并没有什么新思路赛后看了题解发现原创 2020-12-23 21:20:23 · 1221 阅读 · 10 评论 -
CodeForces - 813E Army Creation(主席树+思维)
题目链接:点击查看题目大意:给出一个长度为 nnn 的数列和一个整数 kkk,现在有 qqq 次询问,每次询问给出一个区间 [l,r][l,r][l,r],设 cnticnt_icnti 为数字 iii 在区间内出现的次数,需要输出 ∑min(cnti,k)\sum min(cnt_i,k)∑min(cnti,k),其中 iii 是区间内所有出现过的数字,所有询问强制在线题目分析:看到强制在线加上区间问题不难想到主席树,有个思维点必须要想到才行,一开始我想的是对于每个种类的数字维护一个前缀和,然后对原创 2020-12-20 22:00:16 · 297 阅读 · 2 评论 -
2020ICPC(上海) - Walker(分类讨论+二分)
题目链接:点击查看题目大意:在长度为 n 的数轴上给出两个人的初始位置和速度,问使得每个位置至少被一个人走过的时间是多少题目分析:分类讨论题目,分四种情况讨论即可,初始时设 p1 < p2:p1 走完全程 p2 走完全程 p1 向右走,p2 向左走 p1 向左走,p2 向右走,最后共同走完 p1 ~ p2 这段区间前三种都可以推出公式快速得出,对于第四种需要二分确定答案,可以二分断点位置 x,这样问题就变成了:p1 走完 [ 0 , x ] 这段区间,p2 走完 [ x , n ]原创 2020-12-16 11:35:43 · 904 阅读 · 0 评论 -
CodeForces - 1174D Ehab and the Expected XOR Problem(构造+思维+位运算)
题目链接:点击查看题目大意:给出一个 n,再给出一个 x,要求构造一个数列,满足该数列的所有子串的异或和都不等于 0 且都不等于 x,在满足上面的条件下尽可能长题目分析:因为这个题目最终的目标是需要让所有的“子串”的异或和都不等于某个值,因为是连续的,所以不难想到可以对于答案数组求一下前缀异或和,此时所有的“子串”都可以通过前缀异或和的任意两个数字表示出来,如 (a[ l ] xor a[ l + 1 ] xor ... xor a[ r - 1 ] xor a[ r ] )= sum[ r ]..原创 2020-12-10 22:26:03 · 212 阅读 · 0 评论 -
CodeForces - 364A Matrix(思维+数学)
题目链接:点击查看题目大意:给出一个长度为 n 的,只由十进制数字组成的字符串 s,可以构造出一个大小为 n * n 的矩阵,构造方法如下:b[ i ][ j ] = s[ i ] * s[ j ],现在问有多少个子矩阵的权值和等于 sum题目分析:虽然 n 比较小,但如果模拟出数组 b 然后再求二维前缀和的话就有点麻烦了,这个题的模型和昨天做的那个题差不多:CodeForces - 1425D上面的那个题是需要将完全平方和拆开,而这个题恰恰相反,是需要将完全平方和合起来,考虑一个区间内的权值和原创 2020-12-10 22:03:17 · 500 阅读 · 0 评论 -
CodeForces - 1450C2 Errich-Tac-Toe (Hard Version)(思维+构造)
题目链接:点击查看题目大意:给出一个大小为 n * m 的棋盘,规定不能有三个连续的 ' X ' 或三个连续的 ' O ' ,现在可以通过一次操作将 ' X ' 改成 'O '或者将 ' O ' 改成 ' X ',请输出一种修改次数不超过的构造方法,k 是总棋子数题目分析:因为不允许有超过三个连续的棋子相连,所以可以将整个棋盘按照 模三取余 划分,大概是下图的样子(图来自官方题解)对于模三取余的集合 { 0 , 1 , 2 } 来说,我们只需要任选两个数字 t1 和 t2,满足 t1...原创 2020-12-07 21:53:13 · 270 阅读 · 0 评论 -
CodeForces - 1196F K-th Path(最短路+思维)好题
题目链接:点击查看题目大意:给出一个 n 个点,m 条边的无向图,需要求出图中第 k 短的路径题目分析:k 是 400,本来以为是需要思考 k * n 或 k * m 的算法,搞了半天最后原来是 k^3 的算法。。首先考虑,先把图中前 k 小的边全部拿出来,比较显然的是,答案最坏也不可能超过第 k 小的这条边然后对于这 k 条边涉及到的 2 * k 个点单独拎出来跑弗洛伊德,然后将 k * ( k - 1 ) / 2 条路径的权值排个序求第 k 小就是答案了妙啊代码://#.原创 2020-12-02 22:02:25 · 390 阅读 · 6 评论 -
CodeForces - 820D Mister B and PR Shifts(思维+模拟)
题目链接:点击查看题目大意:给出一个长度为 n 的排列 p,可以执行数次循环右移的操作,问的最小值是多少题目分析:暴力的话用 n * n 很容易实现 ,但数据是 1e6 的,显然又不能用暴力去写,所以考虑优化首先去掉绝对值后将 n 个数分成两类:p[ i ] <= i p[ i ] > i假设第一类有 upper 个,第二类有 lower 个,那么循环右移一次,不难看出其变化的贡献是 delta = upper - lower,由此我们可以实时维护 upper 和 lower原创 2020-12-02 14:38:51 · 206 阅读 · 0 评论 -
CodeForces - 894B Ralph And His Magic Field(组合数学+思维)
题目链接:点击查看题目大意:给出一个 n * m 的棋盘,需要在棋盘内填充数字,使得每一行、每一列的乘积都等于 k,问有多少种方案题目分析:因为 k 只可能是 1 或 -1,所以在棋盘内填充的数字无非也只有两种首先需要特判一种特殊情况,就是 n 和 m 的奇偶性不同,且 k 为 -1,此时我们假设 n 为奇数,m 为偶数。因为 k 为 -1,所以每一行、每一列 -1 的个数必须为奇数个才行,所以对于行来说,共有(奇数 * 奇数)个 -1,而对于列来说,共有(奇数 * 偶数)个 -1,相互矛盾,故原创 2020-11-26 16:59:13 · 206 阅读 · 0 评论 -
CodeForces - 1454E Number of Simple Paths(基环树+思维)
题目链接:点击查看题目大意:给出一棵 n 个点的基环树,现在需要求所有长度大于等于 1 的路径个数题目分析:对于所有的路径 ( x , y ) 可以分成下列两种情况来考虑:路径不会经过环上的边:此时点 x 和点 y 之间的路径是唯一的 路径会经过环上的边:此时点 x 和点 y 之间的路径有两条,一条是沿着环顺时针走,另一条是沿着环逆时针走当然直接正向去考虑应该也是可以做出来的,但这个题比较优秀的一种思路是正难则反,首先假设所有的路径都会经过环上的边,然后再统计有多少个点对 ( x , y )原创 2020-11-25 17:40:03 · 398 阅读 · 0 评论 -
CodeForces - 681D Gifts by the List(思维)
题目链接:点击查看题目大意:给出一个 n 个点组成的森林,每条边都是有向边,规定一个点的祖先节点也包括了其本身,现在每个人都想要送给其祖先礼物,已知第 i 个人想要送给祖先 a[ i ] 。要求构造一个序列称之为 list,现在 n 个人按照顺序从 1 ~ n 开始送礼物,规则就是轮到第 i 个人时,他去 list 里找到第一个自己的祖先然后送出去礼物,问是否存在这样一个序列 list,满足每个 i 都可以送给 a[ i ] 礼物题目分析:题意有点难明白的一道题,然后明白题意了也可能不会做的一道原创 2020-11-20 14:50:18 · 214 阅读 · 2 评论 -
2020CCPC(威海) - Labyrinth(bfs+思维)
题目大意:给出一个 n * m 的矩阵,在矩阵内部最有 k 个黑洞(表示不可行走的区域),现在给出 q 次询问,每次询问给出两个点 ( x1 , y1 ) 和 ( x2 , y2 ) ,问从点 ( x1 , y1 ) 到点 ( x2 , y2 ) 的最短路是多少题目分析:本题一个很重要的思维点:设 x1 < x2 同时 y1 < y2:如果矩形区域 [ x1 : x2 ] X [ y1 : y2 ] 内不存在黑洞,那么答案就是其曼哈顿距离 否则一定存在着一条最短路,经过某个黑洞 {..原创 2020-10-26 20:40:27 · 1647 阅读 · 4 评论 -
HDU多校10 - 6880 Permutation Counting(dp+思维)
题目链接:点击查看题目大意:给出一个长度为 n - 1 的 01 序列 b 用来表示排列a 的相对大小关系,b[ i ] = 0 说明 a[ i ] < a[ i + 1 ] ,b[ i ] = 1 说明 a[ i ] > a[ i + 1 ],问 a 共有多少种合法方案题目分析:考虑动态规划,dp[ i ][ j ] 代表第 i 个数作为前 i 个数中的第 j 大的方案数,这样转移方程就比较简单了:如果 a[ i - 1] <a[ i ]:dp[ i ][ j ] = ...原创 2020-10-09 12:52:01 · 250 阅读 · 0 评论 -
CodeForces - 1408E Avoid Rainbow Cycles(思维+最大生成树)
题目链接:点击查看题目大意:给出 m 个集合,每个集合中都有数个点,每个点的取值范围为 [ 1 , n ] ,对于每个集合而言,其中的点互相连边,边的颜色为其集合的编号,每次操作可以删除点,删除掉第 i 个集合中的点 j 的代价为 a[ i ] + b[ j ] ,现在规定 “彩虹环” 的定义为,一条环上的所有边的编号互不相同,现在问最少花费多少边权进行删点才能使得图中不存在 “彩虹环”题目分析:模型的话很像之前训练的时候做过的一个最短路,也是好多个集合,每个集合中的点互相连边:HDU - 5521原创 2020-10-03 11:14:53 · 356 阅读 · 0 评论 -
CodeForces - 1408D Searchlights(思维)
题目链接:点击查看题目大意:在二维平面坐标系上有 n 个海盗和 m 个探照灯,假设海盗 i 的位置为 ( a[ i ] , b[ i ] ),探照灯 j 的位置为 ( c[ j ] , d[ j ] ),如果满足 a[ i ] <= c[ j ] && b[ i ] <= d[ j ] ,则海盗 i 会被探照灯 j 发现,现在每次操作可以将所有 n 个海盗同时向上、下、左、右选择一个方向移动一个单位,问最小需要多少次操作,才能使得 n 个海盗都不被发现题目分析:比较显然的原创 2020-10-02 18:51:09 · 422 阅读 · 0 评论 -
HDU多校7 - 6850 Game(博弈+思维+贪心)
题目链接:点击查看题目大意:二维平面上有 n 个点,现在两个人博弈,每个点至多遍历一次,先手从第一个点出发,随意选择一个点作为下一个点,后手再选择一个点,从现在开始需要满足的条件是,接下来选择点的距离必须要大于前一次两点的距离,无法做出选择的人失败题目分析:挺好的一道博弈题,网上很多博客的证明和思路都是错的,只不过因为数据都是整数的原因,那样实现确实可以 AC,这里直接讲一下官方题解的思路首先求出 n * ( n - 1 ) / 2 条边作为两两点对的距离,贪心排序一下,按照距离从大到小分类讨论原创 2020-08-12 23:20:09 · 393 阅读 · 0 评论 -
ZOJ - 4122 Triangle City(最短路+欧拉通路+思维)
题目链接:点击查看题目大意:给出一张三角形的无向图,如下图所示求出从点 ( 1 , 1 ) 到点 ( n , n ) 找到一条最长路,且每条边至多遍历一次,输出最长路的权值以及路径题目分析:点 ( 1 ,1 ) 到点 ( n , n ) 的一条最长路,且每条边至多遍历一次,不难想到欧拉通路,但欧拉通路的定义是,只有起点和终点两个奇度点,其余的点都是偶度点才行,对于初始时给出的图,所有的点都是偶度点,所以考虑删边,在确保其余点度数奇偶性不变的前提下,如果想要通过删边将起点和终点变为奇度点,那.原创 2020-09-17 21:27:05 · 328 阅读 · 0 评论