自定义博客皮肤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

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

原创 [构造] Codeforces Gym 101190 NEERC 16 C. Cactus Construction

我们递归地搞 使得包含点P的某个仙人掌被构造出来且除了P是1其他都是2 然后就是拆桥边或拆环 递归下去 然后在合起来就行了 把桥边接起来很显然 环的话 自己画画也不难搞出来了吧#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<set>#define pb push_backusin

2017-04-15 20:30:27 746

原创 [杂题] Codeforces Gym 101190 NEERC 16 K. Kids Designing Kids

其实就是三个图异或起来为空 要的就是个观察 after moving the figures, some two of these three freckles must be in the same point. There are only three possible shifts, check them all#include<cstdio>#include<cstdlib>

2017-04-15 20:26:50 1022

原创 [博弈论] Codeforces Gym 101190 NEERC 16 G. Game on Graph

首先确定平局 当Bob先手的状态的一个后继被确定不是平局, 这个状态不是平局; 当Alice先手的某个状态的所有后继都不是平局, 这个状态不是平局. 初始所有出度为0的点不是平局,类似拓扑排序搜索到的状态都不是平局, 剩下的是平局. 然后确定不是平局状态下输赢 类似咯 后手都赢先手就输 后手能输先手就赢 但是这样能把所有状态推出来吗? 不能 因为Bob一旦能不平局宁愿输都不平局 比如这

2017-04-15 20:24:51 976

原创 [物理 杂题] Codeforces Gym 101190 NEERC 16 J. Jenga Boom

纯模拟#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,

2017-04-15 20:17:26 713

原创 [扫描线 杂题] Codeforces Gym 101190 NEERC 16 E. Expect to Wait

智商越来越捉急 看图就知道了 答案就是阴影的面积 扫描线一波就好了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return

2017-04-15 20:15:13 761

原创 [杂题] Codeforces 627F 8VC Venture Cup 2016 - Final Round F. Island Puzzle

题目大意 有一棵n+1个点树 在上面玩n数码 问是否有解 最小步数 否则问加一条边是否有解 最小步数这个好像WC的T1啊? 根据当时考场上玩出来的经验 一棵树直接跑整条路径就好了 环套树是先移动到环上,然后绕着环走若干圈,最后再走向目的地。我们先当做树跑一通 然后看一下所有不在自己的目标位置的宝石是否可以添一条边组成一个环。如果不能组成,答案就是-1 怎么看 所有不在自己的目标位置

2017-04-15 20:11:30 764

原创 [链表 杂题] BZOJ 4432 [Cerc2015]Greenhouse Growth

只有我觉得神题吗 比C难度还大? 看懂了也不会写 不会告诉你我是看着标程写的#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#define pb push_backusing namespace std;inline char nc(){ static char buf[10000

2017-04-13 17:51:05 872

原创 [边双连通分量 Hash] BZOJ 4435 [Cerc2015]Juice Junctions

是不是只有我以为这是最小割树裸题 然后SB地大力分治跑最小割因为一个点度数不超过3 那么答案就是 0 1 2 3 先不在一个连通块的是0 在一个连通块但不在同一个边双里的是1然后怎么分辨 2 和 3 为2当且仅当存在删去某一条边 两个点不在同一个点双里 为3 也就是两个点所在的点双完全一样 我们尝试删除每条边 然后hash一下就好了#include<cstdio>#include<cst

2017-04-13 17:45:04 646

原创 [杂题] BZOJ 4437 [Cerc2015]Looping Labyrinth

三种情况分别对应bfs提前结束(n,0)(n,0)且(0,m)(0,m)都可达存在(kn,km)(kn,km)可达这题TM卡常啊#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef pair<int,int> abcd;typedef long long ll;inline c

2017-04-13 17:35:18 710

原创 [扫描线 线段树] BZOJ 4422 [Cerc2015]Cow Confinement

好题 但是懒得写题解 最近特别懒#include<cstdio>#include<cstdlib>#include<algorithm>#include<set>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+frea

2017-04-13 17:27:45 586

原创 [并查集 杂题] BZOJ 4452 [Cerc2015]Export Estimate

关键就是一个观察 怎么判断是个环 在维护并查集的时候顺便维护下size和度数为2的点的size#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&

2017-04-13 17:14:40 548

原创 [乱搞] BZOJ 4434 [Cerc2015]Ice Igloos

