自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

commonc的博客

一个(来自JL、现PKU18级)的(退役OIer、ACMer)、I wanna爱好者、(前)AKB粉、沉迷FM、R2beat系列忠实玩家、亚泰球迷。欢迎和我约PES、四国军棋、文明、亚泰球赛

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

原创 BZOJ3416: Poi2013 Take-out

题目大意:有n块砖,其中白色是黑色的k倍,求一个消除序列,满足以下条件:                  每次消除k+1个砖,其中k块白色,1块黑色,并且这k+1块砖从开始到结束,中间不能路过已经消除过的砖                  数据保证有解 这真是一个悲伤的故事,首先我把题想偏了,以为是只能每次取两边,写了一发WA了然后网上没有题解,就很悲催的去看了波兰文的题解

2016-05-31 20:11:48 887

原创 BZOJ3414: Poi2013 Inspector

题目大意:一天公司有n个员工和m个员工记录,每个员工只会在连续的一段时间内工作。现在给出m条记录分别是谁写的、什么时候写的以及写的时候除了他还有多少人。求最大的k使得前k条记录互不矛盾 挺神的题...首先二分答案转成判定性问题,这样记录就没有先后顺序之分了然后考虑什么情况会出现矛盾:1.记录本身的矛盾:两条记录是同一时刻,但人数不同         判断方法:这个是很显然的

2016-05-31 19:52:20 1066

原创 BZOJ3417: Poi2013 Tales of seafaring

题目大意:给n个点m条边无向图,每次询问两个点之间是否有长度为d的路径(不一定是简单路径) 从a到b假如有长度为x的路径,那就可以往回走一步再往前走一步得到长度为x+2的路径所以可以求出每对点之间的奇数长度最短路和偶数长度最短路,然后判断是否小于d即可PS:1.这题卡内存,所以必须离线之后一个点一个点的枚举起点算完之后重新利用内存2.会有单点不与外界联通并查询这个单点自己之

2016-05-31 14:46:02 920

原创 BZOJ3424: Poi2013 Multidrink

题目大意:给一棵树,每次步伐大小只能为1或2,要求不重复的遍历n个节点,且起点为1,终点为n首先推荐Claris的题解,讲得还是挺详细的其次推荐算是此题题解的英文论文,可以在看Claris题解的同时补充一下 不想看英文论文的就可以看我的补充了....1.首先证明当一个节点拥有三个或以上的non-trivial的毛毛虫时是无解的              假设我们给予这种情况

2016-05-29 20:49:47 1036

原创 BZOJ3419: Poi2013 Taxis

题目大意:一条线段有三个点,0为当前所在位置,d为车站位置,m为家的位置,人不想走路可以叫车,每辆车有一个路程上限,并且都从车站出发,叫的车行驶之后不必须回到车站,问最少叫几辆车 第一步想到的肯定是贪心,因为人在还没过车站的时候离车站越远越不划算,浪费的路程也就越多,所以要尽量先叫行驶路程远的车但是会有一个问题,比如说这组数据:12 4 52 3 4 5 8如果贪心的话显然

2016-05-29 14:22:25 877

原创 BZOJ3420: Poi2013 Triumphal arch

题目大意:给一颗树,1号节点已经被染黑,其余是白的,两个人轮流操作,一开始B在1号节点,A选择k个点染黑,然后B走一步,如果B能走到A没染的节点则B胜,否则当A染完全部的点时,A胜。求能让A获胜的最小的k 首先易知B不会走回头路,走回头路代表自己毫无贡献还让A多染了两次色所以B的路径就是从根到叶子节点先二分一下答案转成判定性问题然后TreeDP,f[i]表示当B现在在i时,需要

2016-05-29 13:30:18 963

原创 BZOJ3426: Poi2013 Tower Defense Game

