自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MisDeer's blog

您们怎么都这么强啊……

  • 博客(49)
  • 收藏
  • 关注

原创 [Codeforces 27D] Ring Road 2 (二分图染色)

Codeforces - 27D 给定一个 NN 个点的环,要求添加 MM 条路 这些路要么在环的内部,要么在外部 问是否有一种添加方案, 使得所有新加的路除了端点以外的地方不相交首先显然可以将环剖成一条链 然后不相交的路就转化为了线段覆盖问题 然后 (M2)\mathcal{O}(M^2) 预处理出所有可能相交的线段 然后跑二分图染色即可 判断线段相交可能写起来有

2016-08-24 21:43:07 477

原创 [Codeforces 543C] Remembering Strings (状压DP)

Codeforces - 543C 给定 NN 个长度皆为 MM 的字符串,其中 1≤N,M≤201\le N,M\le 20 将第 ii 个字符串的第 jj 为修改成其他字符需要代价 aija_{ij} 要求用最少的代价,使得每个字符串都至少有一位是独一无二的很显然的一个状压DP 首先状压一下哪些字符串已经是独一无二的 由于字符串数量小于可用字母数量,所以总是能自由修改字符

2016-08-24 19:31:45 438

原创 [Codeforces 585C] Alice, Bob, Oranges and Apples (Stern-Brocot Tree + 更相减损法)

Codeforces - 585C A和 B两个人玩一个游戏,开始时一共有 XX 个橘子和 YY 个苹果 A先拿出一个橘子,B拿出一个苹果,然后进行若干次操作 每次一个人将所有的水果给另一个人, 然后再从袋子里拿出与之前等量的两种水果 最后袋子里的水果恰好被拿完,求构造一个满足条件的操作序列如果知道 Stern-Brocot Tree 这个东西的话, 会发现整个游戏过

2016-08-24 16:33:52 615

原创 [Codeforces 217B] Blackboard Fibonacci (菲波那契数列 + 更相减损术)

Codeforces - 217B 递推一个菲波那契数列,开始时有上下两个数分别为 0 和 1 然后一个 T操作是将上面的数替换成两数之和 B操作是将下面的数替换成两数之和 这样一来 T和 B是交替进行的,但是过程中出了错, 在 NN次操作以后,得到一个数 RR 问最少错几次能得到最后一个数,并输出操作序列 其中 1≤N,R≤1061\le N,R\le 10

2016-08-24 11:34:10 366

原创 [Codeforces 292C] Beautiful IP Addresses (暴力+构造)

Codeforces - 292C 给定若干个数字,构造出所有的 IP地址 使得去掉 .后其为回文串,且每个至少被使用了一次刚开始直接一位一位的枚举,结果超时了 意识到这样构造出来很多不是回文串后, 费尽心思写了一个剪枝,依旧是 TLE 第二次面向回文串来构造,就过了先枚举回文串长度,然后构造出前半段,再对称到后半段 然后再对这个回文串打上 . 这样保证构造出来的都是回文串,所

2016-08-23 17:52:46 700

原创 [Codeforces 103D] Time to Raid Cowavans (离线询问+等间距区间求和)

Codeforces - 103D 给定一个长度为 NN 的序列,有 PP 个询问 每次询问从下标 aa 开始,每次下标 +b+b,这样所有数的和先离线询问,对询问按 bb 从小到大排序 然后当 bb 比较小的时候 dp处理,当 bb 比较大的时候暴力算 取这个临界值为 N‾‾√\sqrt{N},这样就能以 (PN‾‾√)\mathcal{O}(P\sqrt{N})得解#pragm

2016-08-23 13:37:26 336

原创 [Codeforces 460D] Little Victor and Set (构造)

Codeforces - 460D 从区间 [l,r][l,r]内选出最多 kk个数,使得他们的异或和最小YY一下发现,如果一个偶数 2x2x 和 2x+12x+1 异或,可以得到 1,挺小的 如果2x2x、2x+12x+1、2x+22x+2、2x+32x+3异或就得到了 0,这意味这 k≥4k\ge 4的时候 都只需取这样的 4个数,就能得到一个最小的 0 所以只需考虑 k<4k<4的

2016-08-23 10:16:47 257

原创 [Codeforces 176B] Word Cut (脑洞+KMP+dp)

Codeforces - 176B 给定一个 A串,每次可以将其从分为两个非空子串 然后交换这两个串的位置,得到一个新串 问这样操作 KK次以后得到 B串的方案数实际上可以将 A串看成一个循环的串 每次切的操作实际上就是改变起始位置 并且相邻的两次起始位置不能相同比如 ababaab,我从第一个 b后面切开,就变成 abaab|ab 实际上只不过是换了一个起始位置而已 由

