自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

雯舞

Love three things int he world -- Manchery

  • 博客(978)
  • 资源 (2)
  • 收藏
  • 关注

原创 [字符串Hash DP] Codeforces 613E #339 (Div. 1) E. Puzzle Lover

写这个东西的时候很需要冷静 一些细节 比如特殊情况不可避免的重复计算 很恶心 然后 自然溢出被sxbk的hacker卡了 我还因此去学习了怎么卡 构造串卡掉自然溢出BY PoPoQQQ#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x,0,sizeof(x)

2017-04-09 20:40:37 897

原创 [构造 随机] Codeforces 720C Russian Code Cup 2016 - Finals C. Homework

我是dls的脑残粉 #include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#define pb push_backusing namespace std;const int N=100005;int n,m,K;int w[N];inline int count(){ int ret=0; f

2017-04-09 20:35:45 461

原创 [Notes] 构造题小结

构造题很繁杂啊 有构造方案的 有转化为图论模型比如欧拉回路的 最近做到很多构造解使得某个属性恰好为K的一类题大概有几种套路*2+1套路 TCO16 Semi 1 MinimumCutsAgain [K个最小割] SRM 689 div1 MultiplicationTable3待定参数 HDU 5334 Virtual Participation [K个不同子串]进制拆分 SRM

2017-04-07 21:02:07 352

原创 [构造 随机 生成树计数] UOJ #75 【UR #6】智商锁

题解大概意思是拆成4个12 瞎随机个千把个 找出四个使得abcd=K 这个meet in middle 就好了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;const int P=998244353;const int N=15;inline ll

2017-04-07 20:44:23 384

原创 [构造 哈密顿路径] SRM 704 div1 HamiltonianConstruction

构造一个图使得1到n的哈密尔顿路径恰好为k。 k<=100000, 要求点数不超过20。广为流传的做法是 1<-2<-…<-18一条路径,然后1-18都向编号比它大的节点连边。这样的话往回走就只有唯一的路径,所以假如说我当前在i,走到了j,j>i,那么就需要立刻从j到j-1直到i+1,然后再往后走。这样就相当于每个节点有选或不选两种状态,如果选的话就是从前面第一个比它小的选的节点跳过来,

2017-04-07 20:40:45 491

原创 [构造] Codeforces 226D #140 (Div. 1) D. The table

有一个n*m的矩阵,每次可以将一列取负或者将一行取负,求一个方案使得每行每列的和都非负。 n,m<=100,元素绝对值<=100如果有某一行或某一列为负 直接取反 这样整个矩阵的和肯定会变大 也就是说一定结束 每次操作至少使和增加22,而和最大1003100^3,最小−1003-100^3,所以总步数最多为1003100^3。#include<cstdio>#include<cstdl

2017-04-07 20:32:40 306

原创 [构造] HDU 5332 Test for Rikka

构造一个有向简单图,使得从1号点走m步到n号点的方案数恰好为K。 K<=1e18, n,m<=30取 C=9 D=20#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef

2017-04-07 20:29:30 689

原创 [构造] HDU 5334 Virtual Participation

构造一个字符集大小没有限制的字符串,使得不同的子串个数恰好为K。 K<=1e9,要求串长不超过1e5假设数列是a个1+b个2+c个1,a>=c 不同的子序列总数 ab+bc+ac+a+b=k (a+c+1)(b+c+1)=k+(c+1)(c+1) 枚举 c+1 即可#include<cstdio>#include<cstdlib>#include<algorithm>#inclu

2017-04-07 20:27:31 261

原创 [构造] CODE FESTIVAL 2016 Grand Final G. FESTIVAL

传送门 构造一个字符串,使得恰好有K个子序列为FESTIVAL。 K<=10^18, 要求字符串的长度不超过6000。 记序列为FFFFFFESTIVALFFFESTIVAL… 连续c1个F后面接ESTIVAL,连续c2个F后面接ESTIVAL,这样放t个。 记f(n)表示n个ESTIVAL中ESTIVAL的子序列个数,f(n)=C(n+6,7)。 所以答案为c

