多校
L_0_Forever_LF
一个热爱OI的OIer
展开
-
hdu5752 2016 Multi-University Training Contest 3 Sqrt Bo 解题报告
应号召.........又水了一发博客题意大概是说,给你一个数n看完觉得挺水的,事实上确实不难打个表,看哪些值是1-5次向下取整的开根能取到1的极限,然后判一下大小就没问题了(判大小打错了卡我好久.........毕竟蠢)#include#include#include#include#include#include#include原创 2016-08-29 15:04:11 · 552 阅读 · 0 评论 -
BZOJ3847: ZCC loves march
每个点如果不考虑被分裂出去,他至多只会被合并一次,维护两个set,每次合并可以暴力找出这一行/列的所有点,并查集资瓷一下合并成一个点,每次分裂可以直接新建一个点代表这个分出去的点code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>原创 2018-01-03 12:29:17 · 434 阅读 · 0 评论 -
BZOJ3850: ZCC Loves Codefires
考虑最优的顺序满足什么性质 设两个部件A,B顺序为A在B前面,费用分别是a,b,耗时ta,tb,中间部分费用和S,耗时和T 如果最优顺序中A在B前面(A,B前后的部件显然不需要考虑),则有 ata+Sta+b(ta+T+tb)<btb+Stb+a(tb+T+ta)at_a+St_a+b(t_a+T+t_b)<bt_b+St_b+a(t_b+T+t_a) 得Sta+bta+bT<Stb+a原创 2018-01-03 14:15:47 · 326 阅读 · 0 评论 -
BZOJ3862: Little Devil I
肯定是树剖做分析一下3种操作 1:翻转一条链,直接翻 2:翻转与一条链相邻的边 可以发现,与一条链相邻的边中,是与父亲相连的边只有顶端的那一条,这一条可以直接暴力翻转,然后我们重新定义与链相连的边是链上每个点和儿子相邻的边中不在链上的边 考虑链上每个点和儿子的边,按轻重分类,对于轻边,我们也不需要考虑他们,因为查询时遇到的轻边是log条的,我们可以对这个点打标记,查询时暴力查询每条轻边父亲的原创 2018-01-13 09:54:42 · 315 阅读 · 0 评论 -
BZOJ3863: The Revenge of the Princess’ Knight
一个环,把他分割成恰好k段,使字典序最大的段最小 可以旋转 这题和code festival 2017 qual B 的F挺像的 不过那题是给你字符,让你随便拼,这题倒着理解是把环上相邻的字符拼在一起直到剩下k段 但是贪心的思想是类似的把一开始的所有字符视作一个串Si,把这n个串和他们在环上前一个串Ti塞进一个multiset,每次取出最大的串Sx(如果有多个最大的串就取出Tx最小的)原创 2018-01-13 10:18:05 · 408 阅读 · 0 评论 -
BZOJ3864: Hero meet devil
这题吼厉害呀,Orz cls假设我们知道了最终串T,考虑求T和S求LCS的过程,f[i][j]表示串T的前i位和串S的前j位的LCS最长是多少,有f[i][j]=max(f[i−1][j],f[i][j−1],f[i−1][j−1]+1)f[i][j]=max(f[i-1][j],f[i][j-1],f[i-1][j-1]+1) 易证0=f[i][j]−f[i][j−1]=10,我们可以对这原创 2018-01-13 15:30:48 · 439 阅读 · 0 评论 -
BZOJ3851: 2048
显然只有2的幂次对产生2048有用,即20,21,22....2112^0,2^1,2^2....2^{11} f[i][j]表示前i个2的幂次,合并了j个2i2^i的子序列数code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>原创 2018-01-04 22:06:02 · 256 阅读 · 0 评论 -
BZOJ3853: GCD Array
对原序列中所有(x,m)=d的ax+v,询问前缀和 对这个修改推一波柿子(以下省略下取整) v∑nx=1(x,m)=d−>v\sum_{x=1}^n(x,m)=d-> v∑n/dx=1(x,m/d)=1−>v\sum_{x=1}^{n/d}(x,m/d)=1-> v∑n/dx=1∑D|(x,M)μ(D)−>v\sum_{x=1}^{n/d}\sum_{D|(x,M)}μ(D)-> v∑D|原创 2018-01-05 08:02:23 · 393 阅读 · 0 评论 -
BZOJ3866: The Romantic Hero
nf[i][j]表示1~i,异或和为j的方案数,g[i][j]表示i~n,与起来为j的方案数 算答案的时候要去重 比如枚举分界点i,限制i一定在左集合内,就可以不重不漏了code:#include#include#include#include#include#include#include#include#include#include#include#i原创 2018-01-15 21:40:55 · 285 阅读 · 0 评论 -
BZOJ3867: Nice boat
每次区间改成一个数,或者所有>=x的数和一个数x取gcd 和一个数取gcd大概log次就取成1了 又有区间覆盖 线段树维护一下这个区间是不是全部相同,全部相同就一起改否则递归下去暴力改 复杂度大概是nlog^2的?code:#include#include#include#include#include#include#include#include#inclu原创 2018-01-15 21:45:22 · 227 阅读 · 0 评论 -
BZOJ3868: The only survival
根据1到i的最短路dis[i],将原图中的点分成k+2层0~k+1,k+1代表>=k 枚举每一层的点数,然后做个n^2的dp算这种分层图连边的方案数,再乘个这种分层的组合数 dp算的时候,如果算0~i-1层的点连向i层的点的连边方案数,用使其距离>=i的方案数减去使其距离>i的方案数就行了复杂度大概是O(CKNn2logn)O(C_N^Kn^2logn)的吧 code:#includ原创 2018-01-15 22:03:35 · 454 阅读 · 0 评论 -
BZOJ3855: Light
一开始有些灯是灭的有些灯是亮的,每次选一个位置,翻转他四个相邻的灯的状态,他的状态可翻可不翻轮廓线dp 有一个朴素的四进制状态,代表每个位置是否是亮的及操作次数的奇偶 但是4^n*n^2会T 考虑减少状态 注意到当前位置上一行的对应位置,如果是亮的,当前位置一定要操作,而一次操作之后不管上一行是否会翻转当前位置,因为操作时中心格可翻可不翻,他的两种状态都能够到达,所以当一个位置是亮的时候没有原创 2018-01-07 16:45:23 · 276 阅读 · 0 评论 -
BZOJ3857: Multiplication table
给了一个K进制的乘法表,给0~K一个映射,给出映射后的乘法表要求复原这个映射0和1是很容易知道对应哪个的 对于2~K-1(%dalao发现)有一个规律…,即x的那一行/列的乘积,首位数字有x种…. 然后就AC了… 小心PE..code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#inc原创 2018-01-09 17:06:02 · 292 阅读 · 0 评论 -
BZOJ3858: Number Transformation
这个结论不明显啊… 这种题还是打表找规律吧结论:如果当前的数是x,进行到第i次操作,若i>x√i>\sqrt x,则之后的每次操作x只会加一个不变的定值x/ix/i证明: 当i>x√i>\sqrt x时,设x=kix=ki,则i>x√,k<x√i>\sqrt x,k<\sqrt x,要使x变成(i+1)的倍数,有一个解是(i+1)k=x+k>x(i+1)k=x+k>x,我们要求新的值最小,但(i原创 2018-01-09 17:13:45 · 284 阅读 · 0 评论 -
BZOJ3861: Tree
因为反正也不知道哪个集合对应哪个,可以先将点集做一个映射,所以我们可以将点集变成{1,2,3,4}{5,6}{7,8,9}类似这样,好看又方便处理每个点集连向的点要么是他前面要么后面,可以f[i][j]表示前i个点集,还有j个点集没有匹配点,图的方案数,因为知道了i和j,前面还有多少个点可供匹配就知道了,没有必要用额外的一维表示然后就可以dp啦转移的话我是每个点集内枚举每个点转移,f[i][j][0原创 2018-01-10 20:33:53 · 282 阅读 · 0 评论 -
BZOJ3846: ZCC loves words
注意到模数5047621=179*173*163 拆成这3个质数算,EXCRT合并 建立AC自动机,在上面dp,套个矩乘 但是发现在i位置匹配一个长度为k的单词j,贡献是(i+k)*prime[j],对于不同的i贡献不同,又因为模数<200,最多只有100+种矩阵,处理出循环节就可以矩乘了code:#include<set>#include<map>#include<deque>#inc原创 2018-01-03 11:55:46 · 335 阅读 · 0 评论 -
BZOJ3844: ZCC loves cards
朴素的暴力是Cknk!k2C_n^kk!k^2,但事实上很多组合根本不可能达到ans,所以枚举了一个组合后先忽略一定是连续的异或和的限制,2k2^k判答案是否有可能超过ans,有可能再k!k2k!k^2找,在随机数据下表现良好QAQcode:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#inc原创 2017-12-25 10:49:44 · 362 阅读 · 0 评论 -
hdu5755 2016 Multi-University Training Contest 3 Gambler Bo 解题报告
这题打的我好伤心.............题意:给一个N*M的矩阵,矩阵里的元素值为0,1,2中的一个,每次可以选择一个元素(x,y),他的值+2,上下左右四个值+1,矩阵里的元素如果超过2,他们需要 mod 3,问你怎么操作才能使矩阵里的所有元素都为0,输入数据保证有解。题解的话,这类题一般是用高斯消元做的,设n*m个元素每个的操作次数为x[i],然后根据题意可以原创 2016-08-31 14:35:58 · 551 阅读 · 0 评论 -
hdu5754 2016 Multi-University Training Contest 3 Life Winner Bo 解题报告
日常blog恩题意:Bo 和他的女朋友 G 在一起玩游戏,游戏在一个N*M棋盘上进行,一开始有一个棋子在(1,1),谁先将棋子移到(N,M),谁就胜利,如果无法移到(N,M),则打平。游戏有四种棋子,第一种:王第二种:车第三种:马第四种:后棋子的走法和国际象棋相同,每次移动只能向右或者向下移动题解:可以将除了第三种游戏之外的游戏转化成在行原创 2016-08-30 14:35:54 · 502 阅读 · 0 评论 -
hdu5758 2016 Multi-University Training Contest 3 Explorer Bo 解题报告
感觉最近都没状态不知道为什么。。。。一道不难的题不会做,看了题解发现自己好蠢。。。。题意:给一颗n个节点的树,问你用最少的链覆盖这棵树上所有的边(可以重复覆盖),链的长度和最小为多少链的长度=覆盖的边的数量题解:树形DP首先,如果要覆盖,最少需要(n+1)/2条链,链的两端肯定是2个叶子节点,如果叶子节点数是奇数,那么有一条链由一原创 2016-09-15 21:53:25 · 671 阅读 · 0 评论 -
hdu 5821 2016 Multi-University Training Contest 8 Ball 解题报告
题意:给你n个盒子,每个盒子里可能有球或者没有,告诉你球的颜色,没有就是0,m次操作,每次操作可以把一个区间里的球都拿出来,重新放进去,问你m次操作后能不能到达目标状态 每个盒子最多放一个球题解:这是一道贪心假如对于这样一排盒子1 0 0 1 1 3 2 1目标状态是 3 2 0 0 1 1 1 1我们将初始状态颜色为1的球拿出来,原创 2016-09-22 22:16:39 · 532 阅读 · 0 评论 -
hdu 5823 2016 Multi-University Training Contest 8 color II 解题报告
题意: 给你一个图,求出每个非空点集染色需要的最少的颜色数,如果有边相连的点颜色不能相同题解:一开始口胡了一个貌似正确的搜索就上了,敲完上去WA了,拍下发现这样有问题....好吧说正解其实就是要把每个点集分成若干个独立集(独立集就是所有点两两不相连),因为每种颜色染得是一个独立集,要使需要的颜色数最少,就要把点集分成尽量少的独立集,,原创 2016-09-25 09:31:33 · 517 阅读 · 0 评论 -
hdu 5759 2016 Multi-University Training Contest 3 Gardener Bo 解题报告
这题。。。。不想评价了题意:给一棵树,两个操作,每次将一个点和他的孩子,孙子节点的值+c 或询问 f(u),题解:对于每次加值的操作,我们可以分别算出对这些点加了c后,对于其他点的f值的贡献,官方题解给了公式,其实还是比较好懂的然后对于4种贡献,我们分开维护1:对于每个点,(size(v)+1)是固原创 2016-09-22 13:25:37 · 1013 阅读 · 0 评论 -
hdu 5828 2016 Multi-University Training Contest 8 Rikka with Sequence 解题报告
题意:一个序列,三种操作,每次将(l,r)(l,r)内的每个aia_i加xx,每个aia_i等于ai−−√\sqrt{a_i},询问(l,r)(l,r)的和题解:先讲一下官方的题解: 大概是说现将序列差分,然后区间加的话,在l,rl,r两个位置单点改一下,求和的时候,al+al+1+...+ar=(b1+b2+...+bl−1)∗(r−l+1)+bl∗(r−l+1)+bl+1∗(r−l)+..原创 2016-09-27 08:47:42 · 430 阅读 · 0 评论 -
hdu5756 2016 Multi-University Training Contest 3 Boss Bo 解题报告
吐槽一下为什么绍兴一中出的题码量这么大题意: 给你一个n个点,以1为根的树,Q个询问,每次问你如果把若干个点的子树删掉,剩下的点里面,到P点的距离和,距离的最大值或问距离的最小值,如果点删完了,就输出-1。强制在线的,每次给你一个p,实际的P=(p+lastans)%n +1,lastans是上次的答案,如果是-1或第一组询问,lastans=0。原创 2016-09-02 17:37:08 · 1099 阅读 · 0 评论 -
hdu5753 2016 Multi-University Training Contest 3 Permutation Bo 解题报告
题意是给你一个长度为n的序列c,然后h序列的1~n是1-n的一个排列,h[0] = h[n+1] = 0 , 定义 f( h ) = Σ c[i] ( h[i]>h[i-1] && h[i] > h[i+1] ) , 然后求这个 f( h ) 的期望原创 2016-08-29 21:51:01 · 960 阅读 · 0 评论 -
hdu5831 Rikka with Parenthesis II 2016 Multi-University Training Contest 8 解题报告
日常吐槽可跳过送分的一道贪心我错这么多遍还看题解我是不是可以退役了…………….题意给你一个括号序列,必须交换两个不同的括号,问有没有一种交换方法使得交换后的序列是一个合法的括号序列题解贪心 将(看作+1,)看作-1,那么一个合法的序列,任意一个位置的前缀和都要是一个非负数,整个序列的和必须是0,那么考虑一次有意义的交换,只会是前面的-1和后面+1交换,那么在这两个数之间的前缀和+2,其他不受影响,原创 2016-10-03 19:09:08 · 729 阅读 · 0 评论 -
hdu 5730 2016 Multi-University Training Contest 1 Shell Necklace 解题报告
题意大概是说有n个石头,要你分成若干部分,一个部分的数量为k,那么他的价值就是a[k],这n个石头的价值就是每部分的价值的乘积,求所有分这n个石头的方法的价值和对313取模然后看完题意可以想到一个简单的DP,设f[i]表示i个石头的价值和,可以得到一个方程 f[i] = ∑f[j]*a[i-j] ,初始化一原创 2016-08-29 09:20:37 · 848 阅读 · 0 评论 -
BZOJ3840: ZCC Loves COT
正解十分鬼畜…对标记的标记打标记….由于我匮乏的空间想象能力,我果断打了O(n3+nm+nq)O(n^3+nm+nq)的二维情况,然后卡过去了233考虑一维的情况,就是对l~r区间+1,差分后在l,r+1分别打标记,所有操作完扫一次 问题拓展到二维时类似,观察对每一维打的标记, +1,-1显然可以分开维护,+1标记是一列下去的,-1标记是沿斜线下去的,所以我们可以这样 用紫色的标记给+原创 2017-12-25 08:15:01 · 430 阅读 · 0 评论 -
BZOJ3841: ZCC Loves Intersection
两条线段有交的充要条件是每一维上都有交qwq 因为每个线段都平行一个坐标轴,他的表示应该是(l~r,x1,x2,x3…xn) A和B相交和A和C相交显然没有任何关系 算粗A,B相交的概率,乘上两两的组合数就行了 两条线段相交的概率画一下柿子就行了吧 然后写个高精..code:#include<set>#include<map>#include<deque>#include<queue原创 2017-12-25 08:22:02 · 393 阅读 · 0 评论 -
BZOJ3843: ZCC loves Army
把树转成左儿子右兄弟的那种二叉树的形式 发现一个点能且仅能给他的子树传递order,询问3就变成了询问一个点到根有多少个点 对于传递message,可以给每个点定一个编号0的虚儿子,给他赋权1,就变成了询问两点间路径的权值和,注意要特判一个点是另一个点的祖先的情况,bzoj上的数据有误,不判这个才能过,hdu上的数据是对的可以去那里交 对于操作1,把某个人的一段儿子截下来,可以用n棵splay原创 2017-12-25 08:37:14 · 503 阅读 · 0 评论 -
BZOJ3859: Periodic Binary String
我们可以旋转串T,使得l~r等价于0~r-l 根据(r-l)%k可以将T分成T1,T2两部分,问题变成满足0<=a<2|T1|,0<=b<2|T2|0<=a<2^{|T1|},0<=b<2^{|T2|},pa+qb≡x(Mod p)pa+qb≡x (Mod\ p)的解数 也即0<=a<A,0<=b<B0<=a<A,0<=b<B 记A=k1p+ka,B=k2p+kbA=k1p+ka,B=k2p+原创 2018-01-10 22:11:58 · 406 阅读 · 0 评论