题目大意:有一个n个点m条边的图,每条边距离是1,已知用k个攻击距离为1的塔可以打到整个地图,让构造一个方案使得用小于等于k个攻击距离为2的塔打到整个地图 说是有spj,但是实际上没有,不过没有关系,因为这题每次挑一个没被覆盖的放就可以了,总个数一定小于等于k怎么证明呢?假设当前选择了一个还没被覆盖的点,那就在这里放一个攻击距离为2的塔而在原方案中能覆盖这个点的所有塔的攻击范围

2016-05-29 13:13:09 781

原创 BZOJ3653: 谈笑风生

题目大意:给一棵树,每次询问给定a,k,求三元组(a,b,c)的数量满足:                 1.a和b都是c的祖先                 2.a和b在树上距离不超过k                 3.a,b,c互不相同显然abc肯定形成竖着的一条链分两种情况讨论:1.b在a的上方,也就是说对于任意合法的b,c可以在a的子树里随便选,这个方案数是可以

2016-05-29 12:10:55 692

原创 BZOJ3779: 重组病毒

题目大意:给一棵树,每个点一开始颜色互不相同,支持三个操作                 1.将一个点到根的路径染成一种新的颜色                 2.将一个新的点设为根,并将原来的根到这个点的路径染成一种新的颜色                 3.查询一个子树(对于当前根)到根的路径期望颜色数 真TM是道神题,idea实在是太妙了首先由于第2个操作的特殊

2016-05-29 12:06:50 1749

原创 BZOJ4556: [Tjoi2016&Heoi2016]字符串

题目大意:给一个串和多组询问,每次询问S[a....b]的所有字串和S[c...d]这个字符串的最长公共前缀是多少 最长公共前缀啊,大概直接想到后缀数组二分RMQ之类的了但是现在有一个问题比较恶心,就是“S[a....b]的所有字串“和“从a....b开始的所有字串”还不太一样,因为有结束位置的限制,比如说从a位置开始的最长公共前缀是2,而从b开始的很长,那在算的时候肯定会选择b,然而

2016-05-29 11:00:50 530

原创 BZOJ3427: Poi2013 Bytecomputer

题目大意:给一个只包含-1,0,1的数列,每次操作可以让a[i]+=a[i-1],求最少操作次数使得序列单调不降 一看就是个DP,不妨用f[i][0..1..2]分别表示把第i位变成-1,0,1且保证前i个单调不降的最少次数然后分各种情况讨论转移一下就行了具体如下:想让第i位变成-1,那就可以让第i-1位变成-1然后在对第i位进行操作直到变成-1想让第i位变成0,那就要根据

2016-05-29 10:58:14 865

原创 POI2014 题解

POI2014的题个人感觉上比2015更可做,最后只剩了3道题Snake那道题我去官网下了题解然后看了半天没看明白,大概就是用哈密顿回路和3行的特点做一个神奇的大讨论DP,POI官网上至今也只有1人AC...Around the world 那道题我也不知道为什么TLE了,感觉上我的时间复杂度是对的啊可能常数太大?反正是没卡过去tourism这题看了一眼Claris的题解就果断弃疗

2016-05-18 19:16:23 1838

原创 BZOJ3872: [Poi2014]Ant colony

题目大意:给一棵树,对于每个叶子节点,都有g群蚂蚁要从外面进来,每群蚂蚁在行进过程中只要碰到岔路,就将平均地分成岔路口数-1那么多份,然后平均地走向剩下的那些岔路口,余下的蚂蚁自动消失,树上有一个关键边,假如有一群蚂蚁通过了这条边且数量恰好为k,这k只蚂蚁就被吃掉,问一共有多少只蚂蚁被吃掉显然得从那条关键边倒着推以这条边作为这棵树的“根”,开始遍历其他的边,遍历到每条边的时候计算一

2016-05-18 19:13:59 967

原创 BZOJ3835: [Poi2014]Supercomputer

