神仙思维题
文章平均质量分 63
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
leedcode 134. 加油站
Link考虑从第一个加油站出发,最多能到第yyy个加油站有∑i=1ygas[i]<∑i=1ycost[i]\sum\limits_{i=1}^{y}gas[i]<\sum\limits_{i=1}^y cost[i]i=1∑ygas[i]<i=1∑ycost[i]那么考虑现在从第k∈[1,y]k\in[1,y]k∈[1,y]个加油站出发,能否突破第yyy个加油站但是显然不可能,因为有∑i=1k−1gas[i]>=∑i=1k−1cost[i]\sum\limits_{i=原创 2022-02-16 17:37:05 · 553 阅读 · 0 评论 -
CF1140E Palindrome-less Arrays(巧妙的递推)
LINK题意一个数组有些位置是???,你可以使用[1,k][1,k][1,k]填充满足最后对于i∈[1,n−2]i\in[1,n-2]i∈[1,n−2]有ai!=ai+2a_i!=a_{i+2}ai!=ai+2,求方案数我们分成奇数索引构成的数组和偶数索引构成的数组分别考虑现在设奇数索引构成的数组为aaa,条件限制相当于相邻元素值不能相同.考虑到???可能连成一块,这就变得非常麻烦,其实可以把连续的???缩成一个块设f[i][0]f[i][0]f[i][0]表示???块长度为iii,且问原创 2021-10-13 17:13:22 · 227 阅读 · 0 评论 -
2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛(重赛) Jumping Monkey(并查集,逆向考虑)
LINK考虑权值最大的节点为zzz,那么其他所有点最后都是跳到这个点,且不能越过这个点到其他点那么其实我们可以把所有其他节点的答案都加111,相当于把zzz删掉,分成若干个连通块在最后跳到zzz点之前的步骤中,只能在连通块中跳跃于是对于连通块中的点再次递归的做上面的事情不过这个过程不好维护,但是可以考虑逆向加点做,从最小的节点开始遍历设当前从小到大枚举到的节点uuu,会连通周围所有权值比自己小的那些连通块这些连通块中的点答案都加111,直接加复杂度很高,不妨我们让uuu向周围连通块的根连一条边原创 2021-10-11 18:47:04 · 345 阅读 · 0 评论 -
2018ICPC 焦作 B - Ultraman vs. Aodzilla and Bodzilla(贪心,思维)
LINK找到最小的nnn满足∑i=1ni>=hpa+hpb\sum\limits_{i=1}^ni>=hp_a+hp_bi=1∑ni>=hpa+hpb可以证明,在nnn轮对决中打死两个怪物一定是最优的(因为可以选择先打死AAA或先打死BBB)定义prei=∑j=1ijpre_i=\sum\limits_{j=1}^i jprei=j=1∑ij考虑如果先打死AAA找到最小的p1p_1p1满足prep1>=hpapre_{p_1}>=hp_aprep1&g原创 2021-10-09 18:26:13 · 269 阅读 · 0 评论 -
1380 D - Berserk And Fireball(思维,贪心)
LINK考虑怎样删除区间[l,r][l,r][l,r]内的战士考虑一种无脑的做法,让区间[l,r][l,r][l,r]一直使用狂暴,剩下一个和al−1a_l-1al−1或ar+1a_{r+1}ar+1狂暴就能全部消除但如果区间中的最大数比al−1a_{l-1}al−1和ar+1a_{r+1}ar+1都大,那么最后它是无法消除的,我们称这种数字为特殊数字所以应该先用火球术把这种比两边大的数字消掉才行此时如果(r−l+1)<k(r-l+1)<k(r−l+1)<k,不足以使用一原创 2021-10-03 16:50:04 · 277 阅读 · 0 评论 -
CF1364D Ehab‘s Last Corollary(思维,环,二分图,构造)
LINK考虑一个环如果长大于等于kkk,那么我们每次隔点取点,取出了⌈k2⌉\lceil \frac{k}{2}\rceil⌈2k⌉个不相关点当然,这个环必须是复杂环中的最小环,否则可能点和点之间仍然存在边若这个最小环点数已经小于等于kkk,输出这个环即可否则可以隔点取,输出这个独立集(输出⌈k2⌉\lceil \frac{k}{2}\rceil⌈2k⌉个点即可)至于无环的情况,显然只可能是一棵树,对树二分图染色,必然有一侧的点大于等于⌈n2⌉\lceil \frac{n}{2}\rceil⌈原创 2021-10-03 11:22:47 · 315 阅读 · 3 评论 -
2020-2021 gym/103185 D. Dividing Candy(siweim二进制)
LINK考虑存在两个解满组条件一组是2k12^{k_1}2k1和2k22^{k_2}2k2一组是2k32^{k_3}2k3和2k42^{k_4}2k4显然有k1!=k3&&k1!=k4&&k2!=k3&&k2!=k4k_1!=k_3\&\&k_1!=k_4\&\&k_2!=k_3\&\&k_2!=k_4k1!=k3&&k1!=k4&&k2!=k3&原创 2021-09-18 16:31:31 · 542 阅读 · 0 评论 -
Codeforces Round #511 (Div. 2) E. Region Separation(思维,性质,dp)
LINK题意每一轮可以砍掉若干条边,满足每个连通块权值相等,求砍树方案数.两种方案不同,当且仅当至少存在一轮,剩余的连通块不完全相同.考虑如果把树分成kkk份,那么每个连通块的权值为Sk\frac{S}{k}kS我们dfsdfsdfs这棵树,若存在一颗子树的权值等于Sk\frac{S}{k}kS,显然需要砍掉这个儿子和父亲的边这样重复做下去,发现需要砍掉所有满足Sk∣su\frac{S}{k}|s_ukS∣su的uuu与父亲的边我们定义f[k]f[k]f[k]表示f[k]=∑i=1原创 2021-09-18 10:50:56 · 242 阅读 · 0 评论 -
2020-2021 ICPC Southeastern European Regional E. Divisible by 3(前缀和,优化暴力)
LINK区间[l,r][l,r][l,r]的权值计算方式是(sum=∑i=lraisum=\sum\limits_{i=l}^r a_isum=i=l∑rai)weight[l,r]=∑i=lrai∗(sum−ai)=sum∗∑i=lrai−∑i=1rai2weight[l,r]=\sum\limits_{i=l}^r a_i*(sum-a_i)=sum*\sum\limits_{i=l}^r a_i-\sum\limits_{i=1}^r a_i^2weight[l,r]=i=l∑rai∗(s原创 2021-09-17 14:19:32 · 502 阅读 · 0 评论 -
Codeforces Round #720 (Div. 2) 1521 C. Nastia and a Hidden Permutation(交互,技巧)
LINK一个1−n1-n1−n的排列ppp,你可以询问至多⌊3n2⌋+30\lfloor \frac{3n}{2}\rfloor+30⌊23n⌋+30次来得到这个排列每次询问先选定一个数xxx,然后询问分为两种Ⅰ.得到max{min(x,pi),min(x+1,pj)}\max\{\min(x,p_i),\min(x+1,p_{j})\}max{min(x,pi),min(x+1,pj)}的值Ⅱ.得到min{max(x,pi),max(x+1,pj)}\min\{\max(x,p_原创 2021-09-02 19:41:29 · 521 阅读 · 0 评论 -
2021牛客暑期多校训练营2 G.League of Legends(模型转化,单调队列dp)
LINK题意给定nnn个区间分成kkk组,要求每组至少一个区间,每个区间恰好属于一个组每组的贡献是区间的交的点数,每组至少需要有一个公共交点求最大收益,无解输出0.考虑一个区间包含了小区间,那么这个区间只有两种决策是最优的Ⅰ.单独成一个组,贡献就是自己的长度Ⅱ.加入到自己包含的那个小区间的组去,此时答案不变对于情况Ⅱ,答案不变不需要考虑.对于情况Ⅰ,单独成组可以先放一放考虑剔除这些区间,剩下的区间有一个非常好的性质,就是左端点递增的同时右端点也递增如果这考虑这些区间,会发现选择连续相邻原创 2021-08-05 23:59:26 · 302 阅读 · 0 评论 -
2021牛客暑期多校训练营1 G.Game of Swapping Numbers(贪心,思维)
LINK考虑不管怎么交换,设最后的数组为aaa数组考虑绝对值的含义,aia_iai和bib_ibi一定有一个被加上,一个被减去那么如果不固定kkk的取值,最优情况相当于把a,ba,ba,b数组合并排序一下前nnn大的数就把正号赋给他们,后面nnn个数就把负号赋给他们,这样是最优的所以考虑一对(ai,bi)(a_i,b_i)(ai,bi),在最优解中被赋的正负号不同,那么就不需要管.因为这种情况下较大的那个数被赋的一定是正号,较小的那个数被赋的一定是正号于是我们只需要考虑哪些ai,bia_原创 2021-08-05 20:44:44 · 247 阅读 · 0 评论 -
HDU 7015 Another String(思维尺取,差分)
LINK参考自这位巨巨LINK给定长度为nnn的字符串sss,把sss分成A=s[1...i]A=s[1...i]A=s[1...i]和B=s[i+1..n]B=s[i+1..n]B=s[i+1..n]两段显然一共有n−1n-1n−1中分割方式对于每一种分割方式,在AAA中选定一个子串,在BBB中选定一个长度相同的子串,若子串至多只有kkk个位置不同就是合法的对分别求出这n−1n-1n−1种分割方式合法的对的数量定义f[i][j]f[i][j]f[i][j]表示[i,n][i,n][i,n]和原创 2021-08-04 23:42:02 · 393 阅读 · 0 评论 -
1523 E - Crypto Lights(期望+组合数学思维)
LINK题意nnn盏熄灭的灯,每次操作在熄灭的灯随机选择一盏灯打开当任意连续kkk个灯至少有222盏灯被打开游戏结束求游戏结束的期望操作次数。对于一个打开www盏灯结束游戏的方案,考虑分别计算它的www次贡献分别是第1,2,...w1,2,...w1,2,...w次打开灯的贡献基于这样的思想,我们考虑枚举一个ppp表示当前点亮了ppp盏灯考虑计算此时游戏没有终止的方案数记作fff那么对期望的贡献即为f∗p!n∗(n−1)...∗(n−p+1)f*\frac{p!}{n*(n-1)...原创 2021-06-03 20:10:42 · 419 阅读 · 0 评论 -
AtCoder 199 D - RGB Coloring 2(枚举,暴力)
LINK觉得自己又脑瘫了暴力枚举每个点的颜色复杂度是O(3n)O(3^n)O(3n),显然无法接受考虑直接去dfsdfsdfs,只有第一个点的颜色有三种选择之后的每个点因为前一个点的约束只有两种选择,就算每个点都暴力枚举也只有2n2^n2n种于是我们就直接暴力了hhhh…#include <bits/stdc++.h>using namespace std;const int maxn = 1e6+10;long long ans,temp;int n,m,vis[maxn]原创 2021-06-02 20:12:40 · 611 阅读 · 0 评论 -
2020CCPC 长春 L. Coordinate Paper(思维,构造)
LINK构造数组满足Ⅰ.ai>0Ⅰ.a_i>0Ⅰ.ai>0Ⅱ.∑i=1nai=sⅡ.\sum\limits_{i=1}^na_i=sⅡ.i=1∑nai=sⅢ.i∈[1,n−1],ai−ai+1=kⅢ.i\in[1,n-1],a_i-a_{i+1}=kⅢ.i∈[1,n−1],ai−ai+1=k或ai+1−ai=1a_{i+1}-a_i=1ai+1−ai=1至少有一个满足先考虑构造一个最小和的解,形如0 1 2 … k 0 1 2 … k 0 1 …可以算得这个答原创 2021-06-01 21:05:45 · 368 阅读 · 0 评论 -
2020ICPC昆明 J.Parallel Sort(思维,规律)
题意#include <bits/stdc++.h>using namespace std;const int maxn = 1e6+10;int n,p[maxn],pos[maxn],vis[maxn],a[maxn];typedef pair<int,int>w;vector<w>vec1,vec2;void zero(){ int flag = 1; for(int i=1;i<=n;i++) if( i!=p[i] ) flag原创 2021-06-01 15:55:55 · 480 阅读 · 0 评论 -
2020ICPC 昆明 M.Stone Games(思维+可持久化线段树)
LINK题意给出长度为nnn的数组aaa和qqq次询问,每次给出区间[l,r][l,r][l,r]你可以用区间[l,r][l,r][l,r]的任意子集来凑数,问最小的不能凑到的数是多少其实有点像010101背包问题,但显然不符合时间复杂度考虑区间[l,r][l,r][l,r]内没有数字111,那么答案就是111否则设我们拥有xxx个数字111,毫无疑问可以凑出[1,x][1,x][1,x]设kkk是继数字111后最小的数字,若存在k>x+1k>x+1k>x+1显然x+1x原创 2021-06-01 15:39:09 · 379 阅读 · 0 评论 -
Codeforces Round #723 (Div. 2) B. I Hate 1111(找规律,性质)
LINK人被这题搞傻了找找规律,发现1111=11∗1011111=11*1011111=11∗10111111=11∗103+11111111=11*10^3+11111111=11∗103+111111111=11∗104+1111111111=11*10^4+1111111111=11∗104+11111111111=11∗105+111111111111=11*10^5+111111111111=11∗105+11111综上所诉,后面的每个数都可以看成由若干个111111和11111原创 2021-05-31 19:30:11 · 427 阅读 · 0 评论 -
牛客多校六Palindrome Mouse(PAM上DAG)
LINK题意给定字符串sss,将sss的所有回文子串放进集合www中从www选出串aaa和串bbb(满足a!=ba!=ba!=b且aaa是bbb的子串)问方案数考虑建立回文树,除了根节点每个节点都代表一个本质不同的回文串设sss为节点uuu表示的回文串sss包含回文树的哪些回文子串呢??我们来分析一下①.若回文子串不以s1s_1s1开头,那么由于回文,也不会以sns_nsn结尾此时删掉两头的字母也没有影响,也就是可以转移到父节点②.若回文子串以s1s_1s1开头,相当于以sns_原创 2021-05-28 21:32:25 · 230 阅读 · 0 评论 -
C - Color the Tree(递归构造)
LINK考虑只有一条链的情况,显然操作方案唯一,一路按下来即可如果有两条链,设链一的状态为s1,s2...sns_1,s_2...s_ns1,s2...sn,链二的状态为t1,t2....tmt_1,t_2....t_mt1,t2....tm所有状态都可以达到,形如(s1,t1)−(s2,t1)...(sn,t1)(s_1,t_1)-(s_2,t_1)...(s_n,t_1)(s1,t1)−(s2,t1)...(sn,t1)(sn,t2)−(sn−1,t2)...(s1,t原创 2021-05-26 21:30:46 · 491 阅读 · 0 评论 -
2020 CCPC 长春 J. Abstract Painting(状压dp)
LINK顺序考虑区间上的每个点作为圆的右端点,定义f[i]f[i]f[i]表示[0,i][0,i][0,i]的方案数考虑iii点之前有一个直径为[x−r,x+r][x-r,x+r][x−r,x+r]的圆(x+r<ix+r<ix+r<i)当以iii为右端点放直径为[l,i][l,i][l,i]的圆时, 显然lll不能是[x−r+1,x+r−1][x-r+1,x+r-1][x−r+1,x+r−1]中的任意一点只要满足这个条件,交点数一定小于等于111然后注意到半径不超过555,所以以原创 2021-05-25 16:26:29 · 465 阅读 · 0 评论 -
Codeforces Round #722 (Div. 2) D. Kavi on Pairing Duty(证明和公式图解)
LINK为了方便,定义(x,y)(x,y)(x,y)表示xxx点和yyy点配对已知第111个点和第x+1x+1x+1个点配对,第222个点和第yyy个点配对考虑y<x+1y<x+1y<x+1时这是不可能的,设和x+2x+2x+2这个点配对的点为zzz(zzz可能在左边也可能在右边)显然(x+2,z)(x+2,z)(x+2,z)形成的弧线既不被(1,x+1)(1,x+1)(1,x+1)包含,也不被(2,y)(2,y)(2,y)包含那么就必须满足abs(x+2−y)=y−2&a原创 2021-05-25 11:54:13 · 1016 阅读 · 5 评论 -
2020 CCPC 长春 K. Ragdoll(预处理+启发式合并)
LINK考虑x⊕y=gcd(x,y)x\oplus y=gcd(x,y)x⊕y=gcd(x,y)的情况应该是非常少的不妨设x>yx>yx>y由于x⊕y>=x−y>=gcd(x,y)x\oplus y>=x-y>=gcd(x,y)x⊕y>=x−y>=gcd(x,y)显然等号应该同时取到,得到x⊕y=x−y=gcd(x,y)x\oplus y=x-y=gcd(x,y)x⊕y=x−y=gcd(x,y)枚举约数kkk作为gcd(x,y)gcd(x,y)原创 2021-05-25 00:06:56 · 459 阅读 · 2 评论 -
判断分数是否是有限小数(D - Decimal)
考虑分数ab\frac{a}{b}ba是不是有限小数,实际上只需要考虑1b\frac{1}{b}b1是不是有限小数设1b=h\frac{1}{b}=hb1=h,其中hhh是一个有限小数,小数点后有nnn位两边同时乘以10n10^n10n得到10nb=10n∗h\frac{10^n}{b}=10^n*hb10n=10n∗h加入我们的假设是真的,即hhh真的是有限小数,那么10nb\frac{10^n}{b}b10n应该是一个整数对10n10^n10n质因子分解,得到2n5nb\frac{原创 2021-05-19 15:44:24 · 839 阅读 · 2 评论 -
2018-2019 ACM-ICPC, China Multi-Provincial Collegiate G. Factories(树形dp+算贡献)
LINK题意给定一颗nnn个节点的边权树,在kkk个叶子节点建立工厂令两两工厂的距离和最小,求出最小距离和定义f[i][j]f[i][j]f[i][j]表示iii的子树内选择jjj个叶子节点的距离和转移为f[u][i]=min{f[son][j]+f[u][i−j]+g[u][i−j]∗g[v][j]}f[u][i]=\min\{f[son][j]+f[u][i-j]+g[u][i-j]*g[v][j]\}f[u][i]=min{f[son][j]+f[u][i−j]+g[u][i−j]∗g[原创 2021-05-18 21:54:39 · 285 阅读 · 0 评论 -
2018-2019 ACM-ICPC, China Multi-Provincial Collegiate D. Take Your Seat(数学概率)
LINK题意子问题一现在有nnn名乘客,第iii名乘客的座位是编号iii现在第一个乘客丢了座位票,所以他会随机找一个位置坐下然后第二个,第三个乘客按顺序来选座位…如果他的座位被占据了,他会随机选一个空闲的坐下,否则做原来的位置问最后一个乘客做自己位置的概率子问题二现在1..m1..m1..m名乘客不是按顺序选座,而是以随机的顺序,显然有m!m!m!种顺序问最后一个上飞机的乘客坐上正确位子的概况子问题一①.若111号做对了位置,那么所有人都可以做对位置否则②.若111号做到了kk原创 2021-05-18 17:31:58 · 275 阅读 · 0 评论 -
牛客练习赛82 B.Mocha 的序列(小思维,同余)
LINK题意对于每次询问333,需要回答∏i=lrai%(r−l+1)!\prod\limits_{i=l}^ra_i\%(r-l+1)!i=l∏rai%(r−l+1)!因为初始ai=ia_i=iai=i其中∏i=lrai\prod\limits_{i=l}^ra_ii=l∏rai是连续的一段aia_iai,区间长度为r−l+1r-l+1r−l+1而注意到(r−l+1)!=1∗2∗3...∗(r−l+1)(r-l+1)!=1*2*3...*(r-l+1)(r−l+1)!=1∗2∗3.原创 2021-05-18 10:04:50 · 263 阅读 · 0 评论 -
2017-2018 ACM-ICPC Asia East Continent League Final H - Mr. Panda and Birthday Song(DP)
题意给定一个串,需要把???改成任意小写字母,形成新的串sss连续出现元音长度 >= x || 连续出现辅音长度 >= y ,输出DISLIKE。连续出现元音长度 < x && 连续出现辅音长度 <y,输出LIKE。即满足1又满足2,输出SURPRISE。考虑每个位置要么是元音要么是辅音我们可以得到为元音时的最短连续长度和为辅音的最短连续长度这样就可以分开dpdpdp作决策f[i][0/1]f[i][0/1]f[i][0/1]表示以iii结尾的最短连原创 2021-05-13 18:17:22 · 252 阅读 · 0 评论 -
2017-2018 ACM-ICPC Asia East Continent League Final C. Traffic Light(思维)
LINK题意现在要从000号点到n+1n+1n+1号点从iii到i+1i+1i+1需要的时间是sis_isi且在i∈[1,n]i\in[1,n]i∈[1,n]时,如果此时iii处的红绿灯为红灯,需要等完这次红灯才能通过现在你从000号点出发的时间任意,让你构造一种最优红绿灯偏移量,使得求最坏情况下的等待时间最短设从000号点出发的时间为000那么到111号灯的时间是s0s_0s0,我们让111号灯的红绿灯从s0s_0s0时间开始是绿灯然后到222号灯的时间是s0+s1s_0+s_1原创 2021-05-13 16:33:21 · 274 阅读 · 0 评论 -
2017-2018 ACM-ICPC Asia East Continent League Final J. Straight Master(差分+思维)
LINK]首先能每次选择长度为3,4,53,4,53,4,5的区间长度加一相当于可以让长度大于等于333任意的区间整体加一,因为3,4,53,4,53,4,5可以凑成任意数但这样还是不好写,考虑把原数组差分为数组aaa那么让区间[l,r][l,r][l,r]整体加一相当于al++,ar+1−−a_l++,a_{r+1}--al++,ar+1−−所以若ai>0a_i>0ai>0,说明存在aia_iai个以iii开头的区间若ai<0a_i<0ai<0,说原创 2021-05-13 15:37:56 · 246 阅读 · 0 评论 -
2017-2018 ACM-ICPC Asia East Continent League Final L. SOS(博弈,思维)
LINK小范围手动模拟,发现不管怎样都可以平局,一时间不知道怎样必胜考虑样例n=7n=7n=7的情况先手现在中间放下一个SSS然后不管后手怎么走,先手都在另一侧的端点放一个SSS(下面用eee表示空)这样形成了S e e S S e e或者S e e S e S e或者S e e S e e S这样一来我们有形如S e e S的状态,可以看出这是一个必败态,不管放在哪个位置放什么都输了所以先手的任务只需要在S e e S之外的空位置填满且不输掉-----这是肯定可以做到的所以n=7n=7原创 2021-05-13 11:09:44 · 260 阅读 · 0 评论 -
AT2395 [ARC071C] TrBBnsformBBtion(构造)
LINK发现操作是可逆的①.AAA可以变为BBBBBB,BBBBBB也能变为AAABB−>AAAA−>ABB->AAAA->ABB−>AAAA−>A②.AAAAAAAAA可以消除,同样如果存在一个AAA那么可以创造3x+13x+13x+1个AAAA−>BB−>AAB−>AAAAA->BB->AAB->AAAAA−>BB−>AAB−>AAAA既然证明了操作可逆,那么可以同时对S,TS,TS,T串进行变换也不影原创 2021-05-12 20:04:26 · 196 阅读 · 0 评论 -
(ICPC)亚洲区域赛(上海)Mine Sweeper II(思维)
LINK设一个空格子周围有xxx颗雷,那么这个格子的数字是xxx此时如果把周围的xxx颗雷变成空格子,原来的空格子变成雷那么中间的雷(原来的空格子)会给周围的xxx个空格子(原来的雷),每个贡献111从这个角度来看,原图和补图的数字是相等的这启示我们把BBB变成AAA或者AAA的补图即可转化次数一定有一个小于一半,所以一定有解#include<bits/stdc++.h>using namespace std;const int maxn = 1e3+10;char a[10原创 2021-05-11 20:50:58 · 267 阅读 · 0 评论 -
(ICPC)亚洲区域赛上海 M.Gitignore(模拟,map)
LINK先对mmm个不能删除的路径做处理一个路径不能删除,说明它的所有前缀路径不能删除(由于最后一个是文件,不需要管,所以只把’\'作为分隔符即可)我们把所有前缀路径丢进mapmapmap然后处理nnn个需要删除的路径也就是所有前缀路径至少删除一个,实在不行就直接删除文件我们贪心删除范围大的即可#include<bits/stdc++.h>using namespace std;const int maxn = 1e3+10;map<string,int>mp;原创 2021-05-11 20:23:33 · 243 阅读 · 0 评论 -
2019牛客国庆集训派对day3 时间旅行(思维)
LINK现在BobBobBob在数轴点t0t_0t0,要回到[0,h0][0,h_0][0,h0]中当处于数轴上ttt点时,可以选择一个xxx满足⌈xh⌉∗h<=c\lceil \frac{x}{h} \rceil*h<=c⌈hx⌉∗h<=c时间机器会在[0,x][0,x][0,x]随机选择一个数yyy回到t−yt-yt−y处,同时燃料变成c−yc-yc−y现在为了保证能回到[0,h0][0,h_0][0,h0],求出最大的距离TTT可以想象,如果点kkk无法回到[0,原创 2021-05-10 14:42:51 · 244 阅读 · 0 评论 -
2019牛客国庆集训派对day2 J.Vertex Cover(思维,组合数学算贡献)
LINK从序号最大的点开始考虑考虑(i,j)(i,j)(i,j)(其中i<ji<ji<j)这条边,选和不选的方案数放在iii点考虑这样可以做到不重不漏设ppp表示权值大于iii且被选择的点数,qqq表示权值大于iii且没被选择的点数①.若点iii被选择(只考虑(i,j)(i,j)(i,j)边,其中i<ji<ji<j)那么至少存在一个代价更大且没被选择的点和iii相连如果不是这样,完全可以不选iii而把其他小于iii的点全选上,更优如果是这样,那么可以保证i原创 2021-05-08 21:05:15 · 216 阅读 · 0 评论 -
P4094 [HEOI2016/TJOI2016]字符串(二分+SAM上线段树合并)
LINK题意给定串sss和qqq个询问每次问s[a...b]s[a...b]s[a...b]的所有子串和s[c....d]s[c....d]s[c....d]的最长公共前缀最大值考虑二分答案midmidmid问题转化为,s[c...c+mid−1]s[c...c+mid-1]s[c...c+mid−1]是否在s[a...b]s[a...b]s[a...b]的某个子串中出现过考虑到s[c...c+mid−1]s[c...c+mid-1]s[c...c+mid−1]是前缀,而后缀自动机更擅长处理后原创 2021-03-23 13:38:24 · 247 阅读 · 0 评论 -
#6071.「2017 山东一轮集训 Day5」字符串(合并n张SAM的DAG)
LINK如果只有一个串,那么建立SAMSAMSAM直接求本质不同的子串个数就好了可以选择利用parentparentparent树性质求,也可以选择在DAG上dpdpdp不同路径的方案数现在有多个串,不好利用SAMSAMSAM的形式:每条路径代表的子串不同(可自动去重)考虑对每个串都建立了一个SAMSAMSAM,每个串都有一个DAG设串AAA有子串a,ab,abc,空,串BBB有子串c,空那么ab+cab+cab+c也是abcabcabc,而abc+空abc+空abc+空也是abcabcabc,原创 2021-03-22 20:16:41 · 386 阅读 · 0 评论 -
P1251 餐巾计划问题(上下界最小费用流)
LINK考虑上下界网络流每个点拆分为入点iniin_iini和出点outiout_iouti新建源点sss,新建汇点tttsss连向每个入点流量为[0,inf][0,inf][0,inf],边权ppp的边,代表买纸巾每个出点向ttt连流量[0,inf][0,inf][0,inf],边权000的边,代表不洗纸巾outiout_iouti向ini+nin_{i+n}ini+n连流量[0,inf][0,inf][0,inf]边权sss的边,代表这天用完的纸巾去慢洗outiout_iouti原创 2021-03-21 13:50:42 · 243 阅读 · 0 评论