#include<cstdio>#include<cstdlib>#include<cmath>#include<algorithm>using namespace std;double r[505][505];double A,B,C;double K,L;int Count(int x,int y1,int y2){ int ret=0; for (int y=y1;y<=y

2017-04-13 17:12:33 510

原创 [乱搞] BZOJ 4436 [Cerc2015]Kernel Knights

大概类似拓扑排序 找入度为0的点 然后删 最后剩下偶环 任选一边就好了#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)

2017-04-13 17:09:05 381

原创 [FFT || 递推] BZOJ 4451 [Cerc2015]Frightful Formula

f1,if_{1,i} 的贡献是 f1,i∗an−i∗bn−1∗Cn−i2n−i−2f_{1,i}*a^{n-i}*b^{n-1}*C_{2n-i-2}^{n-i} fi,1f_{i,1} 同理 注意 f1,1f_{1,1} 没什么卵用 然后 cc 还有贡献 c∑i=2n∑j=2nan−i∗bn−j∗Cn−i2n−i−j=c∑i=0n−2∑j=0n−2ai∗bj∗Cii+jc\sum_{i=2}

2017-04-13 17:07:16 871

原创 [dsu on tree 主席树优化建图 最大流] BZOJ 3681 Arietta

这显然是个类似二分图匹配 但直接跑网络流边数承受不了 我们采用套路 用数据结构优化建图 类似vfk的a+b problem我们处理子树问题 有一种方法是按dfs序建主席树 然后就可以用减法取出一段区间 也就是子树的信息 但是在某些情况下不能减 比如在这个网络流里 这样的话 我们就要用一种科技 dsu on tree 相关资料 原文 神犇翻译版本大概意思是 我们用重链剖分的思想 当前子树的

2017-04-10 22:39:20 1072

原创 [meet in middle 矩阵树定理 容斥原理] SRM 551 div1 SweetFruits

集训队论文传送门大概就是我们先用meet in middle求出有恰好k个真甜的方案数 然后我们求这些东西的生成树个数 乘在一起的和就是答案 我们让真甜连真甜 真甜连不甜 假甜连不甜 不甜连不甜 跑一发矩阵树定理 这样只能保证这些真甜的某个子集是真甜 那么我们需要用 0~k-1 的简单容斥一下// BEGIN CUT HERE #include<conio.h>#include<sstr

2017-04-10 22:14:32 660

原创 [Trick] 一般图最大匹配的随机匹配

写不出带花树的时候还是可以考虑下骗分的 但是这是可以卡的 一般图最大匹配的随机匹配hack法 在UOJ上已经被hack烂了具体做法 代码很清晰#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<cstring>#include<ctime>#define cl(x) memset(x

2017-04-10 22:08:48 1409

原创 [阈值] SPOJ RECTANGL - Rectangles

详见 一类算法复合的方法大概就是把坐标都离散了 按照某x坐标上的点数分类 如果矩形的某边是大类 只有O(n√)O(\sqrt n) 直接枚举所有点按 y hash就行了 否则所有小类 把所有能构成的线段放进hash表 只有O(nn√)O(n\sqrt n)再一次体验了unordered_map的感人速度#include<cstdio>#include<cstdlib>#include<al

2017-04-10 22:05:22 431

原创 [二进制分组] BZOJ 4140 共点圆加强版

其实做法是跟离线一模一样的 只不过强制在线 可以使用二进制分组这个技巧 详见xhr论文 跑的比分治快是smg 一天到晚做数据结构的傻逼选手#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<cmath>#define pb push_backusing namespace st

2017-04-09 20:54:44 655

原创 [主席树] BZOJ 4571 [Scoi2016]美味

要是没有加 就是裸的可持久化字典树 其实字典树也就是线段树 按位贪心 然后在主席树上查一下某段是否有数字#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==

2017-04-09 20:51:13 313

原创 [线段树] BZOJ 4388 JOI2012 invitation

最近真的懒 Claris的题解#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<queue>#define pb push_backusing namespace std;typedef long long ll;inline char nc(){ static char buf

2017-04-09 20:45:32 361

原创 [FWT] BZOJ 4589 Hard Nim

FWT相关 Fast Walsh-Hadamard Transform (快速沃尔什变换)#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;const int P=1e9+7;const int Inv=(P+1)>>1;inline ll Pow(ll

2017-04-09 20:42:02 926

原创 [字符串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 326

原创 [构造] 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 359

原创 [构造] 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 510

原创 [构造 八数码] 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 575

原创 [可图性判定 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

空空如也

空空如也

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

TA关注的人

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