题目大意:给定一棵N个节点的有根树,根节点为1。Q次询问,每次给定一个K,用最少的操作次数遍历完整棵树,输出最少操作次数。每次操作可以选择访问不超过K个未访问的点,且这些点的父亲必须在之前被访问过。设s[i]表示深度大于i的点的个数首先,我们需要知道,最优方案一定是先用i步拿完了前i层的点,然后再每次取k个,直到取完证明如下:首先我们先一层一层的拿,当这层的点大于k个时,我们挑选其中任意k个,当这层

2016-05-18 19:01:37 1181

原创 BZOJ3834: [Poi2014]Solar Panels

题目大意:给定A,B,C,D,求满足A≤x≤B&&C≤y≤D的gcd(x,y)的最大值首先枚举答案n,变成检验⌊A−1n⌋\lfloor\frac{A-1}{n}\rfloor <⌊Bn⌋\lfloor\frac{B}{n}\rfloor && ⌊C−1n⌋\lfloor\frac{C-1}{n}\rfloor <⌊Dn⌋\lfloor\frac{D}{n}\rfloor 有没有解都是取整,何不分块

2016-05-13 15:10:06 1262

原创 BZOJ3833: [Poi2014]Solar lamps

题目大意:给N盏灯,没盏灯能照到的角度范围是相同的,第i盏灯在第i秒或者被ki盏灯照到后都会亮起,问所有灯都在什么时刻亮起第一眼感觉计算几何,直接放弃...后来看了题解才想起来转换坐标系这回事...因为所有的照射方向都是斜着的两条线,所以我们不妨变换一下坐标系,把其中一个作为横坐标,另一个作为纵坐标,然后把所有的坐标全部转化这样问题就变成了按顺序查询一个点左下角的区域内第ki小的数是多

2016-05-13 13:14:36 1090

原创 BZOJ3832: [Poi2014]Rally

题目大意:给你一个DAG,让你删掉一个点,使得图中最长路最短这是一道神题啊,不上网搜题解我是肯定不会做....首先新建超级源汇,问题就变成了求删掉一个点后,超级源点到超级汇点的最长路最短是多少首先需要想到,任意的割集都会把至少一条从源到汇的最长路上的边割掉所以我们可以先计算出源点到所有点的最长路以及所有点到汇点的最长路然后为每个边赋一个权值,权值=源点到起点的最长路+终

2016-05-13 09:08:39 1239

原创 BZOJ3831: [Poi2014]Little Bird

题目大意:从1开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制,求每次最少耗费多少体力O(NQ)能过直接单调队列搞一下就好了#include#include#include#include#define MAXN 1100000using namespace std;int n,m,H[MAXN],f[MAXN],q[MAXN];int m

2016-05-13 09:06:35 816

原创 BZOJ4561: [JLoi2016]圆的异或并

题目大意:给你一堆圆,只存在相离和包含的关系,求他们的异或面积并如果考试的时候卷面像我这么标注,我怎么能看错题呢?!用一个扫描线,从左到右扫一遍,因为只有这两种关系,所以扫描线上的这些圆相对位置是固定的我们可以把每个圆想象成两个括号,括号之间不会相交,每当扫描线扫到一个新的圆时,相当于在某处添加一对括号,而当扫描线扫完一个圆时,相当于把一个中间不包含任何东西的括号删除用set维护一

2016-05-13 08:39:32 1775

原创 BZOJ3830: [Poi2014]Freight

题目大意:有两个城镇,从A到B需要的时间为S,然后有N辆列车需要从A到B再回来,任何时刻铁路上只能有向着同一个方向前进的列车,然后每辆列车有一个从A出发的最早出站时间,问所有列车全部回到A站的最早时间首先经过分析可以得出,这些列车是分批行进的,就是一批列车从A到B再回来,然后下一批列车再走...一定不会出现某辆列车在某一批到了B而留在那里没有跟着下一波回A的浪潮回来而留守B地等待下一次的情况,

2016-05-12 18:53:05 1134

原创 BZOJ3829: [Poi2014]FarmCraft

