自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (3)
  • 收藏
  • 关注

原创 Codeforces Round #443 (Div. 2) D,E

看了题解发现做题的时候比较智障。D: 给一个长度为n的序列,每个序列有一个颜色aia_i,重复m次,一旦相同的颜色连续的长度大于k,这段就将被消除,求最终序列的长度。 Sol: First, let’s see what happens inside one bus. We can use a stack containing pairs (city, number of participa

2017-10-28 10:08:57 421

原创 Ural1776: Anniversary Firework(概率DP)

传送门题意: 你n个火箭排成一排 一开始点燃第一个和最后一个火箭 然后每次只能在点燃过的火箭中的火箭 每两次点燃火箭的间隔时间为10s求 点燃n个火箭等待时间的期望题解: 我还是太Naive了,一开始以为是期望+区间DP,dp[i]表示合并长度为i的区间的期望时间,转移直接取两段区间的max。后来发现期望DP不能取max,直接不会了。看了题解才知道,合并区间的时间一类的问题可以从概率下手

2017-10-25 17:29:21 322

原创 UVa 11605 : Lights inside a 3d Grid(期望)

传送门题意: 给一个n∗m∗Pn*m*P的长方体,一共有n∗m∗Pn*m*P个灯均匀分布在长方体中,每次随机选择两个灯,把在他们中间的所有灯改变状态(On 或者 Off),一开始所有灯的状态都为 Off,问k步之后期望多少灯亮。题解: 首先,期望是线性的,可以把所有灯亮的概率相加。考虑如何计算每个灯的概率: 先算出每个灯的各个坐标被选取的概率,然后相乘(这个很好求)。设其为pp,那么显然有:

2017-10-25 09:52:14 285

原创 UVa 10529 : Dumb Bones(期望DP)

传送门题意: 你试图把一些多米诺骨牌排成直线,然后推倒它们。但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒,而你的工作也被部分的破坏了。比如你已经把骨牌摆成了DD__DxDDD_D的形状,而想要在x这个位置再放一块骨牌。它可能会把左边的一块骨牌或右边的三块骨牌碰倒,而你将不得不重新摆放这些骨牌。这种失误是无法避免的,但是你可以应用一种特殊的放骨牌方法来使骨牌更多的

2017-10-25 08:17:20 625

原创 BZOJ1419:Red is good(期望DP)

传送门 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。概率DP是真的难。。首先想到期望DP: f[Red][Blue]=RedRead+Blue∗(f[Red−1][Blue]+1)+BlueRed+Blue∗(f[Red][Blue−1]−1)f[Red][Blue]= \fr

2017-10-24 22:13:48 331

原创 NOIP模拟:乘积(状压DP)

题意: 选择不超过KK个NN以内的正整数撑起来,使得乘积是一个无平方因子数(不能够被任意一个质数的平方整除),一共有多少种取法? (n≤500,K≤500)(n\le 500,K \le 500)题解: 首先,很容易想到状压,压缩当前已经选过某质数的状态。对于质数个数小于2020可以直接过,但是问题是现在nn以内的质数个数很多,无法压缩。考虑状压DP的本质:从前往后依次加入数,并更新之前的所有

2017-10-24 19:17:36 494 1

原创 51nod1673 树有几多愁(状压DP)

传送门 lyk有一棵树,它想给这棵树重标号。 重标号后,这棵树的所有叶子节点的值为它到根的路径上的编号最小的点的编号。 这棵树的烦恼值为所有叶子节点的值的乘积。 lyk想让这棵树的烦恼值最大,你只需输出最大烦恼值对1e9+7取模后的值就可以了。 注意一开始1号节点为根,重标号后这个节点仍然为根。:数据保证叶子节点个数<=20。题解:状压DP。首先想到对于每个叶子节点到根

2017-10-23 20:28:56 357 2

原创 BZOJ3928: [Cerc2014] Outer space invaders(区间DP)

传送门题意: 有N个外星人,第i个外星人会在ai时间出现,离你距离di,并且必须在bi之前被消灭。你有一把很NB的武器,攻击范围是个半径为R的圆,R可以任意调整,不过你以R的范围每攻击一次就要消耗R单位能量。外星人被攻击一次就会死掉。求需要消灭所有外星人的最小消耗能量。 N<=300, ai,bi,di<=10000 题解: 感觉这篇题解已经写得非常好了。把每个外星人看做有高度的线段

2017-10-23 17:16:30 385

原创 BZOJ4350: 括号序列再战猪猪侠(区间DP)

传送门 括号序列与猪猪侠又大战了起来。 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个合法的括号序列。 2.若A是合法的括号序列,则(A)是合法的括号序列。 3.若A,B是合法的括号序列,则AB是合法的括号序列。 我们考虑match[i]表示从左往右数第i个左括号所对应的是第几个右 括号,现在他得到

2017-10-21 12:01:18 409

原创 BZOJ4565: [Haoi2016]字符合并(区间DP+状压DP)

传送门 有一个长度为 n 的 01 串,你可以每次将相邻的 k 个字符合并,得到一个新的字符并获得一定分数。得到的新字 符和分数由这 k 个字符确定。你需要求出你能获得的最大分数。题解: 当初想这道题在转移方面想了半天,看了题解才知道原来自己还没有掌握区间DP的精髓。。首先不难发现一个区间的最大分数一定是压缩到最短的时候,这个时候的长度是(modk−1)\pmod {k-1}下的长度,

2017-10-21 09:02:00 563

原创 NOIP模拟:裁剪表格(链表)

题意: 给一个n∗mn*m的表格,每个格子里有一个数字,现在可以交换两个不相交的相同大小里的矩阵的数,要求输出所有操作执行完后的表格。 (n≤1000,.m≤1000)且修改不超过1e5(n\le 1000,.m \le 1000)且修改不超过1e5题解: 链表。%%%凯爷把链表玩得如此之6.考虑建立一个二维链表,记录左边的位置和下面的位置,每次修改只用改四周链表的指向就好了。时间复杂度O(n

2017-10-20 16:29:50 215

原创 NOIP模拟:Box(费用流)

题意: 有n个盒子,每个盒子长lil_i,宽rir_i,大的盒子可以装一个比他小的盒子(可以不断嵌套,但不能并排装),且这一堆盒子的费用为大的盒子的费用,最小化费用。题解:费用流。一开始建图想了半天,一直往最小费用上想,思考怎么把一串盒子串起来。后来发现这种方法行不通,可以换一种思路: 一个盒子只能选一次,且只能被一个盒子嵌套(总费用会减少较小该盒子的费用),不妨一开始就把所有盒子的费用加上,如

2017-10-19 20:46:51 454

原创 BZOJ3195: [Jxoi2012]奇怪的道路(状压DP)

传送门 小宇从历史书上了解到一个古老的文明。这个文明在各个方面高度发达,交通方面也不例外。考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n。m条道路连接在这些城市之间,每条道路将两个城市连接起来,使得两地的居民可以方便地来往。一对城市之间可能存在多条道路。 据史料记载,这个文明的交通网络满足两个奇怪的特征。首先,这个文明崇拜数字K,所以对于任何一条道路,设它连接的两个城市分别

2017-10-18 14:20:43 414

原创 BZOJ2064:分裂(状压DP)

传送门 假设中国的国土总和是不变的。 每个国家都可以用他的国土面积代替, 又两种可能,一种是两个国家合并为1个,那么新国家的面积为两者之和。 一种是一个国家分裂为2个,那么2个新国家的面积之和为原国家的面积。 WJMZBMR现在知道了很遥远的过去中国的状态,又知道了中国现在的状态,想知道至少要几次操作(分裂和合并各算一次操作),能让中国从当时状态到达现在的状态。题解: 首先,两个集合能通过分

2017-10-18 09:30:16 326

原创 Codeforces Round #441 Div. 2 E,F

E: 传送门题意: 给nn个由11~ mm数字组成的字符串(n,m≤1e5)(n,m\le 1e5),每个字符串长度为li(∑ili≤1e5)l_i(\sum\limits_{i}l_i\le 1e5)。字典序大小满足小写比大写都大。现在可以改变任意数字的大小写,满足所有前面的串字典序小等于后面的串。题解: 首先考虑怎么满足一个串比后面所有的都要小?是一个一个判断,还是有别的方法。其实只要保证

2017-10-17 22:37:53 255

原创 poj3254:Corn Fields(状压DP)

传送门题意: 有一片n∗mn*m的土地(n≤12,m≤12)(n\le 12 ,m \le 12),有些格子可以放牛,但要求放牛的格子不能相邻,求有多少种放牛方案。题解: 首先O(n∗(2m)∗(2m))O(n * (2^m)*(2^m))次方的DP很好想,但是要超时,考虑优化: 1.无用状态很多,先把所有有用状态预处理。判断有用状态:status1⊕(status1<<1)==0status

2017-10-17 17:22:42 224

原创 Codeforces Round #440 Div. 2 E:Points, Lines and Ready-made Titles

传送门题意: 给n个点,可以过每个点做x轴垂线,平行线,问一共多少种不同图像。题解: (直接copy官网的吧,下面有翻译): Let’s build graph on points. Add edge from point to left, right, top and bottom neighbours (if such neigbour exist). Note that we can

2017-10-17 14:17:50 355

原创 NOIP模拟:长跑路径(Dijkstra)

企鹅豆豆即将要去考长跑了,但是作为一只企鹅,长跑自然比不过鸵鸟和鸡。为了公平起见,教练告诉豆豆,他可以从 K 个指定地点中选择两个不同的地点分别作为起点和终点来考试。 考试地图是一个由 N 个点 M 条边组成的没有重边和自环的连通无向图,一条边的长度为 Ai 。 豆豆想知道他的长跑考试最少需要跑多远。即求一个图中给定点对的最近路径。题解: 考试的时候乱搞了一个类似SPFA的做法更新每

2017-10-14 18:40:59 725 1

原创 BZOJ1260:[CQOI2007]涂色paint(区间DP)

传送门 假设你有一条长度为5的木版,初始时没有涂过任何颜色。你希望把它的5个单位长度分别涂上红、绿、蓝、绿、红色,用一个长度为5的字符串表示这个目标:RGBGR。 每次你可以把一段连续的木版涂成一个给定的颜色,后涂的颜色覆盖先涂的颜色。例如第一次把木版涂成RRRRR,第二次涂成RGGGR,第三次涂成RGBGR,达到目标。 用尽量少的涂色次数达到目标。题解:区间DP感觉gyr神犇讲得非常透彻。考

2017-10-12 23:05:41 467

原创 BZOJ4380: [POI2015]Myjnie(区间DP)

传送门 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i]。 有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[i]个洗车店,且会选择这些店中最便宜的一个进行一次消费。但是如果这个最便宜的价格大于c[i],那么这个人就不洗车了。 请给每家店指定一个价格,使得所有人花的钱的总和最大。题解:区间DP好题。 首先观察数据可以知道这个DP肯定是n2mn^2m或者n3

2017-10-12 19:33:12 309

原创 HDU2476:String painter(区间DP)

传送门题意: 给两个字符串,每次操作可以将第一个字符串的一段连续区间染成一个字母,求将第一个字符串染成第二个字符串的最小步数。题解:区间DP首先考虑:如果将原串看做一个空串进行DP,统计答案时只需要扫一遍,并对该位不染色的情况进行判断找最小值即可(若染色则等同于空串)。考虑空串的DP: 若一个区间[l,r][l,r]的ch[l]==ch[r]ch[l]==ch[r]那么答案可以减一,因为先染[l

2017-10-12 09:48:20 340

原创 HDU4745:Two Rabbits(区间DP)

传送门题意: 两只兔子,在n块围成一个环形的石头上跳跃,每块石头有一个权值ai,一只从左往右跳,一只从右往左跳,每跳一次,两只兔子所在的石头的权值都要相等,在一圈内(各自不能超过各自的起点,也不能再次回到起点)它们最多能经过多少个石头(1 <= n <= 1000, 1 <= ai <= 1000)。题解:区间DP 首先分为两种情况: 1.两兔子在同一位置起跳。 2.两兔子在不同位置起跳。

2017-10-11 21:45:46 372

原创 NOIP模拟:分玩具(博弈论)

豆豆和豆沙正在分一些玩具,每个玩具有一个好玩值,每个人可以拿走任意数量的玩具,获得的愉快度为最小的好玩值。现在豆豆先拿,每个人轮流操作,直到没有玩具可以拿。豆豆想知道他能比豆沙多出多少愉快度?题解: 首先题意可以转化为一个有序数组分成n段分别加减加减依次进行,然后考虑dp,因为要满足最优子结构,所以从前往后用dp[i]dp[i]表示从i开始最大贡献,每次dp减去前面最小的(因为两个人都很聪明)。

2017-10-11 15:24:23 463 1

原创 poj1912:A highway and the seven dwarfs(凸包)

传送门题意: 给出平面上的N个点,对于M条直线,依次判断这N个点是否在每条直线的同一侧。是输出GOOD,不是输出BAD。题解: 凸包+二分。首先构造出凸包,之后对于一条直线,找出其两条平行线,这两条平行线在凸包上是切线,再判断相切的两个点构成的线段是否与直线相交就行了。#include<iostream>#include<set>#include<cmath>#include<cstdio

2017-10-10 21:47:47 413

原创 HDU1007:Quoit Design(分治)

传送门题意: 求平面上的最近点对。题解: 分治。 把当前序列(l,r)分成(l,mid),(mid+1,r)。处理完两边之后保证两边y单调,同时记录全局最优值,考虑合并: 对于左右点只考虑y坐标小于它且距离分治中心不超过全局最优值的,可以证明只有最多4个点。可以看做O(1)O(1),那么总时间复杂度为O(nlogn)O(n\log n) #include<cstdio>#include<

2017-10-10 16:21:33 418

原创 poj3845:Fractal(坐标旋转)

传送门题意: 给一条折线,每一次操作把这条折线的所有线段变换成跟这条折线的相同形状,重复d次。问此时从头到尾走全长的f(0≤f≤1),将停在哪个点上。题解: 首先计算出每次变换线段增长的倍数kk,那么线段会增长kdk^d若当前线段增长后已经超出了所剩余的长度,就相当于确定变换后的直线在当前线段上,那么递归k−1k-1确定下一次变换的直线。 要注意每次变换后坐标需要旋转,这个预处理就好了。#in

2017-10-10 14:15:46 409

原创 BZOJ1914: [Usaco2010 OPen]Triangle Counting 数三角形(极角排序)

传送门题意: 给n个点,求组成的所有三角形中包含原点的三角形的个数。题解: 可转化为不包含原点的个数,观察发现这种三角形的三个顶点一定在经过原点直线的一侧,直接扫一遍就好了。#include<bits/stdc++.h>using namespace std;typedef long long ll;struct IO{ streambuf *ib,*ob; inline

2017-10-10 08:22:35 312

原创 HDU4773:Problem of Apollonius(圆的反演)

传送门题意: 给两个相离的圆,和圆外的点,求过这个点与两圆外切的所有圆。题解:圆的反演 考的是数学啊。。不过向量很好做。首先推荐看看圆的反演入门知识:http://blog.csdn.net/acdreamers/article/details/16966369有两点个人觉得很重要,由于本人太辣鸡不会证明,就做了两个gif图。 (CSDN不能放高清图,凑合凑合看吧。。。) 1.当两圆外切时,

2017-10-09 21:14:28 525

原创 BZOJ1975: [Sdoi2010]魔法猪学院(A*)

传送门题意: 求k短路。题解: 标准A*,先从终点SPFA,保证估价函数的正确。(感觉这个复杂度很不科学。。)#include<bits/stdc++.h>#include<ext/pb_ds/priority_queue.hpp>using namespace std;using namespace __gnu_pbds;typedef pair<int,double> pid;co

2017-10-09 08:53:31 676

原创 BZOJ1249:SGU277 HERO 动态凸包(set)

传送门题意: 维护一个凸包,支持动态加点。题解: set维护上下凸包,代码稍微有点麻烦。注意设置比较函数的时候上下凸包应该一样,才能保证正确的弹出。#include<bits/stdc++.h>using namespace std;typedef long long ll;struct IO{ streambuf *ib,*ob; inline void init(){

2017-10-07 21:35:41 749 1

原创 BZOJ2391:Cirno的忧郁(无旋Treap+三角剖分)

传送门题意: 给n个点,m个物品,每个物品有一个权值,求从这n个点中选出若干点能圈住的物品权值和。n≤2000,m≤2000n\le 2000,m\le 2000题解: 先预处理n个点两两点对与原点组成的三角形能圈住的物品总和sum[i][j]sum[i][j](顺时针为正,逆时针为负)。然后就可以用求多边形面积的经典方法求解,主要是怎么处理第一部分:观察可得,按到原点的极角排序后,两点能圈住的

2017-10-07 16:51:48 421

原创 BZOJ3564: [SHOI2014]信号增幅仪(最小圆覆盖)

传送门题意: 求一个固定半长轴方向和半长轴半短轴比值的最小椭圆覆盖平面上所有点。题解: 最小圆覆盖。 首先将坐标旋转,再把所有横坐标除以比值得到最小圆覆盖的经典模板。最小圆覆盖的做法: 首先,在已经确定最小圆的点集中加入一个在最小圆外面的点,那么这个点一定在新点集的最小圆上。算法: 初始化圆形为p1p_1,半径为r1r_1 1.从左到右依次加入点,若在当前圆内则跳过,否则问题转化为在一个

2017-10-07 11:20:52 564

原创 Codeforces Round #439 (Div. 2) E:The Untended Antiquity(Hash+二维树状数组)

传送门题意: 给一个n∗mn*m的网格,每次可以选定一个矩形,在他周围放置一个障碍(围栏),或者清楚一个障碍,障碍之间不相交,支持任意时刻询问两点是否被隔开。题解: 首先矩形不相交可以知道两点如果不能互相到达一定是在不同的障碍里,考虑对每个障碍赋一个Hash值,用二维树状数组差分维护,查询直接查前缀和就好了。#include<bits/stdc++.h>using namespace std;

2017-10-07 09:20:11 456

原创 BZOJ4337: [BJOI2015] 树的同构(Hash)

BZOJ4337

2017-10-06 16:17:56 491

原创 poj2932:Coneology(扫描线)

传送门题意: 给n个两两不相交的圆,求不被其他圆所包含的圆。(n≤\le40000 )题解:扫描线 一个圆只能被他y左边的前驱后继所包含(当然圆的左右端点要包含这个圆)。直接套set。#include<cstdio>#include<algorithm>#include<set>using namespace std;const int Maxn=4e4+50;int n,tot,an

2017-10-05 02:03:39 228

原创 BZOJ4154:Generating Synergy (KDtree)

传送门题意: 给定一棵以1为根的有根树,初始所有节点颜色为1,每次将距离节点a不超过l的a的子节点染成c,或询问点a的颜色题解:KDtree 看完这道题题解,我只想说:还有这种操作???想了半天的点分治,后来发现看错题了,原来只有子节点。。。KDtree: 首先将每个点的横坐标看做dfs序,那么修改在一个区间内进行,由于这些点只有部分点会被修改,而修改的点的depdep又是一段连续的区间,就像

2017-10-03 17:29:53 365

原创 codevs1074:[NOI2001] 食物链(并查集)

传送门 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。    现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。    有人用两种说法对这N个动物所构成的食物链关系进行描述:    第一种说法是“1 X Y”,表示X和Y是同类。    第二种说法是“2 X Y”,表示X吃Y。

2017-10-03 17:18:50 381

原创 BZOJ2741: 【FOTILE模拟赛】L(分块+可持续化Trie)

传送门题意: 求区间的最大子区间异或和。(n≤12000)(n\le 12000)题解: 首先计算前缀和转化为子区间求两两异或最大值。 看到nn范围这么小,自然想到先分块搞搞了。。。 再套一颗可持续化Trie。。#include<bits/stdc++.h>using namespace std;struct IO{ streambuf *ib,*ob; inline v

2017-10-02 14:02:20 318

原创 BZOJ3995:道路修建(线段树维护MST)

传送门题意: 给一张2×n的网格图,只有相邻的点连了边,支持询问区间的最小生成树,以及修改边权。题解:线段树。 %%%PoPoQQQ : http://blog.csdn.net/popoqqq/article/details/45080183#include<bits/stdc++.h>using namespace std;struct IO{ streambuf *ib,*ob

2017-10-01 23:08:14 395

pb_ds库在OI中的应用

pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用 pb_ds库在OI中的应用

2017-09-07

clj计数专题(期望DP等)

陈立杰计数专题讲稿。

2017-03-29

斯特林数/斯特林数/.pptx

介绍了一些斯特林数的常用技术。

2017-03-15

空空如也

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

TA关注的人

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