2016-08-22 19:07:02 339

原创 [Codeforces 585D] Lizard Era: Beginning (折半枚举)

Codeforces - 585D 有三个开始为 0的数,有 NN 次选择,每次改变其中两个 问最后使得三个数相等且最大的选择方案 其中 N≤25N\le 25一看 N≤25N\le 25,就可以暴力算一算 直接状压是不行的,所以折半状压 先用三进制压前一半,每一位表示不选的那个人 然后把后两个人对第一个人价值的差当作 key 存一下第一个人的最大价值,以及此时的状态 然

2016-08-22 15:23:01 359

原创 [Codeforces 13E] Holes (分块)

Codeforces - 13E 有 NN 个洞排成一列,每个洞有一个能量值 aia_i 将一个球丢进第 ii 个洞内,它将跳跃到 i+aii+a_i 个洞 这样一直跳跃直到跳出 NN 的范围 现在有两种操作,往第 ii 个洞内丢球,将第 ii 个洞的能量值修改为 bb 每次丢球,输出这个球最后进入的洞的编号以及跳跃次数刚开始想了一万种思路,发现都没法维护这个修改 后

2016-08-22 13:13:19 480

原创 [Codeforces 673E] Levels and Regions (期望+斜率DP)

Codeforces - 673E 有 NN个关卡,可以分为 KK块,每个关卡都有个权值 tit_i 每次选择最早没有通关的关卡块,设这个关卡包含了[i,j][i,j]的游戏 选到最早没有通关的关卡是kk, 选到 kk的概率是 P=tk∑jx=ixP = \frac {t_k} {\sum_{x=i}^j x} 选到一个关卡一定能通关,花费一小时 求合理分块的情况下,通

2016-08-20 14:04:57 403

原创 [Codeforces 689E] Mike and Geometry Problem (贡献计数+静态区间更新)

Codeforces - 689E 给定 nn条 x轴上的线段,问从中任选 kk条的交集的长度的和是多少对于数轴上的每一点,计算它对答案的贡献 比如一条线段 [l,r][l,r],那么我在 [l,r][l,r]的区间上都加 1 最后枚举数轴上的每一点,可以得出它被多少条线段覆盖过 然后用组合数算一算即可 当然坐标要先离散化一下,然后由于是静态的区间更新,所以直接差分即可#pragma

2016-08-20 09:45:02 318

原创 [Codeforces 689D] Friends and Subsequences (二分+稀疏表)

Codeforces - 689D 给定两个序列 AA,BB,求问有多少个区间 [l,r][l,r]满足 max(A[l,r])=min(B[l,r])max(A[l,r]) = min(B[l,r])考虑枚举区间左端点,移动右端点的过程中 max(A[l,r])max(A[l,r])肯定越来越大,min(B[l,r])min(B[l,r])越来越小 用 d=max(A[l,r])−

2016-08-20 08:48:59 641

原创 [Codeforces 272E] Dima and Horses (图染色构造)

Codeforces - 272E 有 NN匹马,其中有一些马是敌对关系,要求将整个图分为两部分, 每部分里的任意一匹马在同一部分中的敌人不超过一个 其中任意一匹马的敌人不超过三个,无解输出 -1首先分析一匹马的至多三个敌人的所有状态,发现不可能无解 直到了这点以后就可以随便搞了 首先将所有点都染成 0,然后找到其中不满足条件的丢到队列里 然后不断地更改不满足条件的颜色,再将

2016-08-17 17:06:25 309

原创 [HDU 5845] Best Division (xor-trie+dp)

