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

您们怎么都这么强啊……

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

原创 [LightOJ 1342] Aladdin and the Magical Sticks (期望的线性性质+几何分布+邮票收集问题)

LightOJ - 1342 有 N根棍子,每根棍子都有一个权值 其中有若干根可识别的,若干根不可识别的 抽到了可识别的棍子,就不放回,抽到了不可识别的,就要放回 问所有棍子都至少被抽过一次后的期望权值和根据期望的线性性,E(CX)=CE(X)E(CX) = CE(X) 所以可以对每根棍子求一下它被抽到的期望次数,再乘以它的权值 首先对于可识别的棍子,它被抽到的期望次数为

2016-07-31 15:57:06 921

原创 [LightOJ 1321] Sending Packets (SPFA+概率DP)

LightOJ - 1321 给定一张无向图,每条边都有一个通过的概率 如果无法通过,那么就要回到起点重新出发 从起点到终点的时间固定为 KK,如果成功到达, 又需要额外花费 KK的时间,问走 SS次的最小期望时间首先可以跑一遍SPFA求出一次通过的最大概率 pp 设跑一次的最小期望时间为 EE,E=p×2K+(1−p)×(E+2K)E = p\times 2K + (1-

2016-07-31 12:08:30 517

原创 [LightOJ 1284] Lights inside 3D Grid (概率+递推求通项公式)

LightOJ - 1284 一个三维的空间格子,每次随机选择两个点 由这两个点构成体对角线的正方体内的格子翻转状态 开始所有格子状态为 00,问最后状态为 11的格子的期望个数对于每个格子,计算他对答案的贡献 枚举每个格子,对于每一维, 很容易算出这一维上它不被选到的概率 用 11减去,再把三维的概率乘起来,就是他被选中的概率然后翻转 KK次就比较有技巧了 由于 KK比较

2016-07-30 21:17:29 462

原创 [LightOJ 1274] Beating the Dataset (期望DP)

LightOJ - 1274 题目等价于,给定一个开头为 1的 01串, 求其中相邻两个字符不相等的期望对数一开始煞笔了,其实 YES和 NO的个数是可以直接算出来的 算出来之后,设 dp[i][j][k]dp[i][j][k]为第 ii位,jj表示当前是 YES(1)或 NO(0) kk表示 ii位及以前一共有多少个 YES,然后倒着就推出来了 下一位出现 0或 1的概率可以用剩

2016-07-30 19:07:14 939

原创 [LightOJ 1265] Island of Survival (概率)

LightOJ - 1265 一个岛上有若干只虎,若干只鹿,一个人 每天只有两个动物会相见 如果人和虎相见,人死 如果鹿和虎相见,鹿死 如果虎和虎相见,虎死 其他情况均没有伤亡,各种情况均等概率 问人活到虎全死光的概率有多少感觉二维dp直接搞正确性很显然 但是网上有另一种做法,就是直接忽略掉鹿的存在,当没有鹿 不是很懂这样做的正确性,网上的解释是鹿吃与被

2016-07-30 08:59:33 258

原创 [HDU 5728] PowMod (欧拉函数的积性+欧拉公式降幂+欧拉筛)

HDU - 5728 求 K=∑i=1mϕ(i∗n)mod1000000007K = \displaystyle\sum_{i=1}^m {\phi(i*n)} mod 1000000007 其中 nn是 square-free number 求 ans=KKKK..modpans = K^{K^{K^{K^{..}}}}\mod p先求 KK 由于 ϕ(n)\phi(n)是积性

2016-07-29 09:40:41 667

原创 [HDU 5754] Life Winner Bo (有平局的博弈+威佐夫博弈)

HDU - 5754 有一个 N×MN \times M的国际象棋棋盘,刚开始左上角有一个棋子 每次只能往右下角移动,谁先到达右下角谁就赢 如果无论如何也到不了右下角,就平局 有四种棋子,王、车、马、后博弈四合一王 打表即可车 相当于两堆分别为 N−1N-1和 M−1M-1的石子的 NimmNimm游戏马 有平局的游戏,规则如下 如果一个局面能取得胜利,那么先手

2016-07-28 09:54:18 374

原创 [Codeforces 451B] Sort the Array (实现)

Codeforces - 451B 给定一个序列,其中每个数都不相同 问是否能在翻转其中一段后,整个序列变得单调递增实现题 首先设一个 BB数组为 AA数组排序后的结果 由于只能翻转一个区间,那么我假装 A是满足要求的 找到最小的 A[l]≠B[l]A[l] \ne B[l],最大的 A[r]≠B[r]A[r] \ne B[r], 翻转的区间将会是 [l,r][l,r]这个区间,

2016-07-28 09:24:07 420

原创 [Codeforces 451A] Game With Sticks (博弈)

Codeforces - 451A N根横向木棍,M根纵向木棍组成了一个网格图 每次可以选择一个交点,去掉所有通过这个交点的木棍 两个人交替进行这个游戏,问最后谁能胜利每次选择的一个交点,必然去掉了一根横向木棍和纵向木棍 所以每次 N和 M都减一 当其中有一个为 0的时候,就是先手必败态 所以只和 N、M中较小的那个的奇偶性有关#pragma comment(linker,

2016-07-28 08:49:42 499

原创 初等数论笔记

威尔逊(Wilson)定理 当 p为质数时 (p−1)!=p−1=−1 (modp)(p-1)! = p-1 = -1 \ (\mod p)除了 11和 p−1p-1之外的数都可以和自己的逆元相乘得到幺元 11其逆定理为,若 p>1p>1且 (p−1)!=−1 (modp)(p-1)! = -1\ (\mod p),则 pp为质数费马(Fermat)小定理 当 pp为质数,且 xx与

2016-07-27 22:36:08 1094

原创 [HDU 5755] Gambler Bo (高斯消元)

HDU - 5755 给定一个 N×MN \times M的矩阵,每个格子都有一个数, 并且这些数都是 mod 3mod\ 3的 每次选一个格子操作,可以在这个格子加 2 mod 32\ mod\ 3 在周围 44个格子加 1 mod 31\ mod\ 3 问如何操作使得所有格子均为 00类似于开关问题,但是这个 NN,MM比较大 所以没办法状压dp 但是可以用列方

2016-07-27 15:52:30 385

原创 [HDU 5762] Teacher Bo (鸽巢原理)

HDU - 5762 给定平面上的若干个点,问是否存在两个点对 A,B{A,B},C,D{C,D}使得前者的曼哈顿距离等于后者首先所有的坐标不会超过 10510^5, 意味这曼哈顿距离的范围在 00到 2×1052 \times 10^5之间 并且它只要判定是否存在解所以我们直接暴力枚举点对,然后把得到的曼哈顿距离标记一下 如果这个距离值之前已经出现过了,说明有解,直接跳出循环

2016-07-26 19:37:15 257

原创 [HDU 5753] Permutation Bo (期望的线性性质)

HDU - 5753 给定一个数列 CC,以及一个 NN的排列 HH 如果 HiH_i比两边的数都大,那么f(H)f(H)就累加上 CiC_i 问 f(H)f(H)的期望取值为多少根据期望的线性性质,对于 CC中的每一个数 求它被统计入答案的概率,然后再乘以这个数算出贡献如果它在数列两端,那么一共只有两种排列,所以概率是 12\frac 1 2 如果它在数列中间,那么有 3!3

2016-07-26 19:22:12 809

原创 [Codeforces 67C] Sequence of Balls (字符串DP)

Codeforces - 67C 给定两个字符串 AA和 BB,要求用四种操作将 AA转化为 BB 其中可以在 AA的任意位置添加、删除或替换任意字符 或者可以交换相邻的两个字符,其中交换两次的代价大于等于添加一次再删除一次由最后一个条件可得,将一个字符连续交换两次及以上是不划算的 因为你可以把它删掉,再在另一位置加入 设 dp[i][j]dp[i][j]表示 AA字符串 ii

2016-07-26 11:53:20 358

原创 [Codeforces 66C] Petya and File System (模拟)

Codeforces - 66C 给若干个文件路径,问子文件夹以及子文件最多为多少模拟题,可以直接用文件的绝对路径来表示一个文件 这样就不用担心不同路径文件的重名问题,也不用建树了 其次子文件夹和子文件数最多的肯定是根目录下的文件夹 用set维护一下这些文件夹的情况即可,set的好处是不用去重#pragma comment(linker, "/STACK:102400000,102400

2016-07-25 15:15:27 440

原创 [Codeforces 66D] Game (构造)

Codeforces - 66D 构造 N个数,使得其中任意两个不互质, 任意两个不相等,并且所有数的GCD=1如果构造的方法不机智,那么做法就是错的 我原来的做法是,构造前 N-1个数为 2乘以一个质数 2*3、2*5、2*7……然后最后一个数是 3*5*7…… 这样前 N-1个数互相不互质,第 N个数与前面的数也都不互质 并且所有数的 GCD=1但是这样太蠢了,最后一个数要用

2016-07-24 18:48:15 335

原创 [HDU 5727] Necklace (暴力 + 二分图匹配)

HDU - 5727 有阴阳两种珠子交替地串成一个环, 其中某些阳与某些阴串在一起时,会变得黯淡 求一种合理的摆放方式,使得黯淡的阳最少 输出这个数量首先暴力枚举所有阴的摆放方式 然后对于每一个阴的摆放方式,两个阴之间有空隙 阳可以从阴中插空放入,而对于每一个空和一个阳, 如果这个阳放入是合法的,就连一条边 最后再跑一遍二分图最大匹配,用 N减去匹配数就能得到最少黯淡

2016-07-24 16:40:16 265

原创 [HDU 5739] Fantasia (点双联通分量 + Block Forest Data Structure)

HDU - 5739 给定一张无向图,每个点有个点权 一个图的权值计算为,现将同一联通分量的点权相乘 再将不同联通分量的点权相加 求图割去一个点后的权值其中对于哪些非关节点,权值比较好计算 而对于关节点,割去之后图比较复杂 所以要用到一个叫做 Block Forest Data Structure的建图方式 首先求出图中的点双联通分量, 对于每一个点双,新建一个点向其

2016-07-24 16:31:47 465

原创 [HDU 5729] Rigid Frameworks (二分图联通方案计数)

HDU - 5729 给定一个 N*M的矩形格子,问在一个格子里只添加一条斜线, 将整个图形变成一个刚性的图形的方案数有多少种根据 Project Euler 434,问题可以转化为 一个左边有 NN个点,右边有 MM个点的二分图的联通方案计数 首先对于一个 N∗MN*M的格子图,每个格子要么不加, 要么向左加一条斜线,要么向右加一条斜线,所以总方案数 2N∗M2^{N*M} 接

2016-07-24 09:02:41 824

原创 [HDU 5741] Helter Skelter (二分)

HDU - 5741 给定一个二进制的字符串,有 M次询问 问是否存在含有 a个 0 ,b个 1的区间如果把所有答案预处理出来, 发现答案 (a,b)在平面上构成了一个很有规律的封闭图形 而选定区间包含的块全是完整的时候,答案正好落在边界点上 所以可以把所有边界点处理出来,然后二分查找答案这个二分不是很好写,要根据图形的规律想好了再写#pragma comment(linker,

2016-07-23 13:14:45 497

原创 [HDU 5735] Born Slippy (机智暴力)

HDU - 5735 给定一棵树,要求从这个点到它祖先的链上不要求连续地选若干个点 使得序列中相邻点权的位运算和加上此点点权最大,设这个值为 f[i]f[i] 输出 ∑Ni=1i∗f[i]\sum_{i=1}^N i*f[i]赛上没看这题……赛后一看题解,发现是个暴力,所以果断写了一发 拿与运算举例,首先点权是固定的,所以只要求位运算和最大就好了 设 dp[i]=max(dp[

2016-07-22 17:17:54 882

原创 [HDU 5738] Eureka (计数)

HDU - 5738 集合的定义可以转化为 集合内点均在一条直线上 问满足条件集合的个数貌似出题人很不厚道地卡了常数 原来赛上写的小常数 O(N2logN)O(N^2logN)赛后过不了了 于是我又找人学习了一个常数更小的 O(N2logN)O(N^2logN)首先把所有重复位置的点缩起来 枚举一个点 ii作为线段的一端,再枚举另外一个点 jj形成一条射线 计算斜率,存到m

2016-07-22 13:14:49 627

原创 [HDU 5745] La Vie en rose (DP+bitset卡时)

HDU - 5745 给定两个字符串 AA,BB 每次可以将 BB串中相邻的两个字符位置交换 每个字符只能改变一次位置 问通过这样的方式,BB 能在 AA串的哪些位置成为 AA的子串 其中 |A|<=105|A|<=10^5,|B|<=5000|B|<=5000据说 kmpkmp是不行的,据说暴力匹配跑得比谁都快 正解复杂度还是很科学的 首先得出一个 dpdp式子,

2016-07-22 10:20:03 954 5

原创 [HDU 5731] Solid Dominoes Tilings (轮廓线DP+容斥定理)

HDU - 5731 多米诺骨牌的矩形完全覆盖, 要求统计没有横切割线和竖切割线的方案数第一部分就是轮廓线DPDP的入门裸题 预处理出任意矩形大小的方案数 RES[i][j]RES[i][j] 不过我怀疑这部分不提前打表的过不了第二部分是一个容斥 先对列容斥,用状压的方式枚举出所有列的分割情况 然后计算,当前列分割情况下,行没有分割的方案数 dp[n]dp[n] 然后再用容斥,

2016-07-20 21:04:01 1346

原创 [POJ 1741] Tree (树的分治)

POJ - 1741 给定一棵树,计算长度不超过 K的链的个数树分治入门题,看着题解刷的 选定一个点,首先一条链要么在此点的子树上 要么这条链经过这个点 在子树上就可以划分为子问题,然后分治处理 经过这个点的链,可以把子树上的点到根的距离处理出来 然后对这些距离排个序,就能 O(n)统计选点要选重心,重心的所有子树大小不超过 N/2 这样保证分治至少是 logn层的,不会发生退化#

2016-07-20 18:22:55 277

原创 [HDU 5726] GCD (倍增法+二分)

HDU - 5726 给定一个序列,每次询问一个区间 输出这个区间上所有数的GCD,以及GCD与其相同的区间个数赛上太智障了读错了题,以为是求得是GCD相同的子区间的个数一个连续区间的GCD,用倍增法预处理一下,就能做到 O(1)查询 对于相同区间计数,就把询问先离线一下 枚举区间左端点,区间GCD是随右端点递减的,并且是阶梯式的 并且这样一个阶梯递减的很快,可以当作log的 所

2016-07-19 19:25:12 2410

原创 [HDU 5296] Annoying problem (DFS序性质+LCA)

HDU - 5296 一棵树上有若干个点,每条边有一个边权 给一个初始为空的集合,每次向集合内添加一个点或者删除一个点 问每次操作结束后,将集合内所有点连起来的边权和为多少假设集合内已经有一些点,那么再加一个点所增加的边权 将会是这个点到某一条链的距离但是这条链不能随便挑选,否则可能会经过已经选择的边 挑选策略就是,找到集合内dfsdfs序比当前点大和小的两个点组成的链 换句

2016-07-19 09:32:01 782

原创 [HDU 5413] CRB and Roads (拓扑排序+bitset卡时)

HDU - 5413 求问一个有向无环图内有多少个冗余边 冗余边的定义为,对于一条边 (u,v) 如果删去这条边,u依旧能到v,则此边是冗余边这道题看起来不可做的样子,看了下题解是暴力 对于每个点记录一下有哪些点可以到达这个点 由于是有向无环图,所以可以进行一个拓扑排序来解决求完之后,对于每个点,将其前驱按拓扑序排序 从前驱拓扑序大的开始处理,如果处理到一条边 发现其前驱在

2016-07-18 21:19:42 461

原创 [HDU 5412] CRB and Queries (整体二分)

HDU - 5412 动态区间第 K小很经典的题,可以用线段树套平衡树在线解决 但是这题貌似卡树套树,况且我也不会手写平衡树可以使用“整体二分”的分治思想解决将每个数据处理成 (x,y,v)(x, y, v)的三元组 其中 xx为这个数的下标,yy为大小,vv为 1时表示添加,-1表示删除 开始时读入 NN个数据,进行 NN次添加操作 修改操作视作删除这个数,然后在原位置再添加一个数这

2016-07-18 20:29:41 320

原创 [HDU 5408] CRB and Farm (几何+凸包)

HDU - 5408 给定一个NN个点的凸包,凸包内有 KK个点 求问是否能从凸包上选择不超过 2∗K2*K个点 使得他们连成的凸包能完全包住这 KK个点 如果能,则逆时针输出构造凸包的顶点编号对内部的 KK个点求一次凸包,此内凸包顶点不超过 KK 问题就转化为求一个凸包包裹内部的凸包 将 KK个点组成的内凸包的每个顶点投射到外凸包上 投影点连成的凸包必定包裹内凸包

2016-07-18 20:09:17 352

原创 [HDU 5406] CRB and Apple (双线程DP+树状数组)

HDU - 5406 一棵树上有若干个苹果,每个苹果有一个高度值和美味值 两个人一棵树上从高到底摘苹果,摘到苹果后,可以选择给任意一个人吃,或者扔掉 但是每个人吃的苹果的美味值必须是非严格递增的 问两个人最多可以吃多少个苹果首先按高度先排序,问题就转化为求两个 LIS,使得他们的长度和最大费用流有一个费用流做法,从前向后 D小的向 D大连一条流量为 1的边 每条边费用为 1

2016-07-18 19:55:21 424

原创 [HDU 5414] CRB and String (构造+脑洞)

HDU - 5414 给定A,B两个字符串,每次可以选择A中一个字符, 然后在其后添加一个与选择的那个字符不同的字符 问 A串是否可能构造成 B串这是一个构造题, 看起来在 A中构造 aaaa这样连着的字符串是不行的 但实际上,假设有 A串 baaa,B串 baaaa, 我可以选择在字符 b后面添加一个 a 意识到这点以后,可以发现几乎可以任意添加字符 只要满足以下条件:

2016-07-18 16:23:18 263

原创 [HDU 5409] CRB and Graph (桥+性质)

HDU - 5409 当一条边是桥的时候,输出两边双联通分量中各一个点 要求输出的第一个点序号小于第二个点,,且第一个点尽可能大, 满足前一个条件的情况下,第二个点尽可能小求桥没啥好说的,直接 Tarjan走起,但是输出就比较厉害了首先如果桥边被割掉了,两边最大分别是 max0, max1 如果 max0>max1 ,那么输出 max1 max1 +1,否则输出 max0, ma

2016-07-18 09:09:48 317

原创 [Codeforces 697C] PLEASE (矩阵特征向量)

Codeforces - 697C 有三个倒扣着的碗,刚开始钥匙放在中间 之后每次将中间的碗和其他碗交换位置, 交换选择的碗是等概率的 问最后钥匙在中间的概率是多少很容易就写出一个dp式子 然后将转移过程写成矩阵的形式 然后求矩阵的特征值和对应的特征向量 再把初始状态用特征向量表达,最后就能得出概率#pragma comment(linker, "/STACK:1024

2016-07-17 21:31:41 456 1

原创 [HDU 5411] CRB and Puzzle (矩阵加速DP + 前缀和矩阵|等比求和快速幂 )

HDU - 5411 有 N种拼图,其中每种拼图后面只能接给定的几种拼图 问接成不超过 M长度的拼图的方案数是多少普通dp的话被卡时了,并不能过。所以利用矩阵加速。 构造矩阵: [M111]∗[dpiSi−1]\left[ \begin{matrix} M & 1 \\ 1 & 1\end{matrix} \right] *\left[ \begin{matrix

2016-07-17 19:56:11 654

原创 [Codeforces 697F] Legen... (AC自动机+取max的矩阵快速幂)

Codeforces - 697F 构造一个长度为 ll的串,其中每包含一个第 ii个单词,能获得 aia_i的价值 单词可重复,也可相互覆盖,问最大价值是多少一看就是AC自动机,但是 ll特别大,有 101410^{14},所以要用矩阵快速幂 但是这个dp过程是取max的,所以矩阵和一般的都不一样 由于运算符的抽象性, 所以可以把矩阵乘法中的整数的乘法,即加权的方式,视作加法

2016-07-16 21:36:57 736

原创 [Codeforces 451E] Devu and Flowers (母函数+lucas定理)

Codeforces - 451E 有 nn种花,每种花有 fif_i支,问从中选出 ss支的方案数 其中 n≤20n \le 20,S≤1014S \le 10^{14},fi≤1012f_i \le 10^{12}母函数解法: 构造母函数,(1+x2+x3+...xf1)∗(1+...xf2)∗...(1+...xfn)(1+x^2+x^3+...x^{f_1}) * (1+...

2016-07-15 19:16:13 859

原创 [Codeforces 697D] Puzzles (期望)

Codeforces - 697D 给定一棵树,从1开始,按DFS的方式访问这棵树 每次从父亲节点随机访问儿子,问每个节点被访问到的时间的期望设父亲节点的期望是 E,它有 n个儿子 其某个儿子是第 i次被访问到的,概率为 1n\frac 1 n 设有个兄弟在它之前被访问了,其概率为 (i−1)∗(n−2)!(n−1)!\frac {(i-1)*(n-2)!} {(n-1)!} 他对

2016-07-15 19:05:51 729

原创 [HDU 4349] Xiao Ming's Hope (lucas定理)

HDU - 4349 给定n求满足 C(n,m)为奇数的 m的个数首先朴素的想法是把每一个组合数都求出来 但是组合数比较大,所以自然的就想到 mod 2 所以很关键的一点是要转化为 C(n,m)%2 即 C(n,m)%2 = 1 的m的个数 利用lucas定理展开,审视乘积中的每一个组合数 由于 C(0,0) = C(1,0) = C(1,1) = 1,C(0,1) = 0 所以要

2016-07-15 12:08:31 235

原创 [HDU 3037] Saving Beans (隔板法+lucas定理)

HDU - 3037 有不超过 m个球,放入 n个盒子里,求方案数m个球放入 n个盒子,允许盒子为空 用隔板法可得方案数为 C(m+n-1, m) 所以即求 C(n-1, 0) + C(n, 1) + C(n+1, 2) + … + C(m+n-1, m) 利用组合数公式 C(n, k) = C(n-1, k-1) + C(n-1, k) 原式 = C(n, 0) + C(n, 1)

2016-07-15 11:32:32 297

空空如也

空空如也

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

TA关注的人

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