乱搞与思维
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
Atcoder:AGC004F Namori
传送门先考虑树,树是一个二分图。看到是二分图并且每次是对两边的同色的点反色可以想到转化:让奇数层的点为黑,偶数为白,变成每次可以交换两个点的颜色。把黑看成 −1-1−1,白看成 111,那么求一个子树和,考虑每一条边的贡献可以得到 ans=∑i=1n∣sumi∣ans=\sum_{i=1}^{n} |sum_i|ans=∑i=1n∣sumi∣如果根的 sumsumsum 不为 000,...原创 2019-03-02 16:43:24 · 545 阅读 · 0 评论 -
CF961F k-substrings
题意给定一个字符串 SSS 求所有的 S[i,n−i+1]S[i,n−i+1]S[i,n-i+1] 的 borderborderborder 长度(最长的前缀等于后缀),要求长度是奇数 n≤106n≤106n\le 10^6Sol首先发现每次求的串都是原串去掉前后 i−1i−1i-1 位得到的串 一个套路,把串翻折,又因为 borderborderborder 长度可能大于...原创 2018-06-08 07:49:46 · 652 阅读 · 0 评论 -
CF528D Fuzzy Search
题意有两个基因串SSS和TTT,他们只包含AGCTAGCTAGCT四种字符。 现在你要找出TTT在SSS中出现了几次。 有一个门限值k≥0k≥0k≥0 只要T[i]T[i]T[i]和S[j−k]S[j−k]S[j-k]到S[j+k]S[j+k]S[j+k]有相同的,就视为匹配 (1≤|T|≤|S|≤200000,0≤k≤200000)(1≤|T|≤|S|≤200000,0≤k≤200...原创 2018-05-31 12:27:04 · 611 阅读 · 0 评论 -
Bzoj1495: [NOI2006]网络收费
题面传送门Sol把每个节点都加上2n−12n−12^n-1 那么非叶节点的编号就是111到2n−12n−12^n-1 就可以把它当成是一棵线段树了然后看收费的方法 意思就是AAA多就收AAA的 否则收BBB的费用可以处理出每个叶节点经过某个LCALCALCA的费用和 那么枚举这条链上的非叶节点的AAA是否大于BBB就可以算出要收的费用了然后设f[i][j]f[...原创 2018-04-04 08:17:17 · 330 阅读 · 0 评论 -
Bzoj1496: [NOI2006]千年虫
题面传送门Sol左右可以分开搞 然后就是要形成一个类似梳子的东西 设f[0/1][i][j]f[0/1][i][j]f[0/1][i][j] 000凹,111凸,iii为行,可以滚一维,jjj为该行长度 f[0][i][j]=min(f[0][i−1][j],f[1][i−1][k])+j−a[i];k>jf[0][i][j]=min(f[0][i−1][j],f[1...原创 2018-04-03 20:35:23 · 440 阅读 · 0 评论 -
Bzoj4289: PA2012 Tax
题面传送门Sol巧妙的建图+DijkstraDijkstraDijkstra 考虑把边看成点,那么显然暴力建图的边数是m2m2m^2的 考虑优化 把max(a,b)max(a,b)max(a, b)变成a+max(b−a,0)a+max(b−a,0)a+max(b-a,0) 把每个点连出的边按权值从小到大排序 每个边向后面的边连b−ab−ab-a, 后面向前面连000 ...原创 2018-03-28 13:48:47 · 218 阅读 · 0 评论 -
Bzoj3714: [PA2014]Kuglarz
题面传送门Sol假如我们知道所有的前缀和数组,差分以下就得到了答案对于一组区间[l,r][l,r][l, r] 我们就知道了S[r]−S[l−1]S[r]−S[l−1]S[r]-S[l-1]的值,SSS即前缀和 那么如果把这看成一条边(l−1,r)(l−1,r)(l-1,r),那么最后只需要所有的点联通就可以求出所有点对之间的关系 那不就是最小生成树了 直接n2n2n^...原创 2018-03-28 13:26:57 · 155 阅读 · 0 评论 -
Bzoj4152: [AMPPZ2014]The Captain
题面传送门Sol分别按XXX轴,YYY轴从小到大排序,相邻两个点建边权为ΔxΔx\Delta x或ΔyΔy\Delta y的边 然后跑DijkstraDijkstraDijkstra# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) mems...原创 2018-03-28 13:20:28 · 214 阅读 · 0 评论 -
Luogu1261: 服务器储存信息问题
题面传送门Sol我们可以考虑每种rankrankrank的点uuu会被哪些点vvv感兴趣 如果dis[u][v]<dis[u][v]<dis[u][v]rankrankrank大于rank[u]rank[u]rank[u]的点到vvv的距离 那么vvv一定对uuu感兴趣我们可以先101010遍最短路,处理出每种rankrankrank的点到所有点的最短路 计f...原创 2018-04-03 09:25:58 · 342 阅读 · 0 评论 -
Bzoj4573: [Zjoi2016]大森林
题面传送门Sol我太菜了,有点思维的题根本不会sto HJTsto HJTsto \ HJT考虑一个111操作,相当于是l−1l−1l-1和lll处长节点的位置不同了 那么在l−1l−1l-1处长,然后接在lll就好了 rrr和r+1r+1r+1同理考虑怎么来做 虚点的思想 维护一个全局的树,上面有虚点和实点 每次000操作直接长实点lin...原创 2018-04-09 21:49:47 · 343 阅读 · 0 评论 -
Bzoj2118: 墨墨的等式
题面传送门Sol和这道题很像Luogu跳楼机 找到最小的那个a[i]a[i]a[i]设为mnmnmn SPFASPFASPFA算出得到每个值为iii的是否能凑出来,设为f[i]f[i]f[i]实际上iii变成i%mni%mni\%mn,所有的这一类都可以通过mnmnmn这个桥梁得到 那么直接求到i%mni%mni\%mn就好了最后统计[0,Bmax][0,Bmax][0,...原创 2018-04-02 14:57:23 · 266 阅读 · 0 评论 -
[CTSC2008]祭祀(构造方案)
前面的话这道题显然就是最长反链根据 DilworthDilworthDilworth 定理:最小链覆盖数 = 最长反链长度然后传递闭包跑匹配即可luoguluoguluogu交了一下,WAWAWA 了QAQQAQQAQ本来各种 OJOJOJ 上都是只要求最长反链,不需要构造方案虽然原题要构造然后 luoguluoguluogu 上的同志写了个 SPJSPJSPJ, ...原创 2018-08-01 13:33:01 · 353 阅读 · 0 评论 -
Luogu4887 第十四分块(前体)
sto lxllxllxl orz考虑莫队,每次移动端点,我们都要询问区间内和当前数字异或有 kkk 个 111 的数字个数询问 [l,r][l,r][l,r] 可以再次离线,拆成询问 [1,l−1][1,l-1][1,l−1] 和 [l,r][l,r][l,r]然后考虑莫队要移动 [l,r][l,r][l,r] 的 lll 到 ppp假设 p&gt;lp&gt;lp>...原创 2018-11-02 14:18:06 · 215 阅读 · 0 评论 -
LOJ2522:[FJOI2018]邮递员问题(乱搞)
传送门乱搞。可以发现如果起点在左边界,终点在右边界的时候上下走的点一定是连续的(可能吧)那么可以设 fi,j,0/1f_{i,j,0/1}fi,j,0/1 表示当前上面到 iii,下面到 jjj,当前在上面/下面的最短距离。如果起点不在左边界,终点不在右边界,那么就乱搞。对于左边,如果向左的时候下去了再上来一定不会优与直接走过去,那么就分两种情况:左下右 或者 直接先左再次原路返回向右...原创 2019-02-28 11:50:20 · 414 阅读 · 0 评论 -
AGC008E:Next or Nextnext
传送门考虑转化成图论问题,iii 向 pip_ipi 连边,那么合法方案一定是形成了若干个简单环或自环考虑一个环内的情况:如果 ai=pia_i=p_iai=pi,那么 iii 向 aia_iai 连边的图和原图相比不变如果 ai=ppia_i=p_{p_i}ai=ppi,a. 环长为奇数且 &gt;1&gt;1>1,那么 iii 向 aia_iai...原创 2019-02-09 19:31:51 · 303 阅读 · 0 评论 -
AGC009:Eternal Average
传送门好神啊直接考虑一棵 n+mn+mn+m 个叶子的 kkk 叉树,根结点权值为 ∑i∈m(1k)deepi\sum_{i\in m}(\frac{1}{k})^{deep_i}∑i∈m(k1)deepi对于一个 deepdeepdeep 的序列如果 ∑i∈m(1k)deepi+∑i∈n(1k)deepi=1\sum_{i\in m}(\frac{1}{k})^{deep_i}+\...原创 2019-02-09 16:40:01 · 232 阅读 · 0 评论 -
AGC006C Rabbit Exercise
传送门设 fi,jf_{i,j}fi,j 表示兔子 iii 在当前 jjj 轮的期望位置对于一次操作 fi,j+1=12(2fi−1,j−fi,j)+12(2fi+1,j−fi,j)=fi−1,j+fi+1,j−fi,jf_{i,j+1}=\frac{1}{2}(2f_{i-1,j}-f_{i,j})+\frac{1}{2}(2f_{i+1,j}-f_{i,j})=f_{i-1,j}+f_{...原创 2019-02-08 11:00:46 · 222 阅读 · 0 评论 -
Codeforces 750 F:New Year and Finding Roots
传送门首先如果一开始就找到了一个叶子,那么暴力去递归找它的父亲,每次随机一个方向(除了已知的儿子)走深度次,如果走到了一个叶子就不是这个方向(设根的深度为 111)这样子最后到达深度为 333 的点需要花费 111111 次注意到此时只有与该点距离不超过 222 的点可能是根,这样的没有询问过的点不超过 666 个所以只要询问 555 次,一共 161616 次如果一开始不是叶子,那么尝...原创 2019-02-15 14:33:35 · 254 阅读 · 0 评论 -
LOJ #2985. 「WC2019」I 君的商店
传送门搬题解QwQ首先最大值一定为 111,直接扫一遍两两比较 O(2N)O(2N)O(2N) 求出最大值设最大值位置为 aaa,对于任意两个没有确定的位置 x,yx,yx,y询问 [a,x+y][a,x+y][a,x+y],如果 a≤x+ya\le x+ya≤x+y 那么 x,yx,yx,y 的最大值为 111,否则 x,yx,yx,y 最小值为 000再询问 [x,y][x,y][x...原创 2019-02-02 09:34:55 · 782 阅读 · 0 评论 -
UOJ169. 【UR #11】元旦老人与数列
传送门考虑用 segment tree beatssegment~tree~beatssegment tree beats 那一套理论,维护区间最小值 mnmnmn 和严格次小值 sesese那么可以直接 mlog2nmlog^2nmlog2n 维护前三个操作考虑维护历史最小值,先维护历史最小标记写了写发现 maxmaxmax 那个修改不好操作对于...原创 2019-01-10 18:52:10 · 286 阅读 · 0 评论 -
LOJ6066:「2017 山东一轮集训 Day3」第二题
传送门二分答案 kkk,考虑如何 hashhashhash 使得做起来方便把每个点挂在 k+1k+1k+1 级祖先上,考虑在祖先上删除这道题巧妙在于其可以对于 dfsdfsdfs 序/括号序列 hashhashhash这样在 k+1k+1k+1 级祖先上暴力删除就好了# include <bits/stdc++.h>using namespace std;typedef ...原创 2018-12-31 10:50:47 · 539 阅读 · 0 评论 -
CF932G Palindrome Partition
传送门Sol首先 nnn 为奇数肯定无解当 nnn 为偶数时老套路,把串 SSS 变成 S1SnS2Sn−1S_1S_nS_2S_{n-1}S1SnS2Sn−1,设为 TTT那么满足条件的 SSS 的划分相当于 TTT 中的划分,使得每一段为长度为偶数的回文串下面就只考虑 TTT 的划分设 fif_ifi 表示前 iii 个字符合法划分的方案数,用 PAMPAMPAM 可以...原创 2018-12-21 18:48:21 · 287 阅读 · 0 评论 -
BZOJ5372: PKUSC2018神仙的游戏
传送门Sol自己还是太 naivenaivenaive 了,上来就构造多项式和通配符直接匹配,然后遇到 borderborderborder 相交的时候就 gggggg 了神仙的游戏蒟蒻还是玩不来一个小小的性质:存在长度为 lenlenlen 的 borderborderborder 的充要条件是 ∀i,si=sn−len+i\forall i,s_i=s_{n-len+i}∀i,si...原创 2018-12-01 22:44:10 · 246 阅读 · 0 评论 -
Luogu3403: 跳楼机
题面传送门Sol有一个显然的想法 处理出y,zy,zy, z能凑出的高度 然后这些高度凑一些xxx就可以得到其它的高度那么可以把这些y,zy,zy, z凑出的高度对xxx取模,其它的用xxx来填补 所以设f[i]f[i]f[i]表示y,zy,zy, z凑出高度%x%x\%x为iii需要的最低高度 那么答案就是 ∑i=0x−1⌊(n−f[i])x⌋+1∑i=0x−1⌊(...原创 2018-04-02 14:24:12 · 337 阅读 · 0 评论 -
Bzoj5212: [Zjoi2018]历史
题面传送门Sol以下多数东西都是复制题解的 外省体验赛这题顺利获得了101010分的好成绩。。。显然是AccessAccessAccess操作,已知每个点AccessAccessAccess的次数,确定一种顺序,问轻重链切换次数的最大值 考虑iii处的切换次数,如果连续两次AccessAccessAccess在同一子树或者都是它自己,那么显然两次AccessAccessAc...原创 2018-03-31 08:04:39 · 410 阅读 · 0 评论 -
[HNOI2014]米特运输
显然知道一个节点就可以推出整棵树 然而直接乘会爆longlong 所以考虑取log 最后排序算众数即可# include # include # include # include # include # include # define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeo原创 2017-12-12 19:19:46 · 232 阅读 · 0 评论 -
LightOJ1259 Goldbach`s Conjecture
题面T组询问,每组询问是一个偶数n 验证哥德巴赫猜想 回答n=a+b 且a,b(aInputInput starts with an integer T (≤ 300), denoting the number of test cases. Each case starts with a line containing an integer n (4 ≤ n ≤ 107,原创 2018-01-09 11:09:00 · 258 阅读 · 0 评论 -
LightOJ1282 Leading and Trailing
题面给定两个数n,k 求n^k的前三位和最后三位InputInput starts with an integer T (≤ 1000), denoting the number of test cases. Each case starts with a line containing two integers: n (2 ≤ n Solution后面一问是搞笑的原创 2018-01-09 10:56:58 · 223 阅读 · 0 评论 -
Bzoj2132: 圈地计划
题面戳我Solution一般这种有两种选择的题都可以转化成最小割来做 所以我们先把所有的代价累加,求最小损失考虑第一二种代价,分S,T连就好了。。。 连完你会发现,第三种怎么连??? 要求在同一块儿的损失,怎么用连边表示??这个时候只能Orz Zsy大佬了 不同类相邻的格子 看到相邻我们想到黑白染色 那么S只连黑色的某区的边和白色的不同区的边,T相反 相邻的黑白点原创 2018-01-08 17:17:25 · 429 阅读 · 0 评论 -
[BZOJ2127]happiness
题面戳我Solution一般这种题就转化成最小割做 把最大收益转化成最小损失,先把所有收益加入ans考虑建图,设S集合为选文的,T为选理的 单个选的比较简单,就直接连就好了: 直接令容量(S,x)=选文科的收益,(x,T)=选理科的收益即可。 那么两个一起选的怎么连? 设两个人x,y,他们俩一起选文的收益是a,一起选理的收益是b。 四原创 2018-01-08 15:20:47 · 256 阅读 · 0 评论 -
[USACO15FEB]审查(黄金)Censoring (Gold)
题面传送门SolAC自动机+栈,每次匹配到栈顶减去这个单词的长度,回到之前的状态 最后栈中留下的就是答案# include # define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;原创 2018-01-22 19:04:08 · 338 阅读 · 0 评论 -
[SCOI2007]降雨量
ST表,再大力讨论一下(因为lower_bound和upper_bound,WA了一次)# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;cons原创 2017-12-30 08:15:03 · 467 阅读 · 0 评论 -
[Hnoi2013]消毒
显然选择的区域有一维要是1,其他维要最大 相当于问最少切多少个面才能覆盖所有点 a*b*c<=5000 那么一定有一个小于等于17 枚举这一维切不切,跑二分图即可TLE代码千万别复制# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(原创 2018-01-04 22:36:38 · 236 阅读 · 0 评论 -
[SDOI2010]粟粟的书架
前50分就开两个数组,一个sum[i][j][k],表示1,1到i,j大于k的和,num[i][j][k]表示个数,二分一下就好 后50分用主席树,主席树上二分# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using name原创 2018-01-04 18:41:12 · 333 阅读 · 0 评论 -
[ZJOI2006]书架(树状数组水过)
这道题显然平衡树,splay,treap什么的随便切 然而我不想打,决定水过这道题 把空间开3倍,树状数组维护它前面的树的个数,开个id数组记录位置 找一个数排名直接二分加求前缀和,log^2的搞一搞 把一个数放在顶/低 直接丢在当前顶/低的前后就可以了不然开3倍数组干嘛 c常数小堪比log的平衡树居然还快一些# include <bits/stdc++.h># define RG r原创 2018-01-04 16:43:42 · 369 阅读 · 1 评论 -
BZOJ4650 : [NOI2016]优秀的拆分
题面传送门Sol求个以i" role="presentation">iii为结尾的AA" role="presentation">AAAAAA串的个数和以i" role="presentation">iii为开头的AA" role="presentation">AAAAAA串的个数 乘法原理即可,暴力求有95分 而你会发现,枚举l,经过i" role="presentation原创 2018-01-26 20:46:51 · 240 阅读 · 0 评论 -
Luogu4137:Rmq Problem/mex
题面传送门Sol这题可能是假的 离线莫队搞一搞,把数字再分块搞一搞,就行了# include # define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int _原创 2018-01-27 11:21:44 · 283 阅读 · 0 评论 -
Bzoj2654:tree
题目BzojSol神题! 二分所有的白边减去一个值,这样做kruskalkruskalkruskal就会多选一些白边 就这样 二分范围为[−101,101][−101,101][-101, 101]!!!# include <bits/stdc++.h># define RG register# define IL inline# define Fi...原创 2018-03-14 15:37:14 · 253 阅读 · 0 评论 -
UOJ#288:基础数据结构练习题
题面UOJSol玄学,不会势能分析 所以 维护区间最大最小值 把开根变成区间减法 如果最大值开根后的变化量和最小值的相等,就直接打个减法lazylazylazy# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) memset(a, b, s...原创 2018-03-16 15:58:21 · 218 阅读 · 0 评论 -
Bzoj3211: 花神游历各国
题面BzojSol暴力开根,一个数开根到小于等于111就不用管了,维护区间maxmaxmax,max<=1max<=1max原创 2018-02-23 11:49:41 · 197 阅读 · 0 评论