HDU - 5845 给定一段数列,将其划分成最多的段 并且每段长度不超过 L且异或和不超过 X有一个很显然的 (N2)\mathcal{O}(N^2)的dp做法 dp[i]dp[i]表示到 ii为止最多能分成多少段 然后从前面最多 LL个 dp值转移出来 但是对前面 LL个 dp可以用 xor-trie维护一下 这样一来时间复杂度就是 (Nlog(A))\mathcal{O

2016-08-17 11:18:49 868

原创 [HDU 5833] Zhu and 772002 (高斯消元)

HDU - 5833 有 NN个数,每个数的所有质因子都不超过 2000 问选择其中若干个数使他们的乘积为平方数的方案数 其中 N≤300N\le 300CCPC16网赛的题,据说是原题,学长直接把以前的代码贴上去就过了 显然题目可以转化为选择若干个数,使他们的每个质因子的次幂和为偶数 首先设 xix_i为是否选择第 ii个数,xix_i的取值为 0或 1 分解每个数,然后根

2016-08-16 10:42:39 306

原创 [Codeforces Gym100851A] Adjustment Office (脑洞)

Codeforces - Gym100851A (NEERC15 - A) 给一个 N×NN\times N的格子,位于格子有一个权值,为 x+yx+y 询问 QQ次,询问一行或者一列的权值和,然后清空这一行或这一列 其中 N<=106N<=10^6,Q<=105Q<=10^5由于每次都会清空,所以一个点的权值只会被加一次 并且权值的分布相当有规律 所以只要统计一下哪些行、哪些

2016-08-15 19:55:51 520

原创 [HDU 4609] 3-idiots (计数+FFT优化卷积)

HDU - 4609 给定 NN根木棍,随机选择其中三根木棍, 问三根木棍能组成三角形的概率是多少首先要算出能组成三角形的方案数 直接的想法是 (N3)\mathcal{O}(N^3)枚举三条边 但实际上,可以利用卷积预处理出枚举两条边的所有情况 只要记录下长度为 ii的木棍的数量 cnt[i]cnt[i] 然后再将两个序列卷积即可 之后对 A[i]A[i]排序,枚举第三条边

2016-08-15 19:23:07 327

原创 [Codeforces Gym100851J] Jump (构造+脑洞)

Codeforces - Gym100851J (NEERC15 - J) 交互题,有一个隐藏的长度为 NN的 01串 SS 每次可以询问一个 01串 QQ,如果两串有一半相等或者全部相等 将会返回 N2\frac N 2或者 NN,否则都返回 00 最多可以询问 N+500N+500次,如何得到这个隐藏串 SS构造好题! 做法就是先随机构造串,直到返回 N2\frac N

2016-08-15 17:56:58 663

原创 [HDU 5730] Shell Necklace (FFT+CDQ分治)

HDU - 5730 给定一段长度为 NN的序列,长度为 ii的连续一段有 aia_i种染色方案 问一共有多少中染色方案,其中 N≤105N \le 10^5一个很显然的dp方程,设 dp[i]dp[i]为前 ii个的染色方案 dp[i]=∑j=1ia[j]∗dp[i−j]dp[i] = \displaystyle\sum_{j=1}^{i} a[j]*dp[i-j] 这很显然就是一

2016-08-13 13:32:42 643

原创 [HDU 1402] A * B Problem Plus (FFT入门)

HDU - 1402 两个大整数的高精度乘法由于 N比较大,所以暴力模拟是不行的 要用到 FFT,FFT入门题了…… 至于 FFT,基本是看这里学的,代码也基本是抄的 orz#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <iostream>#include <cstdlib

2016-08-12 19:41:10 451

原创 [HDU 5826] physics (简单物理题+简单积分)

HDU - 5826 直线轨道上放着 NN个球,他们有着初始速度和位置并进行弹性碰撞, 他们的加速度和速度满足关系 a×v=Ca\times v = C,其中 CC是常数 问 tt秒后速度第 kk小的球的速度首先弹性碰撞交换速度,所以根本不必管位置 其次速度和时间的关系可以直接积出来 v=2Ct+v20‾‾‾‾‾‾‾‾√v=\sqrt{2Ct+v_0^2},其中 v0v_0是初

2016-08-11 19:48:54 356

原创 [HDU 5831] Rikka with Parenthesis II (实现)

HDU - 5831 给定一个括号序列,交换其中的两个括号 问是否能使得交换一次后的序列合法贪心乱搞首先一个括号序列左括号和右括号数量不相等,则不合法如果一个序列已经合法了,并且有两个及以上的左括号 那么交换这两个左括号,依旧合法,否则就是不合法的如果一个序列开始不合法,那么找到最左边使得序列不合法的右括号 以及最右边使得序列不合法的左括号,交换他们的位置, 再check一下

2016-08-11 19:34:43 325

原创 [HDU 5821] Ball (贪心)

HDU - 5821 给定一列球,每种球有一个颜色,同一颜色的球无区别 每次选择一个区间,任意排列其中的球 问是否能从初始的排列变成给定的一个排列首先有一个很重要的性质,就是同种颜色的球 最终排列的相对顺序是不变的 也就是说,颜色为 1的第一个球,最后还是在同类球的第一个 预处理出每个球在最终排列上的位置,然后对于每次操作 尽量让最终排列靠前的在区间的前面 即按最终位置

2016-08-11 19:25:04 443

原创 [HDU 5823] color II (状压+暴力枚举子集)

HDU - 5823 给定一个 NN个点的图, 求它的每一个子图的最小染色数 其中 N≤18N \le 18没想到枚举子集居然是 3N3^N次方的 没想到 3N3^N也能过…… 总之就先枚举每一个子图,再枚举子图的一个子集 如果这个子集是一个独立集的话,这个子集就涂同一个颜色 然后从割掉这个独立集剩下的图的状态转移出来,取一个min别管复杂度了,总之是过了,1600+ms

2016-08-11 19:08:55 1245

原创 [HDU 5819] Knights (稍难的概率DP)

HDU - 5819 棋盘上有 NN个骑士,他们要么向左走,要么向右走 他们相遇时会发生决斗,每个人都有 12\frac 1 2的概率获胜 胜者继续前进,败者直接退出游戏,骑士走到棋盘边缘会回头 问第 NN个骑士获胜的概率看了题解的状态,感觉太神了…… 首先第一个骑士肯定向右,第 NN个肯定向左 第 NN个骑士获胜的条件,即为打败所有左边向右走的骑士 设 dp[i][j

2016-08-10 18:59:52 705

原创 [HDU 5820] Lights (扫描线+主席树)

HDU - 5820 给定一个网格图,上面有 N个灯 求任意两个灯之间,是否至少存在一条曼哈顿最短路径 使得路径上的每一个拐点都有一个灯主席树+扫描线 枚举每一个节点,利用主席树维护一下 这个点及左边最近节点、上面最近节点三个点构成的矩形 以及此点、右边最近节点和上面最近节点三个点构成的矩形 这两个矩形内是否存在点,如果存在,那么就是不合法的图具体主席树就是每一行建一棵树,

2016-08-10 16:20:27 654

原创 [HDU 5818] Joint Stacks (脑洞+实现)

HDU - 5818 给定两个栈 A和 B,开始栈为空,有三种操作 向某个栈里 push一个数,从某个栈里 pop一个数 将两个栈 merge到一个栈,按时间顺序将所有元素压入这个栈这题队友赛上写了个线段树的做法 虽说也不是毫无思维难度,但是比起题解就显得很蠢了 题解的做法是开一个新栈 C 每次 merge的时候,按时间顺序归并地压入新栈 C 之后 push不变,只不过 p

2016-08-09 20:28:09 453

原创 [HDU 5816] Hearthstone (概率DP+状压)

HDU - 5816 牌堆里有 NN张 A类卡,MM张 B类卡 A类卡能让你从牌堆里抽两张卡 第 ii张 B类卡能让你对对手造成 xix_i点伤害 刚开始从牌堆抽 1张牌,并且对手有 PP点生命值 问一回合内打倒对手的概率是多少赛后看了下题解,感谢出题人让我 (N2N)\mathcal{O}(N2^N)过了 做法就是状压一下每张牌抽到的情况,dp[mask]dp[m

2016-08-09 19:53:47 1132 2

原创 [HDU 5810] Balls and Boxes (随机变量计算期望)

HDU - 5810 有 nn个球, mm个盒子,随机将球放入盒子中 求每个盒子球个数的方差的期望值 方差 V=∑i=1mXi−X¯2mV = \displaystyle\sum_{i=1}^m \frac {X_i - \bar{X}^2} m推推公式啥的,赛上没推出来,最后找规律过得 果然期望和概率还是太差了啊 orz首先可以展开公式,V=∑i=1mXim−2X¯nm+X¯

2016-08-09 19:06:13 627

原创 [HDU 5451] Best Solver (向下取整+矩阵快速幂+广义Fibonacci降幂)

HDU - 5451 y=(5+26√)1+2xy = (5+2\sqrt{6})^{1+2^x} 给定 xx和 质数MM,求 ⌊y⌋%M\lfloor y\rfloor\%M首先 xx很大,肯定要快速幂一下 有一个向下取整,所以要把底数配成整数 设 An=(5+26√)n+(5−26√)nA_n = (5+2\sqrt{6})^n + (5-2\sqrt{6})^n 可以发现,A

2016-08-09 10:16:22 740

原创 [Ural 1132] Square Root (二次剩余方程)

Ural - 1132 求解一个二次剩余方程裸题裸题…… 根据二次剩余的相关定义与解法 如果 nn是 modp\mod p的二次剩余,对于方程 x2=n (modp)x^2 = n\ (\mod p) 如果modp\mod p的剩余系中存在 aa使得 w=a2−nw = a^2 - n不是modp\mod p的二次剩余 那么 x=(a+w‾‾√)p+12x = (a+\sqrt{w}

2016-08-09 09:43:48 401

原创 [Codeforces 231E] Cactus (环缩点+LCA)

Codeforces - 231E 给定一个仙人掌图,问从 x点走到 y点有多少条路径 两条不同的路径必须每一条边都不相同写了这个图论,相当于写了一个模拟 本来都是贴板的事,但是到仓库一看我并没有板 可能当初觉得很简单就没留板…… 所以全程手写了,而且实际上我对图论并不是很熟 幸好不是在赛上,不然手速肯定被完爆x到 y的路径,经过每个环的时候,就有两种走法 做法就是用边双联通分

2016-08-08 11:47:00 491

原创 [Codeforces 225E] Unsolvable (向下取整+梅森质数)

Codeforces - 225E 正整数 z,使得方程 z = [x/2]+y+xy 没有正整数解数论好题! 首先显然要把向下取整的去掉 令 x=2k+1 (k≥0)x=2k+1 \ (k \ge 0) z=k+2y+2kyz = k + 2y + 2ky z=k+2y(k+1)z = k + 2y(k+1) z+1=(2y+1)(k+1) (k≥0)z+1 = (2y+1)

2016-08-08 09:23:14 278

原创 [HDU 5790] Prefix (字符串hash+主席树)

HDU - 5790 给定 NN个字符串,问区间 [L,R][L,R]的字符串中 共有多少个不同的前缀 其中所有字符串的长度和不超过 10510^5 并且此题强制在线由于所有字符串的长度和不超过 10510^5 所以所有可能的前缀最多 10510^5 给所有前缀hash一下,然后问题就转化为了 在某个区间 [l,r][l,r]上,有多少个不同的数,即 SPOJ - D-

2016-08-06 16:08:03 604

原创 [SPOJ 3267] D-query (主席树入门)

SPOJ - 3267 给定一个序列,询问区间内有多少个不同的数这题有离线询问+树状数组的解法 这里是主席树的在线解法 基本思路和离线的一样,只不过在线了一下 能离线还是离线比较好#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <iostream>#include <cst

2016-08-06 14:45:06 569

原创 [SPOJ 3267] D-query (离线询问+树状数组)

SPOJ - 3267 给定一个序列,询问区间内有多少个不同的数刚开始题目读错了,以为求的是区间内有多少个不重复出现的数 导致我想了半天不懂别人怎么树状数组离线的实际上只要保证区间内每个数只被统计过一次就好了 先将询问离线,对区间右端点排序 然后用权值树状数组来标记一下,在每个数出现的位置加上一个 1 相同数尽量地将权值放到最右边的那个数上,然后删去前一个位置的权值#pragma co

2016-08-06 13:39:57 410

原创 [HDU 2665] Kth number (主席树入门)

HDU - 2665 静态区间第 k大这道题有很多种比主席树简单了一万倍的算法 不过作为主席树入门还是很合适的 orz这题的具体做法就是,先离散化值,在建立权值线段树 从左到右扫一遍数组,对第 i个数,在 A[i]的位置 +1 然后询问 [l,r]的时候直接找出 l-1和 r这两个时间的主席树 根据左儿子值的个数,来决定接下来是往左走还是往右走 和整体二分一样,往右走的时候要减去左边

2016-08-05 19:47:53 405

原创 [HDU 5802] Windows 10 (贪心乱搞+加减凑数)

HDU - 5802 给定一个数 PP,可以对 PP进行三种操作 停顿一次,给这个数 +1,-x 其中减法操作,如果上次操作为 -x,那么这次减的数就为 2x 如果上次操作为加或者停顿,那么这次就减去 1 其中 PP最小为 0, 问最少几次能把 PP变成 QQ贪心XJB乱搞 如果 P≤QP\le Q,直接不停地 +1即可 如果 P>QP >Q,那么先不断地减,直到再

2016-08-05 11:40:21 330

原创 [HDU 5800] To My Girlfriend (计数DP)

HDU - 5800 有 nn个物品,f(i,j,k,l,m)f(i,j,k,l,m)为选定 ii,jj,不选 kk,ll, 总权值为 m的方案数 求 ∑i=1n∑j=1n∑k=1n∑l=1n∑m=1sf(i,j,k,m)\displaystyle\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{n}\sum_{l=1}^{n}\sum_{m=1}^{s

2016-08-05 09:41:11 375

空空如也

空空如也

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

TA关注的人

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