题目大意:给一棵树,走过每条边需要花费一个时间,安装软件又需要花费一个时间,需要遍历整棵树并回到起点,想让所有点中到达时间+安装时间的最大值最小,问这个值是多少显然每条边最多被走两边,否则一定不是最优解这就相当于从一个节点进入他的一个子树之后,一定遍历完了才回来所以我们可以进行贪心对每个节点记录两个值,一个是从这个节点下去遍历所有子节点之后再回来所需要花费的时间,另一个是假设从0时

2016-05-12 18:14:18 942

原创 BZOJ3828: [Poi2014]Criminals

题目大意:有两个人从两个颜色相同的格子开始相向而行,并按顺序记录下除了开始点外沿途一些格子的颜色,并保证一定记录最后一个格子的颜色,求相遇地点有多少种可能的地点一眼看了题,觉得秒了,写了一发交上去WA了,后来才发现看错题了.....这题应该怎么做呢?就是一个代码比较长但是什么知识点都不用的题....首先先O(N)扫出以所有点为相遇点,想走出符合条件的这个路径的话,左端点最靠右是

2016-05-12 18:00:12 727

原创 BZOJ3526: [Poi2014]Card

题目大意:有一些卡牌,正反各有一个数,你可以任意翻转,每次操作会将两张卡牌的位置调换,你需要在每次操作后回答以现在的卡牌顺序能否通过反转形成一个单调不降的序列线段树维护两个值,分别代表这个区间的第一张牌以较小或较大的数开始,这个区间最后一张牌用尽量小的的数来结尾的话,会选较小的还是较大的还是无解。然后每次把交换当成修改就好啦!#include#include#def

2016-05-12 16:12:54 1258

原创 BZOJ3524: [Poi2014]Couriers

题目大意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半裸的主席树啊,只需要每次走大于一半的那面就行了,两边都不符合就是没有啦!#include#includeusing namespace std;int rt[500001],n,m;int ch[10000001][2];int w[10000001],cnt;void pup(int x) {w[x]

2016-05-12 15:55:42 645

原创 BZOJ3523: [Poi2014]Bricks

题目大意:给你每种颜色的砖块数量,相同颜色的砖块不能放在一起,两头颜色已经确定,构造一种方案很容易想到是贪心,哪种颜色剩下的多就优先放那种颜色,多个颜色数量相同优先放结尾的那种颜色,实在放不了了就无解#include#include#include#define N 1000010using namespace std;struct ppp{int w,c

2016-05-12 14:44:26 1077

转载 BZOJ3522&4543: [POI2014]Hotel加强版

题解见http://blog.csdn.net/neither_nor/article/details/51278993不知道这是什么狗题,时间复杂度貌似是O(N)#include#include#include#define M 3000010#define N 200010using namespace std;long long wa[M];long long *f[N

2016-05-11 19:13:23 2054

原创 BZOJ3521: [Poi2014]Salad Bar

题目大意:有一个长度为n的字符串,每一位只会是p或j。求一个最长子串,使得不管是从左往右还是从右往左取,都保证每时每刻已取出的p的个数不小于j的个数。首先先扫一遍得到以每个点为左端点,只考虑从左向右取,最远能取到哪,并标记每一个点最早被哪一个点扫到然后再从后往前扫一遍,开两个栈,一个记录当前仍符合条件的右端点,一个记录已经被扫过的左端点,每当有元素从第一个栈里弹出时,就在第二个栈里

2016-05-11 19:08:21 1381

原创 BZOJ3695: 滑行

题目大意:给一个平面,宽度为X,从上到下划分成了N个区域,每个区域有一个高度和速度,问从(0,0)到(X,Y)最快时间这题我看了好长时间才看懂题面再说什么...看一下发现和光的折射很像...然后我们可以二分初始角度,然后根据折射定律可以直接算出终点然后啊,这题十分非常特别的坑二分的时候必须类似我这么写...为什么呢?因为asin()函数里面可能不在定

