![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
POI
文章平均质量分 57
commonc
这个作者很懒,什么都没留下…
展开
-
BZOJ4382: [POI2015]Podział naszyjnika
题目大意:把一个长度为n的一串项链切两刀,把项链断成两条链。要求每种颜色的珠子只能出现在其中一条链中。求方案数量以及切成的两段长度之差绝对值的最小值。挺神的一道题,首先我们可以随便画一个项链玩一玩然后我们尝试对于每种颜色给每个分隔点标一个号,标号方式是让对于该种颜色没被分开的分隔点标上同一个号,被分开的标上不同的号,就像下图然后我们惊奇地发现,假如两个分隔点对于所有颜色原创 2016-05-10 08:25:04 · 2032 阅读 · 0 评论 -
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 · 1977 阅读 · 0 评论 -
BZOJ4385: [POI2015]Wilcze doły
题目大意:给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0。请找到最长的一段连续区间,使得该区间内所有数字之和不超过p。长度肯定为d啊,不用想!那就先算出以每个长度为d的总和g然后就相当于维护一个队列,每次在后面新加入一个数的时候,查询在这段区间内最大的g,看这些数总和减去这个最大值是否小于等于p,如果不是就说明太长了,得删掉队头这样原创 2016-05-10 10:04:21 · 1586 阅读 · 0 评论 -
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 · 1911 阅读 · 3 评论 -
BZOJ 3747: [POI2015]Kinoman
题目大意:每个点有一个权值和一个颜色,每种颜色有一个得分,每个区间的得分为这个区间内只出现过一次的颜色的得分总和,求最大得分说个O(nlogn)的做法吧先预处理出对于每个节点,下一个跟他相同颜色的点的位置然后枚举最后选的那个区间的左端点r,用一颗线段树记录对于每个r,这个区间的得分是多少当左端点l向右移时,设当前左端点颜色为i,相当于把以l到nxt[i]-1为结尾的区间的得原创 2016-04-29 14:18:33 · 1278 阅读 · 0 评论 -
BZOJ 3750 [POI2015]Pieczęć
题目大意:给你一个图案和一个印章,问能不能恰好用这个印章印出这个图案,即不能重合也不能印到纸的外面这套POI最水的题暴力就好了,如果可行的话,图案中的第一个有墨水的地方一定也是印章上第一个有墨水的地方,然后暴力盖上印章,把被盖上的地方变成没有墨水就好了时间复杂度O(N*M)#include#include#include#define N 1010using原创 2016-04-29 14:57:09 · 1160 阅读 · 0 评论 -
BZOJ4377: [POI2015]Kurs szybkiego czytania
题目大意:给定n,a,b,p,其中n,a互质。定义一个长度为n的01串c[0..n-1],其中c[i]==0当且仅当(ai+b) mod n 给定一个长为m的小01串,求出小串在大串中出现了几次。首先很容易想到,当确定小串的第一位在大串当中的位置时,小串中所有数的值就都确定了先不考虑0和1不妨设x为小串第一个数实际的值则我们可以知道小原创 2016-04-29 15:13:46 · 1293 阅读 · 0 评论 -
BZOJ 3748: [POI2015]Kwadraty
Orz Claris http://www.cnblogs.com/clrs97/p/4608345.html#include #define N 507 typedef long long ll; ll n,l=12,r=1442250,mid,t,ans; int i,j,v[N],sum[N],f[N]={0,1,0,0,2,2,0,0,0,3,3,0,0转载 2016-04-29 14:47:32 · 1004 阅读 · 0 评论 -
BZOJ4378: [POI2015]Logistyka
每个数对答案的贡献=min(a[i],s)所以用树状数组维护小于等于每个数的权值和以及个数每次对于一个s,把小于s的所有数加起来,再把大于s的当成s,统计一下贡献,看能否实现#include#include#include#include#define N 2000010using namespace std;struct ppp {long long siz,su原创 2016-04-29 16:07:11 · 967 阅读 · 0 评论 -
BZOJ3521: [Poi2014]Salad Bar
题目大意:有一个长度为n的字符串,每一位只会是p或j。求一个最长子串,使得不管是从左往右还是从右往左取,都保证每时每刻已取出的p的个数不小于j的个数。首先先扫一遍得到以每个点为左端点,只考虑从左向右取,最远能取到哪,并标记每一个点最早被哪一个点扫到然后再从后往前扫一遍,开两个栈,一个记录当前仍符合条件的右端点,一个记录已经被扫过的左端点,每当有元素从第一个栈里弹出时,就在第二个栈里原创 2016-05-11 19:08:21 · 1394 阅读 · 0 评论 -
BZOJ4379: [POI2015]Modernizacja autostrady
题目大意:给定一棵无根树,边权都是1,去掉一条边并加上一条新边,输出所有可能的新树的直径中的最小值和最大值一看就知道肯定是treeDP了我们可以考虑对于每一条边,假设把它删掉,会得到两棵小树此时新树的最大直径肯定是把两个小树的直径连起来,使得L=L1+L2+1而最小直径肯定是连接两个直径的中点,使得L≈max(L1,L2)所以我们需要得知对于每条边两边的小树的直径分别是原创 2016-04-30 18:38:46 · 1360 阅读 · 0 评论 -
BZOJ4381: [POI2015]Odwiedziny
题目大意:给你一棵树和一堆询问,每个询问是问从x到y的路径,从x开始每k个节点就加一次当前点权值,最后一步如果小于k就直接加上y的权值,问这条路径总权值是多少看一眼数据范围猜可能是分块,然后就不会了.....于是就去膜拜了Claris,果然是分块啊,不过题解好简短,没看懂只能和xuruifan研究了半天,大概是这么一个思想把询问按大于根号n和小于根号n分成两类对于小于根原创 2016-04-30 19:01:17 · 1202 阅读 · 0 评论 -
BZOJ3523: [Poi2014]Bricks
题目大意:给你每种颜色的砖块数量,相同颜色的砖块不能放在一起,两头颜色已经确定,构造一种方案很容易想到是贪心,哪种颜色剩下的多就优先放那种颜色,多个颜色数量相同优先放结尾的那种颜色,实在放不了了就无解#include#include#include#define N 1000010using namespace std;struct ppp{int w,c原创 2016-05-12 14:44:26 · 1085 阅读 · 0 评论 -
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 · 659 阅读 · 0 评论 -
BZOJ3526: [Poi2014]Card
题目大意:有一些卡牌,正反各有一个数,你可以任意翻转,每次操作会将两张卡牌的位置调换,你需要在每次操作后回答以现在的卡牌顺序能否通过反转形成一个单调不降的序列线段树维护两个值,分别代表这个区间的第一张牌以较小或较大的数开始,这个区间最后一张牌用尽量小的的数来结尾的话,会选较小的还是较大的还是无解。然后每次把交换当成修改就好啦!#include#include#def原创 2016-05-12 16:12:54 · 1280 阅读 · 0 评论 -
BZOJ3828: [Poi2014]Criminals
题目大意:有两个人从两个颜色相同的格子开始相向而行,并按顺序记录下除了开始点外沿途一些格子的颜色,并保证一定记录最后一个格子的颜色,求相遇地点有多少种可能的地点一眼看了题,觉得秒了,写了一发交上去WA了,后来才发现看错题了.....这题应该怎么做呢?就是一个代码比较长但是什么知识点都不用的题....首先先O(N)扫出以所有点为相遇点,想走出符合条件的这个路径的话,左端点最靠右是原创 2016-05-12 18:00:12 · 737 阅读 · 0 评论 -
BZOJ3829: [Poi2014]FarmCraft
题目大意:给一棵树,走过每条边需要花费一个时间,安装软件又需要花费一个时间,需要遍历整棵树并回到起点,想让所有点中到达时间+安装时间的最大值最小,问这个值是多少显然每条边最多被走两边,否则一定不是最优解这就相当于从一个节点进入他的一个子树之后,一定遍历完了才回来所以我们可以进行贪心对每个节点记录两个值,一个是从这个节点下去遍历所有子节点之后再回来所需要花费的时间,另一个是假设从0时原创 2016-05-12 18:14:18 · 962 阅读 · 0 评论 -
BZOJ3830: [Poi2014]Freight
题目大意:有两个城镇,从A到B需要的时间为S,然后有N辆列车需要从A到B再回来,任何时刻铁路上只能有向着同一个方向前进的列车,然后每辆列车有一个从A出发的最早出站时间,问所有列车全部回到A站的最早时间首先经过分析可以得出,这些列车是分批行进的,就是一批列车从A到B再回来,然后下一批列车再走...一定不会出现某辆列车在某一批到了B而留在那里没有跟着下一波回A的浪潮回来而留守B地等待下一次的情况,原创 2016-05-12 18:53:05 · 1142 阅读 · 0 评论 -
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 · 827 阅读 · 0 评论 -
BZOJ3833: [Poi2014]Solar lamps
题目大意:给N盏灯,没盏灯能照到的角度范围是相同的,第i盏灯在第i秒或者被ki盏灯照到后都会亮起,问所有灯都在什么时刻亮起第一眼感觉计算几何,直接放弃...后来看了题解才想起来转换坐标系这回事...因为所有的照射方向都是斜着的两条线,所以我们不妨变换一下坐标系,把其中一个作为横坐标,另一个作为纵坐标,然后把所有的坐标全部转化这样问题就变成了按顺序查询一个点左下角的区域内第ki小的数是多原创 2016-05-13 13:14:36 · 1102 阅读 · 0 评论 -
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 · 1278 阅读 · 0 评论 -
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 · 877 阅读 · 0 评论 -
BZOJ3426: Poi2013 Tower Defense Game
题目大意:有一个n个点m条边的图,每条边距离是1,已知用k个攻击距离为1的塔可以打到整个地图,让构造一个方案使得用小于等于k个攻击距离为2的塔打到整个地图 说是有spj,但是实际上没有,不过没有关系,因为这题每次挑一个没被覆盖的放就可以了,总个数一定小于等于k怎么证明呢?假设当前选择了一个还没被覆盖的点,那就在这里放一个攻击距离为2的塔而在原方案中能覆盖这个点的所有塔的攻击范围原创 2016-05-29 13:13:09 · 796 阅读 · 0 评论 -
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 · 987 阅读 · 0 评论 -
BZOJ3419: Poi2013 Taxis
题目大意:一条线段有三个点,0为当前所在位置,d为车站位置,m为家的位置,人不想走路可以叫车,每辆车有一个路程上限,并且都从车站出发,叫的车行驶之后不必须回到车站,问最少叫几辆车 第一步想到的肯定是贪心,因为人在还没过车站的时候离车站越远越不划算,浪费的路程也就越多,所以要尽量先叫行驶路程远的车但是会有一个问题,比如说这组数据:12 4 52 3 4 5 8如果贪心的话显然原创 2016-05-29 14:22:25 · 892 阅读 · 0 评论 -
BZOJ3424: Poi2013 Multidrink
题目大意:给一棵树,每次步伐大小只能为1或2,要求不重复的遍历n个节点,且起点为1,终点为n首先推荐Claris的题解,讲得还是挺详细的其次推荐算是此题题解的英文论文,可以在看Claris题解的同时补充一下 不想看英文论文的就可以看我的补充了....1.首先证明当一个节点拥有三个或以上的non-trivial的毛毛虫时是无解的 假设我们给予这种情况原创 2016-05-29 20:49:47 · 1045 阅读 · 0 评论 -
BZOJ3417: Poi2013 Tales of seafaring
题目大意:给n个点m条边无向图,每次询问两个点之间是否有长度为d的路径(不一定是简单路径) 从a到b假如有长度为x的路径,那就可以往回走一步再往前走一步得到长度为x+2的路径所以可以求出每对点之间的奇数长度最短路和偶数长度最短路,然后判断是否小于d即可PS:1.这题卡内存,所以必须离线之后一个点一个点的枚举起点算完之后重新利用内存2.会有单点不与外界联通并查询这个单点自己之原创 2016-05-31 14:46:02 · 954 阅读 · 0 评论 -
BZOJ3835: [Poi2014]Supercomputer
题目大意:给定一棵N个节点的有根树,根节点为1。Q次询问,每次给定一个K,用最少的操作次数遍历完整棵树,输出最少操作次数。每次操作可以选择访问不超过K个未访问的点,且这些点的父亲必须在之前被访问过。设s[i]表示深度大于i的点的个数首先,我们需要知道,最优方案一定是先用i步拿完了前i层的点,然后再每次取k个,直到取完证明如下:首先我们先一层一层的拿,当这层的点大于k个时,我们挑选其中任意k个,当这层原创 2016-05-18 19:01:37 · 1191 阅读 · 0 评论 -
BZOJ3872: [Poi2014]Ant colony
题目大意:给一棵树,对于每个叶子节点,都有g群蚂蚁要从外面进来,每群蚂蚁在行进过程中只要碰到岔路,就将平均地分成岔路口数-1那么多份,然后平均地走向剩下的那些岔路口,余下的蚂蚁自动消失,树上有一个关键边,假如有一群蚂蚁通过了这条边且数量恰好为k,这k只蚂蚁就被吃掉,问一共有多少只蚂蚁被吃掉显然得从那条关键边倒着推以这条边作为这棵树的“根”,开始遍历其他的边,遍历到每条边的时候计算一原创 2016-05-18 19:13:59 · 977 阅读 · 0 评论 -
POI2014 题解
POI2014的题个人感觉上比2015更可做,最后只剩了3道题Snake那道题我去官网下了题解然后看了半天没看明白,大概就是用哈密顿回路和3行的特点做一个神奇的大讨论DP,POI官网上至今也只有1人AC...Around the world 那道题我也不知道为什么TLE了,感觉上我的时间复杂度是对的啊可能常数太大?反正是没卡过去tourism这题看了一眼Claris的题解就果断弃疗原创 2016-05-18 19:16:23 · 1866 阅读 · 0 评论 -
BZOJ3414: Poi2013 Inspector
题目大意:一天公司有n个员工和m个员工记录,每个员工只会在连续的一段时间内工作。现在给出m条记录分别是谁写的、什么时候写的以及写的时候除了他还有多少人。求最大的k使得前k条记录互不矛盾 挺神的题...首先二分答案转成判定性问题,这样记录就没有先后顺序之分了然后考虑什么情况会出现矛盾:1.记录本身的矛盾:两条记录是同一时刻,但人数不同 判断方法:这个是很显然的原创 2016-05-31 19:52:20 · 1078 阅读 · 0 评论 -
BZOJ3416: Poi2013 Take-out
题目大意:有n块砖,其中白色是黑色的k倍,求一个消除序列,满足以下条件: 每次消除k+1个砖,其中k块白色,1块黑色,并且这k+1块砖从开始到结束,中间不能路过已经消除过的砖 数据保证有解 这真是一个悲伤的故事,首先我把题想偏了,以为是只能每次取两边,写了一发WA了然后网上没有题解,就很悲催的去看了波兰文的题解原创 2016-05-31 20:11:48 · 905 阅读 · 0 评论 -
BZOJ2797: [Poi2012]Squarks
题目大意:给n个数的所有和,求这n个数的所有可能方案首先最小的是x1+x2,第二小的是x1+x3,接着O(N)枚举x2+x3,就能算出x1,x2,x3,然后从所有的和中删掉这3个和,剩下的最小的一定是x1+x4,这样就求出了x4,然后再删掉这三个新的和,又能求出x1+x5....以此类推没有spj,但是貌似1A了...#include#include#inc原创 2016-06-24 13:46:58 · 1150 阅读 · 0 评论 -
BZOJ3415: Poi2013 Price List
题目大意:给一个无向图,边权均为a,然后将原来图中满足最短路等于2a所有的点对(x,y)之间再加一条长度为b的无向边,问操作之后点K到所有点的最短路是多少首先我们考虑最短路的几种情况:1.就是按照边权全是a那么走 2.(当b3.(当b前两种可以直接BFS出来,关键是第三种首先可以想到一个比较暴力的方法,还是BFS,然后对于每个点,先遍历他的所有相邻结点,再遍历这原创 2016-06-12 07:27:55 · 1101 阅读 · 0 评论 -
BZOJ4383: [POI2015]Pustynia
题目大意:给出一些限制条件,每个限制条件都是一个区间内k个数比另外一些都大,问合不合法题目落下个条件 ∑k≤30W首先把这些限制条件拆开,每个不连续的区间拆成O(K)个连续的区间,然后就变成了KlogK个限制条件,每个条件是一个数比一段区间里的数都大这个可以连了边之后用记忆化搜索拓扑序Dp就好了但是连边是O(N^2)级别的,怎么办呢?就可以用线段树优化建图啦!首原创 2016-05-10 09:26:49 · 1410 阅读 · 0 评论 -
BZOJ2789: [Poi2012]Letters
题目大意:给你两个序列,每次可以将A序列中相邻的两项交换位置,问最少多少步能把A变成和B一样,全部都是大写字母且保证有解每种字母的相对位置一定不会改变,也就是说每种字母在一开始就已经确定了要对应移到哪一位了,这就相当于求序列逆序对数,和NOIP2013火柴排队差不多#include#include#include#include#define N 1000010u原创 2016-06-14 15:57:21 · 903 阅读 · 0 评论 -
BZOJ2791: [Poi2012]Rendezvous
题目大意:有n个点,每个点有一条出边,再给出q组询问,每组询问由两个顶点a、b组成,要求输出满足下面条件的x、y:1. 从顶点a沿着出边走x步和从顶点b沿着出边走y步后到达的顶点相同。2. 在满足条件1的情况下max(x,y)最小。3. 在满足条件1和2的情况下min(x,y)最小。4. 在满足条件1、2和3的情况下x>=y。如果不存在满足条件1的x、y,输出-1 -1。2原创 2016-06-30 14:41:31 · 664 阅读 · 0 评论 -
BZOJ2792: [Poi2012]Well
题目大意:给n个数,每个数可以减去一个非负整数,总修改代价为所有这些非负整数的和,求总代价在m之内且至少有一个数修改为0,max{|Xi - Xi+1|}的最小值先二分答案,然后对于每次的值求一个最小代价首先可以正反扫两遍求出每个点最大合法答案,在没有必须有0这个条件时,这个方案一定是最小的代价然后枚举0的位置,这样左右一定都是一个等差数列,这样对于每个数来说都对应一个区间,区间两个端原创 2016-06-30 15:20:45 · 834 阅读 · 0 评论 -
BZOJ2800: [Poi2012]Leveling Ground
题目大意:给定n个数和a,b每次可以选择一段区间+a,-a,+b或-b,问最少操作几次能把他们都变成0首先应该能想到差分,这样就相当于在n+1个数每次选两个数,一个+a一个-a(或b),最后把他们都变成0首先我们对于每个差分之后的B[i]先用exgcd构造出一组用a,b表示的解,即a*x[i]+b*y[i]=B[i]最后这个点的解一定形如X[i]=x[i]+k*b,Y[i]=y[i]-原创 2016-07-02 09:55:38 · 1179 阅读 · 0 评论 -
POI2012题解
终于做完了POI2012.....这好像是我第一次完整地刷完一套题,主要原因还是题相对13,14,15来说简单了一点,而且网上还有题解leveling ground这题是最后一个做上的,感觉也是整套题当中最难的一个了,思想也很好,还有Festival,Prefixuffix也属于比较好的题这套题没有那种数据结构长题,没有什么数学定理题,也没有什么6000B大模拟,感觉还是非常良心的,真原创 2016-07-02 10:11:00 · 1704 阅读 · 0 评论