2017-04-07 20:22:06 673

原创 [构造 二分图] SRM 693 div1 BipartiteConstruction

构造二分图,使得完备匹配个数恰好为K。 K<=10^9,可以有重边,要求两部分点数不超过20,边数不超过120。传送门一开始匹配数是0 每加一条红边 可以使答案增加3i3^i// BEGIN CUT HERE #include<conio.h>#include<sstream>// END CUT HERE #include<cstdio>#include<cstdlib>#

2017-04-07 20:19:37 325

原创 [构造] Codeforces 618F Wunder Fund Round 2016 F. Double Knapsack

给定两个大小为n的可重集A, B ,两个数集中的元素均为[1, n]的整数。 现在要求在两个数集中各找出一个非空子集(子集也为可重集) ,满足两个集合中元素的和相等。 n<=10^6 加限制使得选的为两个连续的段。 不妨设SA<=SB,记SA的前缀和为SA(0),SA(1),SA(2),…, SB的前缀和为SB(0),SB(1),SB(2),… 对于每个SA(i),

2017-04-07 20:16:23 414

原创 [构造] Codeforces 468C #268 (Div. 1) C. Hack it!

记f(x)为x的数位和。 求l,r使得sum (i=l..r) f(i) mod P=0 P<=10^18, 要求l,r<=10^200 由于有两个参数l,r,自由度太大,所以我们加一个限制使得r=l+10^19-1。 这个时候我们注意到将[l,r]变成[l+1,r+1],整体上加上了f(r+1)减去了f(l)。 而r+1和l只差一位,也就是f(r+1)-f(l)=

2017-04-07 20:14:39 358

原创 [构造] SRM 689 div1 MultiplicationTable3

构造一个n∗nn*n的数组gi,jg_{i,j}。 一个集合SS是好的当且仅当对于集合中的任意两个数 xx , yy , gx,yg_{x,y}也在SS中。 请构造一个数组使得好的集合个数恰好为KK,n≤20n\leq20。考虑经典套路 构造x+1x+1和2x2x对于2x2x ,新加元素pp ,使得gp,i=gi,p=ig_{p,i}=g_{i,p}=i ,那么pp可选可不选 对

2017-04-07 20:11:34 206

原创 [DP] Codeforces Gym 101002 H. Jewel Thief