2016-05-11 09:54:52 884 1

原创 BZOJ3626: [LNOI2014]LCA

题目大意:给一棵树,q个询问,每次询问一个区间内的点与一个点的所有LCA的深度之和很神的一道题啊...首先对于每组询问,我们可以把这个区间内每个点到根的路径都+1,然后求被询问的点到根的路径和,就是这个询问的答案然后我们可以把每组询问拆成两个,变成ans[R]-ans[L-1]然后就可以离线,把0~n-1一个一个往里加,每次把它到根的路径+1,然后查询对应的那些询问就可以了

2016-05-11 07:59:05 942

原创 POI2015 题解

POI2015的题解,也算是目录了还是那句话,POI不能只刷前10道水题.....所以硬着头皮刷了下来....结果还是只刷了12道...有两道BZOJ上没有的说...没给题解链接的就是我不会的,Claris应该都写了Stage I: Czarnoksiężnicy okrągłego stołu Kinoman   Kwadraty   Łasuchy

2016-05-10 10:17:08 2912

原创 BZOJ4386: [POI2015]Wycieczki

题目大意:给定一张n个点m条边的带权有向图,每条边的边权只可能是1,2,3中的一种,输出k段路径,没有输出-1一眼矩阵乘法嘛,弱智题O((3*N)^3*log(INF)*log(K))然后手贱搜了一下题解,把我惊到了...首先这个时间复杂度是过不了的,也就是说不能二分然后快速幂直接判应该先预处理出来所有2的k次幂,然后就像LCA一样,这样可以一个log搞出来其次是.....

2016-05-10 10:06:06 1906 3

原创 BZOJ4385: [POI2015]Wilcze doły

题目大意:给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0。请找到最长的一段连续区间,使得该区间内所有数字之和不超过p。长度肯定为d啊,不用想!那就先算出以每个长度为d的总和g然后就相当于维护一个队列,每次在后面新加入一个数的时候,查询在这段区间内最大的g,看这些数总和减去这个最大值是否小于等于p,如果不是就说明太长了,得删掉队头这样

2016-05-10 10:04:21 1579

原创 BZOJ4384: [POI2015]Trzy wieże

题目大意:要选一段最长的字符串,使得三种字符出现次数各不相同或只有一种只有一种的直接就能扫出来,然后就想各不相同的首先维护一个前缀和,代表到每个点时,前缀B,C,S的个数然后令xi=bi-ci,yi=ci-si,zi=si-bi,每个点权值为自己的位置如果两个点的xi,yi,zi均不相同,这一段就可以选所以可以先按x排序,这样就干掉一维然后我们设x相同的为一组,首先我们把包

2016-05-10 09:32:52 1962

原创 BZOJ4383: [POI2015]Pustynia

题目大意:给出一些限制条件,每个限制条件都是一个区间内k个数比另外一些都大,问合不合法题目落下个条件   ∑k≤30W首先把这些限制条件拆开,每个不连续的区间拆成O(K)个连续的区间,然后就变成了KlogK个限制条件,每个条件是一个数比一段区间里的数都大这个可以连了边之后用记忆化搜索拓扑序Dp就好了但是连边是O(N^2)级别的,怎么办呢?就可以用线段树优化建图啦!首

2016-05-10 09:26:49 1401

原创 BZOJ4382: [POI2015]Podział naszyjnika

题目大意:把一个长度为n的一串项链切两刀,把项链断成两条链。要求每种颜色的珠子只能出现在其中一条链中。求方案数量以及切成的两段长度之差绝对值的最小值。挺神的一道题,首先我们可以随便画一个项链玩一玩然后我们尝试对于每种颜色给每个分隔点标一个号,标号方式是让对于该种颜色没被分开的分隔点标上同一个号,被分开的标上不同的号,就像下图然后我们惊奇地发现,假如两个分隔点对于所有颜色

2016-05-10 08:25:04 2021

空空如也

空空如也

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

TA关注的人

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