Loading [MathJax]/jax/element/mml/optable/MiscTechnical.js

10 2018 档案

摘要:割点模板 为什么我一直没有写。。。 阅读全文
posted @ 2018-10-29 09:53 SWHsz 阅读(178) 评论(0) 推荐(0) 编辑
摘要:tarjan缩点+DAG上最长路。 求一个以1为起点的最长路和一个以1为终点的最长路,然后找那个逆行边就行了。 然后这个我RE了好久,原因是vectorsize() return的是一个unsigned int值,如果直接size()1,会让显示的值变成 阅读全文
posted @ 2018-10-29 08:57 SWHsz 阅读(199) 评论(0) 推荐(0) 编辑
摘要:我太弱了。。。 单调队列优化DP+二分答案。 cpp include include include include include include include include include include include include define fo(i,j,k) for(int i= 阅读全文
posted @ 2018-10-25 21:43 SWHsz 阅读(547) 评论(0) 推荐(0) 编辑
摘要:各种模板的集合。 1.手写堆 阅读全文
posted @ 2018-10-25 20:06 SWHsz 阅读(258) 评论(0) 推荐(0) 编辑
摘要:背包。 cpp include include include include include include include include include include include include define fo(i,j,k) for(int i(j);i=k;i ) define g 阅读全文
posted @ 2018-10-25 11:33 SWHsz 阅读(177) 评论(0) 推荐(0) 编辑
摘要:预处理出来所有的双平方数,然后枚举地一个和第二个数。 中间要加一个剪枝。因为知道了首项和公差和项数就能求出最后一项是不是可行的了。 阅读全文
posted @ 2018-10-25 11:23 SWHsz 阅读(309) 评论(0) 推荐(0) 编辑
摘要:统计本质不同的LIS个数。 因为本题要求的是N2级别的算法,就直接暴力统计LIS的个数了 然后统计方案数的话加入发现有之间有一个值,以它为结尾的LIS长度和当前的相等,且和当前位置的值相等,就说明已经统计过了这个LIS,就把这个位置的cnt数组赋值成0就行了。 cpp in 阅读全文
posted @ 2018-10-24 07:44 SWHsz 阅读(119) 评论(0) 推荐(0) 编辑
摘要:Keep In Touch:保持联络 Informatik verbindet dich und mich. 信息将你我连结? 发现这个方程很容易列出来。 f[i][j][k]=f[l][m][n] 但是这个方程状态是n3的,转移是n3的,时间复杂度是$O(n^6 阅读全文
posted @ 2018-10-22 17:23 SWHsz 阅读(224) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定两个长度为n的有序数列,m次询问,问将序列合在一起排序后第k大是多少 $N include include using namespace std; const int N=1000005; int a[N m; while(m ) { scanf("%d",&x); printf(" 阅读全文
posted @ 2018-10-22 16:09 SWHsz 阅读(129) 评论(0) 推荐(0) 编辑
摘要:也不知道linux叫不叫任务管理器。 Ctrl+Alt+T打开终端,输入top,就会出现一堆东西。 如果有个东西未响应了,就可以输入k+这个进程的pid就可以杀死它。 https://blog.csdn.net/pan_tian/article/details/7734789 阅读全文
posted @ 2018-10-22 16:04 SWHsz 阅读(977) 评论(0) 推荐(1) 编辑
摘要:Orz ljt12138! 设状态f[i][j]表示以i为结尾,公差为j的长度大于1的数列有几个。 然后转移方程就很好想了。 k=H[i]H[j] f[i][k]=i1j=1(f[j][k]+1) 之前的等差数列加上最后那个数形 阅读全文
posted @ 2018-10-22 15:03 SWHsz 阅读(125) 评论(0) 推荐(0) 编辑
摘要:__stdcall大佬出的题Orz 我们惊奇地发现,加入__popcount(x)__popcount(y)的奇偶数性相同,那么__popcount(x xor y)一定是偶数。 因为假如x,yi位相同,那么$\_\_popcount(x xor  阅读全文
posted @ 2018-10-22 11:44 SWHsz 阅读(150) 评论(0) 推荐(0) 编辑
摘要:分层图最短路大水题 cpp include include include include using namespace std; const int N=10005,M=50005,K=25; struct Node{ int x,k,dis; bool operator rhs.dis;} } 阅读全文
posted @ 2018-10-22 11:17 SWHsz 阅读(133) 评论(0) 推荐(0) 编辑
摘要:如果L小一点的话方程就很显然了,是$f[i]=min_{j=S}^{j include include include using namespace std; const int N=20005; int f[N],dis[N],L,S,T,M,a[N],ans,sum; bool stone 阅读全文
posted @ 2018-10-22 10:57 SWHsz 阅读(106) 评论(0) 推荐(0) 编辑
摘要:并查集按秩合并的裸题。。。 cpp include include include using namespace std; const int N=500005; int fa[N],lastans,val[N],n,Q,u,v,opt,cnt,dep[N]; bool tong[N]; int 阅读全文
posted @ 2018-10-22 08:16 SWHsz 阅读(101) 评论(0) 推荐(0) 编辑
摘要:差分+二分 题意大概是对于一个序列,每次可以给某个长度为W的序列+1,可以操作m次。问序列最小值的最大值是多少。 差分一下,每次二分到一个最小值的最大值就开始遍历整个数组,发现假如第i个数小于mid,就令ii+m1上的值加到mid cpp include includ 阅读全文
posted @ 2018-10-21 21:52 SWHsz 阅读(155) 评论(0) 推荐(0) 编辑
摘要:设计状态f[i][j]表示以i为根的子树,包含j个点的最小黑点数,g[i][j]表示以i 为子树,包含j个点的最大黑点数,然后树形背包转移即可。 每次询问的时候就看包含x在不在f[0][y]g[0][y]之间。 因为一个子图每删除一个点,再加入一个点,黑点个数的变化量不超过 阅读全文
posted @ 2018-10-19 22:16 SWHsz 阅读(219) 评论(0) 推荐(0) 编辑
摘要:TJOI2015 组合数学 和组合数学有什么关系呢。。。 本题相当与求该图的最小链覆盖 由Dilworth定理:DAG的最小链覆盖=最大点独立集 最大点独立集对于本图来说就是左下到右上一条最长路。 然后dp一下 $f[i][j]=max(max(f[i 1][j],f[i][j+1]),f[ 阅读全文
posted @ 2018-10-19 19:38 SWHsz 阅读(158) 评论(0) 推荐(0) 编辑
摘要:发现如果要凑n的钱,如果凑齐了以下钱再来一个\llcorner n/2 \lrcorner就行了。 这样我们就可以分治了。。 阅读全文
posted @ 2018-10-19 15:31 SWHsz 阅读(105) 评论(0) 推荐(0) 编辑
摘要:状态是f[i][a][b][c][d]表示第i个餐车,1号矿洞最近两顿是a,b,2号矿洞最近两顿是c,d。 给的空间是16MB,滚动数组滚动了第一维就行了 (给的变量是char是因为这个不超过256,但是并没有快多少 cpp include include include using namespa 阅读全文
posted @ 2018-10-19 14:41 SWHsz 阅读(213) 评论(2) 推荐(0) 编辑
摘要:[POI2005]BAN Bank Notes ~~POI真好玩。。~~ 如果没有记录方案的话就是一个简单的二进制或单调队列优化多重背包的问题。 但是非常难受的是要记录方案。 而且空间只给了64MB,,令人不适。。。 可以记录状态to[i][j]表示从第i个物品转移到了j体积,这个在转移的时 阅读全文
posted @ 2018-10-19 09:46 SWHsz 阅读(179) 评论(0) 推荐(0) 编辑
摘要:BZOJ2064 分裂 题面感人。。。 可以发现的是如果把所有的数先合起来,再把他们分开,这样是ans的上界,是n+m 2 现在我们把之前的国家面积视作+,之后的国家面积视作 ,就会发现如果有一个子集的sum=0,就说明我们可以让这个子集内部操作。 假设这个子集有k个数,它的操作 阅读全文
posted @ 2018-10-18 16:33 SWHsz 阅读(126) 评论(0) 推荐(0) 编辑
摘要:KMP+双向链表 由题意易知解必须满足的条件是解既是前缀也是后缀,然后就把所有的解打上标记,建出一棵fail树,然后发现如果这个串能作为解的话就是它的相邻两个之间的距离差不能超过其长度。 然后就可以用双向链表维护这个,记录一个mx表示最大差值即可。 cpp include include inclu 阅读全文
posted @ 2018-10-18 15:58 SWHsz 阅读(311) 评论(0) 推荐(0) 编辑
摘要:结论:(fib_n,fib_m)=fib_{(n,m)} 证明:参考大佬的blog OrzCTY (我怎么记得以前板板讲过Orz 然后用矩阵快速幂随便做了。。。 #include <iostream> #include <cmath> #include <cstdio> #inclu 阅读全文
posted @ 2018-10-18 11:53 SWHsz 阅读(1163) 评论(3) 推荐(0) 编辑
摘要:bzoj1098 对于每个对点,如果他俩没有直接连边,就必须放在一个楼里,所以显而易见的就是要求补图的联通块。 但是没办法直接把补图建出来。 可以用链表来维护之间没有访问过的集合。 每次从未访问的点中选一个,找没访问的集合中不与他相连的点有哪些,然后删去这些点,表示已经访问过了,并且继续找他们没有访 阅读全文
posted @ 2018-10-18 09:52 SWHsz 阅读(117) 评论(0) 推荐(0) 编辑
摘要:yyl说是用链表O(n)做 但是并脑补不出来。 发现可以用个vector记录一下每个数出现的位置,然后对于每个新序列就二分一下,找下一个数出现的离当前位置最近的位置,更新一下当前位置即可。 时间复杂度O(∑ k log k)的,不用卡常也过了。。 #include <iostream> #inclu 阅读全文
posted @ 2018-10-18 08:59 SWHsz 阅读(160) 评论(0) 推荐(0) 编辑
摘要:题面感人。。。 求从1号点出发,经过至少另一个点,走的边不重复的最小简单环。 发现对于简单环上和1号点相接的两个点的二进制表示上一定有至少一位不一样。 我们就把它二进制分组,然后在dij的时候就可以看看当前的to如果是1的话现在的点如果是分在出发点区域的就不行。 #include <iostream 阅读全文
posted @ 2018-10-17 15:17 SWHsz 阅读(253) 评论(0) 推荐(0) 编辑
摘要:bitset的操作。 因为bitset左右移很快,然后每加进来一个数相当与给所有的子集都加这个数。因为我们只关心每个数出现次数的奇偶性,然后就相当与f[i]^=f[i-x]。然后就发现对于每个数,可以让原有的xor下自身左移x位,用bitset优化即可。 #include <iostream> #i 阅读全文
posted @ 2018-10-17 09:11 SWHsz 阅读(129) 评论(0) 推荐(0) 编辑
摘要:模拟题 但是可以用STL快速判断一些东西。 可以枚举罪犯是谁,今天是周几,然后每次判断每个人的话是真的假的,然后判一下假的和不确定的加起来是不是可行。 比较坑的就是关于回车空格什么的要多注意。。。。 #include <iostream> #include <cstdio> #include <st 阅读全文
posted @ 2018-10-17 08:24 SWHsz 阅读(293) 评论(0) 推荐(0) 编辑
摘要:设状态f[i][j]表示有i个a,j个ab的期望 发现如果i+j>=k的话就再来一个b就行了。 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int mod=1e9+6+1; i 阅读全文
posted @ 2018-10-16 23:11 SWHsz 阅读(169) 评论(0) 推荐(0) 编辑
摘要:期望DP。 发现第i次的期望分数和第i-1次的连击次数有关。 设第i次连击次数是g[i] 因为是三次方,f[i]=f[i-1]+(g[i-1]*3+g[i-1]*g[i-1]*3+1)×p[i] 因为(x+1)3展开就是大概这个样子。 但是期望不可以直接乘。 所以我们维护一个次数的平方和次数即可。 阅读全文
posted @ 2018-10-16 17:36 SWHsz 阅读(91) 评论(0) 推荐(0) 编辑
摘要:阶梯型问题考虑卡特兰数有惊喜哦。。。 这个写的很明了Orz 高精度可是烦人啊。。 python大法好! a=input() c=1 for num in range (a+2,a*2+1): c=c*num for num in range (1,a+1): c=c/num print c 阅读全文
posted @ 2018-10-16 16:04 SWHsz 阅读(117) 评论(0) 推荐(0) 编辑
摘要:很多dalao用的DP 但是贪心完全是可行的。 枚举一下有多少天请小红吃饭,然后贪心的把旅行的天数尽量平均分开即可。 #include <iostream> #include <climits> #include <cstdio> #include <cstring> using namespace 阅读全文
posted @ 2018-10-16 15:40 SWHsz 阅读(86) 评论(0) 推荐(0) 编辑
摘要:1.费马小定理|欧拉定理 由费马小定理得当p为质数,(a,p)=1时,ap-1≡1 mod p 所以ap-2≡a-1 由欧拉定理当(a,p)=1但p可以不为质数,aΦ(p)≡1 mod p 2.扩展欧几里德 设a的逆元为x,则可以视作ax≡1 mod p 可以视作 ax-bp=1 然后用扩展欧几里德 阅读全文
posted @ 2018-10-16 11:57 SWHsz 阅读(186) 评论(0) 推荐(0) 编辑
摘要:缩点+lca 大水题。 洛谷恶意评分++ #include <iostream> #include <cstdio> #include <vector> #include <cstring> using namespace std; const int N=10005; int n,m,low[N] 阅读全文
posted @ 2018-10-16 11:02 SWHsz 阅读(182) 评论(0) 推荐(0) 编辑
摘要:XiaoX早就切了Orz 这道题是个组合数学题。 里面用到了卡特兰数的思想。 我们可以把这个操作放到坐标系上,一开始有个点在(0,0),然后把1看作(+1,+1),0看做(+1,-1) 然后我们就可以把问题视作从(0,0)出发,到(n+m,n-m),不经过y=-1的方案数。 经过y=-1的就可以对称 阅读全文
posted @ 2018-10-16 09:51 SWHsz 阅读(144) 评论(0) 推荐(0) 编辑
摘要:郝神并没有令我明白这个。 但是巨神的题解太强了。 #include <iostream> #include <complex> #include <cmath> #include <cstdio> #include <cstring> using namespace std; const int N 阅读全文
posted @ 2018-10-15 16:43 SWHsz 阅读(120) 评论(0) 推荐(0) 编辑
摘要:AC自动机+DP AC自动机NOIP考不考啊。。。 在AC自动机上做个DP。 设状态f[i]表示最远可以匹配到的i,然后在AC自动机上找就行了。 #include <iostream> #include <queue> #include <cstdio> #include <cstring> usi 阅读全文
posted @ 2018-10-14 17:41 SWHsz 阅读(177) 评论(0) 推荐(0) 编辑
摘要:背会。。。 #!/bin/bash i=0 while true ;do ./maker > data.in ./a <data.in> data.out ./b <data.in> data.ans if diff data.out data.ans ;then printf "AC\n" els 阅读全文
posted @ 2018-10-14 16:35 SWHsz 阅读(363) 评论(0) 推荐(1) 编辑
摘要:突然发现有一道题还没做。。。 这道题数据范围是200000,枚举一下中间夹的那个点,然后随便操作一下(看代码)就行了。 #include <iostream> #include <cstdio> #include <cstring> const int N=200005,mod=10007; usi 阅读全文
posted @ 2018-10-14 11:29 SWHsz 阅读(152) 评论(0) 推荐(0) 编辑
摘要:组合数学+容斥原理 设f[i][j]表示第i个序列中的j的倍数的个数。 然后以j为gcd的贡献就是(π(f[i][j]+1) )-1 然后从大到小枚举j,删去j的倍数的贡献即可。 阅读全文
posted @ 2018-10-13 09:14 SWHsz 阅读(98) 评论(0) 推荐(0) 编辑
摘要:d题大概是让有n个矩阵,可以随意平移,问删除m个矩阵后最大的面积交是多少。 其实思路很显然。 肯定删x个a最小的和m-x个b最小的。 然后我们先删m个a最小的,然后逐渐少删a,开始删b,用个堆维护b的最小值。 然后就可以了。 代码并没有测。 #include <iostream> #include 阅读全文
posted @ 2018-10-12 15:52 SWHsz 阅读(136) 评论(0) 推荐(0) 编辑
摘要:我太弱了。 我们可以知道一个结论就是对于一个图的话假如所有点的度数都是偶数,那么只需要走一波欧拉回路。 所以我们就把奇点补成偶点。 将两个奇点补充到偶点的最佳方法是选择任意两个奇点连最短路径为权的边 然后因为N特别小,所以可以直接用状压搞。 #include <iostream> #include 阅读全文
posted @ 2018-10-12 15:38 SWHsz 阅读(285) 评论(0) 推荐(0) 编辑
摘要:状压并不难,记录一下现在经过点的状态和最后一个经过的点即可。 但是有个限制条件是不能直接经过一个没经过的点。 如果直接做的话就时间复杂度2nn3,卡常+O2也过不了啊。。。Orz 所以预处理出来经过某一对点中间必然经过的一些点。 然后dp的时候就直接判断一下就行了。 时间复杂度可以降一个n然后就A了 阅读全文
posted @ 2018-10-12 08:23 SWHsz 阅读(189) 评论(0) 推荐(0) 编辑
摘要:状压DP 先预处理出来pre[i][S]表示对于第i个位置,往后5个的状态是S时,开心的小朋友的数量。 然后dp的时先枚举前5个的状态,再dp。 因为围栏是环状的,之后统计答案时统计的是那个f[n][S]=startS的。 #include <iostream> #include <cstdio> 阅读全文
posted @ 2018-10-11 16:18 SWHsz 阅读(231) 评论(0) 推荐(0) 编辑
摘要:二分答案的大水题。二分一下W,然后记录一下前缀满足wi≤W的个数,前缀满足这个条件的vi的和,check的时候直接O(n+m)的check就行了。 记得开long long #include <iostream> #include <cmath> #include <cstdio> #include 阅读全文
posted @ 2018-10-11 09:12 SWHsz 阅读(216) 评论(0) 推荐(0) 编辑
摘要:树形DP. 用倍增处理出来每个点往上能延伸出去的最远路径,nlogn 对于每个节点,如果它能被后代使用过的点覆盖,就直接覆盖,这个点就不使用,否则就ans++,让传的Max改成dp[x] #include <iostream> #include <cstdio> #include <cstring> 阅读全文
posted @ 2018-10-11 08:32 SWHsz 阅读(324) 评论(0) 推荐(0) 编辑
摘要:一道好♂玩的题。 考虑怎么才能让这个序列满足条件。 考虑到这个高度是个n的排列,然后我们可以发现n一定是左右都可见的,然后就可以认为左边的前缀max有A-1个值,右边的后缀max有B-1个值。 可以认为成从n-1个数中取A+B-2个数组成一个圆排列,A-1个放左边。 所以这样的话答案就是strlin 阅读全文
posted @ 2018-10-08 22:05 SWHsz 阅读(102) 评论(0) 推荐(0) 编辑
摘要:正解:对于一个区间l,r,它的循环节长度一定是它的因数。 然后如果循环节是这个长度,那么[l+len,r]一定等于[l,r-len]。 然后每次询问的时候就把它的长度的最小质因子提出来。 BZOJ上都A了,然而LOJ上T了一个点。 //<!-- // :: // :;J7, :, ::;7: // 阅读全文
posted @ 2018-10-08 16:15 SWHsz 阅读(185) 评论(0) 推荐(0) 编辑
摘要:再次惨遭卡模数。 但是为什么自然溢出没有被卡。。。。。。。我好绝望啊 这道题思路就是枚举断点,然后看看这个断点左右两侧和哈希值都一样的话就是相似的。 然后就随便判一下即可。 希望大家不要被卡。。。用自然溢出就行了。。。。 #include <iostream> #include <cstdio> # 阅读全文
posted @ 2018-10-08 11:36 SWHsz 阅读(212) 评论(0) 推荐(0) 编辑
摘要:真·清新 如果根是1的话,先预处理出来没有变化的时候的answer,然后修改的时候就相当于1-x的路径上的节点上的贡献就由∑(sumx)^2 变成∑(sumx+detla)^2 这样的话就加了x^2*(路径上点的个数)+2*x*(路径上点权和) 换根的推导式子如下,摘自洛谷题解区。。。 #inclu 阅读全文
posted @ 2018-10-08 08:54 SWHsz 阅读(151) 评论(0) 推荐(0) 编辑
摘要:大意:给你一个平面上N(N<=100000)个点,问相切于x轴的圆,将所有的点都覆盖的最小半径是多少。 计算几何???Div2的D题就考计算几何???某人昨天上课才和我们说这种计算几何题看见就溜。。。。 打完比赛才发现好像并不用计算几何,实则是一个二分答案的水题。。 发现如果点在x轴两侧就肯定不行, 阅读全文
posted @ 2018-10-06 20:28 SWHsz 阅读(340) 评论(0) 推荐(0) 编辑
摘要:Informatik verbindet dich und mich Informatik verbindet dich und mich 扩展欧拉定理+线段树。 Informatik verbindet dich und mich 由扩展欧拉定理得,cc...最终上面的指数必定变成1.(不会打这个 阅读全文
posted @ 2018-10-06 19:27 SWHsz 阅读(437) 评论(0) 推荐(0) 编辑
摘要:构造题。 我递归构造的,发现如果N>3的话就优先删奇数,然后就把删完的提取一个公约数2,再重复操作即可。 具体原因我觉得是因为对于一个长度大于3的序列,2的倍数总是最多,要令字典序最大,所以就把非2的倍数全删了。 假设不删奇数,剩下的数要提取出来非1的公因数,要删的数一定比删奇数删的起码多1,出现比 阅读全文
posted @ 2018-10-06 08:30 SWHsz 阅读(194) 评论(0) 推荐(0) 编辑
摘要:容斥+背包。 先做完全背包,然后就去掉用的硬币大于限量的,用容斥原理去下重就行了。 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N=100005; int c[5],T 阅读全文
posted @ 2018-10-05 19:45 SWHsz 阅读(123) 评论(0) 推荐(0) 编辑
摘要:有个套路:计算单调不降的,可以给第i项加一个i,转化成单调递增的,然后就变成了在值域[L+1,R+N]中取1~n个数。 复制一下popoqqq大佬的图片 M=R-L+1。 式子就变成了这个样子。 Lucas定理随便做了。 #include <iostream> #include <cstdio> # 阅读全文
posted @ 2018-10-04 20:45 SWHsz 阅读(144) 评论(0) 推荐(0) 编辑
摘要:设状态转移方程 f[i][j]表示前i个人打饭,目前第一窗口的最后一个打完饭的时间是j,最后一个吃完饭的人的时间。 然后n^3转移。 #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using 阅读全文
posted @ 2018-10-03 21:25 SWHsz 阅读(124) 评论(0) 推荐(0) 编辑
摘要:相当于是V[x]+V[y]=c(x是行,y是列,c是这个点的点权) 然后我们就可以用二分图判定一下是否可行。找个有点权的点随便dfs一下就行了。 #include <iostream> #include <cstdio> #include <cstring> using namespace std; 阅读全文
posted @ 2018-10-03 20:13 SWHsz 阅读(180) 评论(0) 推荐(0) 编辑
摘要:惊奇地发现,如果一个区间能被判定是错的,当且仅当这个区间被已知权值的区间夹着,且表出的区间值与给出的不相等,才能表示这个区间GG了。 然后用带权并查集维护当前节点所能表示的最远区间及其权值。如果发现新的区间的find(l-1)==find(r),就可以猜猜看它的正确性了。 #include <ios 阅读全文
posted @ 2018-10-03 19:41 SWHsz 阅读(200) 评论(0) 推荐(0) 编辑
摘要:题面: 约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱. 游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种: 1.移动(M):将包含X的立方柱移动到包含Y的立方柱上. 2.统计(C):统计名含X的立方柱中,在X下方的方块 阅读全文
posted @ 2018-10-03 19:02 SWHsz 阅读(249) 评论(0) 推荐(0) 编辑
摘要:寒假zrt讲过,用并查集维护这个点往后最近的白色馒头是谁,然后时光倒流,直接往它的fa处跳就行了。 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N=1000005; i 阅读全文
posted @ 2018-10-03 18:44 SWHsz 阅读(127) 评论(0) 推荐(0) 编辑
摘要:把这个图缩成圆方树,把方点的权值设成-1,圆点的权值设成点双的size,算 经过这个点的路径的数量*这个点的点权 的和即是答案。 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const i 阅读全文
posted @ 2018-10-02 19:50 SWHsz 阅读(228) 评论(0) 推荐(0) 编辑
摘要:最小表示法就是一个字符串构成一个环,找以哪个点为开头字典序最小。 然后我们就可以用n2的算法愉快的做啦~实际上有O(n)的做法的,就是用两个指针扫,如果这两个位置的字典序相等,就一起往后,如果某一个大,就把那个指针指到大的那个的后面。 每次至少有一个指针往后移一个,复杂度就是线性的了。 (自己YY的 阅读全文
posted @ 2018-10-02 17:56 SWHsz 阅读(232) 评论(0) 推荐(0) 编辑
摘要:二分答案。二分n,然后check的时候发现分类讨论一下当前值与K的关系就行了。 论认真读题的重要性。我没看见直接新建一个文件,弃置之前??? 难受 #include <iostream> #include <cstdio> #include <cstring> using namespace std 阅读全文
posted @ 2018-10-02 16:13 SWHsz 阅读(136) 评论(0) 推荐(0) 编辑
摘要:ETT的模板题。 我们把欧拉序标出来, 把入栈视作+,出栈视作-。 它的子树一定是在两个欧拉序中间的。 然后把欧拉序当做一个区间维护,换父亲就把左右两端这个区间挪到它的新父亲的入栈的右边。用splay维护一下就行了。 但是!这个@#$%^&题卡数组版splay????? 但是不卡spaly???(单 阅读全文
posted @ 2018-10-02 15:27 SWHsz 阅读(135) 评论(0) 推荐(0) 编辑
摘要:WA了一万次。。。。 然后发现多输出了一个空格 我#$%^& 启示我们输出字符的时候应该输出ASCII码看一下。。。。 然后本题可以用烤馍片算法,每次匹配完以后看看当前最后一位的nxt数组的值是多少,然后补齐到 lenT 。 下次匹配的时候直接从上次匹配过的最后一个开始匹配就行了。 #include 阅读全文
posted @ 2018-10-02 15:01 SWHsz 阅读(167) 评论(0) 推荐(0) 编辑
摘要:区间DP,但是卡空间。 n2的就是f[i,j]=sum[i,j]-min(f[i+1][j],f[i][j-1])表示这个区间和减去对手取走的最多的。 但是空间是64MB,就很难受 发现一定是由大区间转移到小区间,区间长度差为1 式子变成 :f[i,i+len]=sum[i,i+len]-min(f 阅读全文
posted @ 2018-10-02 14:56 SWHsz 阅读(178) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示