它是个背包 我们就做背包 因为体积范围很小 我们按体积分类 然后因为当我们决策某个体积拿多少个时肯定拿价值大的前几个 我们按体积划分阶段DP 然后发现转移都是在差为体积整数倍之间 按照容量对体积取模分组 发现组内部转移满足神奇的决策单调性?! 然后就大力分治一发 O(KClogC)O(KC \log C)正解肯定不是这个 正解肯定不是这个 正解肯定不是这个 正解真的不是这个 应该O(KC

2017-04-07 19:54:29 717

原创 [最小割 构造] TCO16 Semi 1 MinimumCutsAgain

dls说这是道无聊的题 构造一个有向带权图,使得恰有K个0-1最小割。 0-1最小割是将图分成S和T两个集合,0属于S, 1属于T,权值为从S到T的边的边权和。 K<=1000,要求点数<=20 假设有个x的方案,构造2x和x+1。 构造2x十分简单,只要加一个空的点即可。 构造x+1的方案,只要加一个点p,然后向2到p-1全都连上边即可。 这样0-1的最

2017-04-07 07:03:02 509

原创 [构造 八数码] Codeforces 472E #270 E. Design Tutorial: Learn from a Game

n=1n=1或m=1m=1的时候特判 不然就是有解的 需要前置技能手玩八数码 然后就可以不断把nn和mm缩小 直到n=2,m=2n=2,m=2 这时候 因为可以斜着走 就可能有解 写起来一点不愉悦#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#define pb push_backusing

2017-04-07 06:59:27 574

原创 [可图性判定 Havel-Hakimi定理 构造] Codeforces Gym 100269 NEERC 13 Northern K. Kids in a Friendly Class

黑点和白点的个数可以从小到大枚举 黑白点之间的连边是显然的 那么对于白点或黑点内部 我们就需要连边使得每个点度数相同每次选两个剩余度最大的点相连是错误的 反例 6 2那么应该怎么连 需要Havel-Hakimi定理 由非负数组成的非增序列s:d1,d2,⋯,dn(n≥2,d1≥1)s:d_1,d_2,\cdots,d_n(n\geq2,d1\geq1)是可图的,当仅当序列s1:d2−1,d3

2017-04-07 06:55:05 1027

原创 [构造] Codeforces 736E #382 (Div. 1) E. Chess Championship

有m个人参加比赛,每两个人都恰好比了一场 两个人比赛如果一方赢了,那么得到2分,平局得到1分,输了得到0分。 告诉你排行榜前n个人的得分,构造比赛满足条件 n<=m<=3000 充要条件就是分数按从小到大排,前i小的分数总和不小于i(i-1),m个人的分数总和为m(m-1) 构造的时候是选择分数最高的人,让他在分数高的人比赛中失败,低的人比赛中获胜 我们只

2017-04-07 06:46:20 722

原创 [树形DP 杂题] SRM 562 div1 InducedSubgraphs

集训队作业传送门给一棵nn个结点的树,定义一个结点集合是连通的表示这棵树以这个集合为点集的导出子图是连通图。再给一个整数kk,将树上的结点重新编号,使得对于任意一个满足1≤i≤n−k+11\leq i\leq n-k+1的ii,都满足由所有编号在[i,i+k−1][i,i+k-1]内的结点组成的结点集合是连通的。问这样的编号方式有多少种。1≤k≤n≤411\leq k\leq n\leq 41。大概

2017-04-05 21:07:56 504

原创 [树的直径 树形DP] UOJ #11【UTR #1】ydc的大树

题解链接大意是我们求出直径的中心 那么到最远点必然经过中心 把它提到根 就可以在枚举删的白点时很快统计出能够使多少个黑点不高兴#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;

2017-04-05 21:05:17 767

原创 [树的直径] BZOJ 1999 [Noip2007]Core树网的核

做这个题 主要是复习几个性质对于树中的任意一点,距离其最远的点一定是树的直径的某一端点所有直径的中心相同,这个中心可以是一个顶点,也可以在一条边上。所有点到他的最远点都要通过这个中心所有的直径所能求出的该最小偏心距相等然后我们就直接找出一条直径 在上面two-pointers扫一下就好了 每次我们用 当前区间内不经过直径上的点抵达的其他点的最大深度和到两端的距离的最大值 更新下答案#inc

2017-04-05 21:00:57 649

原创 [树形DP] BZOJ 4013 [HNOI2015]实验比较

首先缩点 然后肯定会变成一颗森林 不然无解 弄一个超级根 然后 fu,kf_{u,k} 表示子树 uu 划分成 kk 段的方案数 合并的时候 ii 段和 jj 段可以合并成 kk 段 k∈[max{i,j},i+j]k \in [max\{i,j\},i+j] 用组合数算一下就好了#include<cstdio>#include<cstdlib>#include<algorithm>

2017-04-05 20:57:00 293

原创 [DLX 多重覆盖 模板题] FZU 1686 神龙的难题

传送门就是改一下精确覆盖 但还是有不同需要注意的 因为是多重覆盖 DLX萎掉 效率虽然还是很快 但是没有精确覆盖那么神猛了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; r

2017-04-05 10:22:53 413

原创 [DLX 数独 模板题] HDU 1426 Sudoku Killer

关于DLX解数独戳这里 好评#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,st

2017-04-05 10:20:25 560

原创 [DLX 精确覆盖 模板题] HUST 1017 Exact cover

题目链接关于DancingLinks可以戳这里 超详细 走心!#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+frea

2017-04-05 10:17:56 367

原创 [矩阵树定理 拉格朗日插值] TCO14 Round 3B TreeDistance

考虑两棵树,最少需要多少步把其中一棵变成另一棵? 可以发现答案就是不同的边数。即存在于A中而不存在于B中的边 数。 相当于要求:有多少带标号无根树,只有≤ kk 条原树中没有的边? 把原树中的边设成11,不在原树中的边设成xx,跑矩阵树定理,得出 来是一个nn阶多项式。 xi(i≤k)x_i(i ≤ k)前的系数和就是答案// BEGIN CUT HERE #include<coni

2017-04-04 13:18:28 837

原创 [莫比乌斯反演 伯努利数] BZOJ 2627 JZPKIL

ydc的题解 orzz 因为这道题才去学习了伯努利数 可以看这里#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;namespace RHO{ int prime[9]={2,3,5,7,11,13,17,19,23}; unsigned long

2017-04-02 13:36:12 833

原创 [伯努利数] 51Nod 1258 序列求和 V4

自然数幂和的求法有很多 大概有由二项式定理得递推式 拉格朗日插值法&牛顿插值法第一类斯特林数伯努利数wiki传送门 ACdreamer的blog伯努利数有两种B+B^+和B−B^- 唯一的争议就在B1B_1上 因为 对于n>1n>1有B2n+1=0B_{2n+1}=0 其实这不是什么大问题 一般个人习惯用B−B^- 以下不注明BB都表示B−B^-然后我就只会伯努利数最裸的应用了

2017-04-02 13:32:00 2235

原创 [DP] BZOJ 4758 [Usaco2017 Jan]Subsequence Reversal

reverse一个子序列就是从两端开始swap 然后我们就可以转移了 关键的状态设计是fi,j,l,rf_{i,j,l,r}表示 区间[i,j][i,j] 左边的数是ll 右边的数是rr 的答案#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using namespace std;#defin

2017-04-02 13:10:10 977

原创 [莫比乌斯反演] BZOJ 4804 欧拉心算

手推一推就知道答案是Ans=∑D=1n⌊nD⌋⌊nD⌋∑d|Dμ(d)∗ϕ(Dd)Ans=\sum_{D=1}^n \lfloor { n\over D}\rfloor\lfloor { n\over D}\rfloor\sum_{d|D}\mu(d)*\phi({D\over d})后面那个f(n)=∑d|nμ(d)∗ϕ(nd)f(n)=\sum_{d|n}\mu(d)*\phi({n\over

2017-03-31 20:26:23 1230

原创 [分治 杂题] Codeforces Gym 101173 CERC 16 G & BZOJ 4792 Geohash Grid

先转化问题 If we lay down numbers on a single line and mark numbers within the polyline, We obtain the optimal k-approximation by removing k−1k−1 largest gaps.我们考虑怎么求gap 我们把网格切成两半的时候也就是把值域切成了两半 我们只要递归模

2017-03-31 20:19:35 682

原创 [2-SAT 构造] Codeforces Gym 101173 CERC 16 L. Lost Logic

题目大意 给nn个01变量的三种取值 构造形如 (!)a->(!)b 的限制 使得有且仅有这三个满足 首先我们可以把三个值一样的变量去掉 只要一个限制就够了 然后剩下6类 类内部的变量一定两两相同 那么加一下限制 完全互补的两类可以合并 只要分别取出代表 限制两个一定相反就好了 这样我们最多剩下三类一类 显然不需要限制两类 去两个代表 这两个变量的值组成的二元组只有三种值是有效的 实际上

2017-03-31 20:07:10 653

原创 [构造] Codeforces Gym 101173 CERC 16 K & BZOJ 4796 Key Knocking

每三个一起考虑 不论如何 我们都可以进行最多一次操作使得答案加2 就好了#include<cstdio>#include<cstdlib>#include<algorithm>#include<string>#include<cstring>using namespace std;const int N=1000005;char s[N]; int n;const int op[]={

2017-03-30 21:11:57 885

原创 [状压DP Hall定理 折半] Codeforces Gym 101173 CERC 16 B & BZOJ 4788 Bipartite Blanket

有印象这是JZOJ某次的题 但是当时不会做 还是直接搬题解吧首先是hall定理 他有个推论是正则二分图一定有完美匹配 当然这个跟本题不相关 Hall’s marriage theorem gives a necessary and sufficient condition for existence of a matching that covers a set of nodes

2017-03-30 21:07:41 956

原创 [构造] Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks

FB! 懒 直接搬题解吧 先令fn,mf_{n,m}表示n∗mn*m的网格能排序的最大数量 我们把左上角这一格里的数 按大小分到其他块中 其中(i,j)(i,j)最多放fn−i+1,m−j+1f_{n-i+1,m-j+1}个 然后递归的做就好了 我们发现某根柱子就算本来有东西也毫不影响 踩上去就是了 这样是fn,m=∑i=1n∑j=1mfi,j     i≠n or j≠mf1,1=1

2017-03-30 21:01:37 585

原创 [构造] ICPC 2016 Hong Kong I. Special Tour

有一个n∗mn*m的网格图,构造一条哈密尔顿回路使得相邻的两个点的距离为22或者33,如果无解输出无解。 n,m≤200n,m\leq200我是dls的脑残粉 #include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;int n,m;int flag;inline void print(int x

2017-03-30 08:23:03 562

原创 [背包 压位 CDQ分治] ICPC 2016 Hong Kong H. Slim Cut

有一个nn个点mm条边的图。 记一个割(S,T)(S,T)的slimness为跨在SS和TT之间边的边权最大值除以S和T的两个集合小的一个的大小。 找到一个slimness最小的割,输出slimness。 n≤14000,m≤30000n\leq14000,m\leq30000 时限5sdls太强辣 #include<cstdio>#include<cstdlib>#include<a

2017-03-30 08:20:42 843

原创 [笛卡尔树 树形DP] ICPC 2016 Hong Kong G. Scaffolding

你要搭一个一共nn列的脚手架,第ii列放HiH_i根竹子。 你每次只能搬m根竹子上脚手架,并且只能在脚手架左右和向上移动。同时如果左边右边和上面没有竹子,也可以放一根竹子在那里。 问最少需要多少次搬完。 n≤100000n\leq100000直接建笛卡尔树 考虑从高往底拆 然后就可以树形DP了 fif_i表示拆子树ii到他的father的高度需要的次数 gig_i可以顺带算出表示拆了后还剩

2017-03-30 08:16:53 1948

原创 [构造] ICPC 2016 Hong Kong A. Colourful Graph

传送门给你一个nn个点的无向连通图,每个点被染了kk个颜色中的一种。 你可以对其进行一些修改,假设i时刻的颜色为cv,ic_{v,i},那么i+1i+1时刻的颜色cv,i+1c_{v,i+1}可以为cv,ic_{v,i}或者cu,ic_{u,i},其中 uu , vv 之间有边相连。 给你初态和终止状态,问你有没有方法在2000020000步内从初态变成终态。 n≤100n\leq100这个步

2017-03-30 08:13:08 493

原创 [高中数学联赛题] Codeforces Gym 101173 CERC 16 E. Easy Equation

首先(0,1,k)(0,1,k)是个解 然后用主元法 a2−k(b+c)a+b2+c2–kbc−1=0a^2 - k(b+c)a +b^2 + c^2 – kbc -1=0 可得如果(a,b,c)(a,b,c)为解,那么(k(b+c)−a,b,c)(k(b+c)-a,b,c)也为方程的解 直接大力bfs 其实你需要高超的高精度技巧 Python大法好 第一次知道原来set跑的这么快fro

2017-03-30 08:07:47 1694

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除