BZOJ4382 : [POI2015]Podział naszyjnika】的更多相关文章

对于每种颜色,可以发现可以切的位置被分割成了若干段独立的区域. 给每个区域一个编号,将$m$种颜色的情况当成字符串来看,如果两个切口的字符串完全匹配,那么可以在这里切两刀. 可以构造hash函数,通过差分前缀和做到$O(n)$修改. 然后对于每一种相同的hash值,将切口按位置从小到大排序,通过组合数计算方案数,再通过双指针计算最小差值. 时间复杂度$O(n\log n)$. #include<cstdio> #include<algorithm> #define N 100001…
[问题描述]    长度为n 的一串项链,每颗珠子是K 种颜色之一.第i 颗与第i-1,i+1 颗珠子相邻,第n 颗与第1 颗也相邻.    切两刀,把项链断成两条链.要求每种颜色的珠子只能出现在其中一条链中.    求方案数量.[输入]    输入文件名为(neck.in).    第一行两个数n,K.    第二行n 个数,第i 个数代表第i 颗珠子的颜色.[输出]    输出文件名为(neck.out).    一行一个数表示答案.[样例输入] neck.in     4 3    1 2…
[BZOJ4382][POI2015]Podział naszyjnika Description 长度为n的一串项链,每颗珠子是k种颜色之一. 第i颗与第i-1,i+1颗珠子相邻,第n颗与第1颗也相邻.切两刀,把项链断成两条链.要求每种颜色的珠子只能出现在其中一条链中.求方案数量(保证至少存在一种),以及切成的两段长度之差绝对值的最小值. Input 第一行n,k(2<=k<=n<=1000000).颜色从1到k标号.接下来n个数,按顺序表示每颗珠子的颜色.(保证k种颜色各出现至少一次…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 长度为 n 的一串项链,每颗珠子是 k 种颜色之一. 第 i 颗与第 i-1,i+1 颗珠子相邻,第 n 颗与第 1 颗也相邻. 切两刀,把项链断成两条链.要求每种颜色的珠子只能出现在其中一条链中. 求方案数量(保证至少存在一种),以及切成的两段长度之差绝对值的最小值. input 第一行 n, k (2<=k<=n<=1000000).颜色从 1 到…
POI2015题解 吐槽一下为什么POI2015开始就成了破烂波兰文题目名了啊... 咕了一道3748没写打表题没什么意思,还剩\(BZOJ\)上的\(14\)道题. [BZOJ3746][POI2015]Czarnoksiężnicy okrągłego stołu 这个题真的神仙. \(p=0\),答案是\([n=1]\). \(p=1\),答案是\([n=1]+[n=2,k=0]\). \(p=2\),只有至多两种方案,即\(n\)左手边坐\(n-1,n-3...\),右手边坐\(n-2,…
[POI2015]Łasuchy 一看以为是sb题 简单来说就是每个人获得热量要尽量多 不能找别人 首先这道题好像我自己找不到NIE的情况 很容易想到一个优化 如果一个数/2>另一个数 那么一定选这个数 然后我想着其他的话就随便分配一个 然后会得出下一个 其实这样做是错的 因为你选完之后不知道下一个会不会是来降低我当前选的那一个的热量使得我当前的原来最优变成不是最优 然后这样子 怎么办呢??? 废话 膜题解 膜拜Claris 我们既然不知道下一个会不会来降低热量 不妨把每个食物的状态都定下来 让…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
就按时间顺序写吧 完成度:10/10 3.30 bzoj4385 首先一定是删去连续d个数,然后枚举终点,起点显然有单调性,用单调队列乱搞搞就可以啦 bzoj4378 首先才结论:可行当且仅当把所有大于s的数全变成s然后看所有的数的和大于等于c*s,然后两个树状数组分别维护<=s的和及个数即可,注意需要离散化 3.31 bzoj4377 设一段的起点处的数为x,则m个限制条件就可以转化为x在若干个区间(或两个区间的并)里面,然后把这些区间交起来就得到了x的范围,算出个数然后减去最后m-1个数(没…
4385: [POI2015]Wilcze doły Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 648  Solved: 263[Submit][Status][Discuss] Description 给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0.请找到最长的一段连续区间,使得该区间内所有数字之和不超过p. Input 第一行包含三个整数n,p,d(1<=d<=n<=2000000…
4384: [POI2015]Trzy wieże Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 217  Solved: 61[Submit][Status][Discuss] Description 给定一个长度为n的仅包含'B'.'C'.'S'三种字符的字符串,请找到最长的一段连续子串,使得这一段要么只有一种字符,要么有多种字符,但是没有任意两种字符出现次数相同. Input 第一行包含一个正整数n(1<=n<=1000000),表示字符…
3747: [POI2015]Kinoman Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 553  Solved: 222[Submit][Status][Discuss] Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部. 你可以选择l,r(1<=l<=r<=n),并观看第l,l+1,…,r天内所有的电影.如果同一部电影你观看多…
标题效果:有m点,每个点都有一个权值.现在我们有这个m为点的长度n该序列,寻求区间,它仅出现一次在正确的点区间内值和最大 想了很久,甚至神标题,奔说是水的问题--我醉了 枚举左点 对于每个请求留点右键点 树维护最大值 考虑每一个数对答案的贡献 记录一个数组next表示这个位置上的点下一次出现的位置 那么这个点贡献的作用范围就是[i,next[i]-1] 假设没有next就是[i,n] 于是我们先把全部第一个出现的数对答案的贡献增加线段树 然后从左到右扫一遍 每次统计完答案之后把i对答案的贡献去除…
BZOJ_4378_[POI2015]Logistyka_树状数组 Description 维护一个长度为n的序列,一开始都是0,支持以下两种操作: 1.U k a 将序列中第k个数修改为a. 2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1,询问能否进行s次操作. 每次询问独立,即每次询问不会对序列进行修改. Input 第一行包含两个正整数n,m(1<=n,m<=1000000),分别表示序列长度和操作次数. 接下来m行为m个操作,其中1<=k,c<=n,0&l…
BZOJ_3747_[POI2015]Kinoman_线段树 Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部. 你可以选择l,r(1<=l<=r<=n),并观看第l,l+1,…,r天内所有的电影.如果同一部电影你观看多于一次,你会感到无聊,于是无法获得这部电影的好看值.所以你希望最大化观看且仅观看过一次的电影的好看值的总和. Input 第一行两个整数n,m(1<=m<…
由于博主没有BZOJ权限号, 是在洛咕做的题~ 完成了13题(虽然有一半难题都是看题解的QAQ)剩下的题咕咕咕~~ Luogu3585 [POI2015]PIE Solution 模拟, 按顺序搜索, 把搜索到的需要印却没有印的点 和 印章的第一个点重合, 并印上. 另外, 纸上需要印的点 和 印章上沾墨水的点用数组储存, 能加快很多 Code #include<cstdio> #include<cstring> #include<algorithm> #include…
[POI2015]CZA p很小,讨论 p=0... p=1... p=2:n-1放左或者放右两种情况,剩下怎么放是固定的,模拟然后判断即可 p=3: 正着做要状压,类似放书和排座位那些题,考虑以某个顺序加入元素,不断扩充出整个环 不妨从n开始往下加,其实只用考虑i,i-1,i-2和要放的i-3的关系.i-3只能放在这三个的两个的中间, 所以这中间不能再有之前的i+1,i+2这种了. 而且区分左右还要记录顺逆 f[i][0/1][2^3]前i个,顺逆,相邻能不能放(是否紧相邻) 然后枚举放哪里转…
P3594 [POI2015]WIL-Wilcze doły 题目描述 给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0.请找到最长的一段连续区间,使得该区间内所有数字之和不超过p. 输入格式: 第一行包含三个整数n,p,d(1<=d<=n<=2000000,0<=p<=10^16).第二行包含n个正整数,依次表示序列中每个数wi. 调试日志: 开始 p 和 d 输反了...查了半天..老想自己哪里想错了QAQ Solution…
今天考试考了这题,所以来贡献\([POI2015]LOG\)的第一篇题解.代码略丑,调了快三个小时才调出来\(AC\)代码. 对于这种小清新数据结构题,所以我觉得树状数组才是这道题的正确打开方式. 首先离散化,这样才不会爆内存.开两个树状数组,第一个树状数组记录离散化后\(1\)到\(i\)中数字出现的个数,第二个树状数组离散化前\(1\)到\(i\)数字出现值的和.把所有询问都读入进来,对于每次操作: 操作\(1\):单点修改,若之前的数是正数,第一个树状数组\(-1\),第二个树状数组\(-…
P3592 [POI2015]MYJ 一道比较烦的区间dp.. 昨天上课讲到了这题,然后就在lg翻到了 然后调了很久很久..... 设\(f[l][r][k]\)为区间\([l,r]\)中,最小值\(\geq k\)的最大收益(只算被\([l,r]\)包含的) 然后枚举最小值的位置\(p\),那么包含\(p\)的区间答案全部是\(k\)了,只需要算两边的 然后发现很多东西不好算...比如说包含\(p\)的区间,所以设\(h[i][j]\)为当前区间穿过\(i\),且\(c>=j\)的区间数量,到…
题目链接 luogu P3592 [POI2015]MYJ 题解 区间dp 设f[l][r][k]表示区间l到r内最小值>=k的最大收益 枚举为k的位置p,那么包含p的区间答案全部是k 设h[i][j]表示 当前区间穿过i,且c>=j的区间数量,对i的. 然后我们可以做差分,扫一遍,递推出来 \(f[l][r][k]=max(max(f[l][p][k]+f[p+1][r][k]+h[p][k]×k,p∈[l,r]),f[l][r][k+1])\) 对于c离散化 输出方案吼啊 代码 /* 区间…
[POI2015]Trzy wieże 题目大意: 给定一个长度为\(n(n\le10^6)\)的仅包含'B'.'C'.'S'三种字符的字符串,请找到最长的一段连续子串,使得在这一段内出现过的所有字符中,字符的出现次数互不相同. 思路: 一个结论是对于子段\([l,r]\),当\(l\in[1,3]\)或\(r\in[n-2,n]\)时一定有解,而且一定能找到最优解. 证明略. 预处理\(1\sim n\)各数字出现次数前缀和,枚举\(l,r\)即可. 时间复杂度\(\mathcal O(n)\…
[POI2015]Łasuchy 题目大意: 圆桌上摆放着\(n(n\le10^6)\)份食物,围成一圈,第\(i\)份食物所含热量为\(c_i\). 相邻两份食物之间坐着一个人,共有\(n\)个人.每个人有两种选择,吃自己左边或者右边的食物.如果两个人选择了同一份食物,这两个人会平分这份食物,每人获得一半的热量. 假如某个人改变自己的选择后(其他\(n-1\)个人的选择不变),可以使自己获得比原先更多的热量,那么这个人会不满意. 问是否存在能使所有人都满意的方案.若存在,请你给每个人指定应该吃…
[POI2015]Pieczęć 题目大意: 一张\(n\times m(n,m\le1000)\)的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色. 你有一个\(a\times b(a,b\le1000)\)的印章,有些格子是凸起(会沾上墨水)的.你需要判断能否用这个印章印出纸上的图案.印的过程中需要满足以下要求: 印章不可以旋转. 不能把墨水印到纸外面. 纸上的同一个格子不可以印多次. 思路: 用一个vector来从上到下.从左到右存印章上的凸起. 从上到下.从左到右枚举纸上的黑点,将…
[POI2015]Pustynia 题目大意: 给定一个长度为\(n(n\le10^5)\)的正整数序列\(a\),每个数都在\(1\)到\(10^9\)范围内,告诉你其中\(s\)个数,并给出\(m\)条信息,每条信息包含三个数\(l,r,k\)以及接下来\(k(\sum k\le3\times10^5)\)个正整数,表示\(a_{l\sim r}\)里这\(k\)个数中的任意一个都严格大于剩下\(r-l+1-k\)个数中的任意一个数. 请任意构造出一组满足条件的方案,或者判断无解. 思路:…
[POI2015]Myjnie 题目大意: 有\(n(n\le50)\)家洗车店从左往右排成一排,每家店都有一个正整数价格\(d_i\). 有\(m(m\le4000)\)个人要来消费,第\(i\)个人会选择\(a_i\sim b_i\)这些店中最便宜的一个进行一次消费.但是如果这个最便宜的价格大于\(c_i\),那么这个人就不洗车了. 请给每家店指定一个价格,使得所有人花的钱的总和最大. 思路: 将\(c\)离散化后进行区间DP. 用\(f_{i,j,k}\)表示区间\([i,j]\)最小值为…
[POI2015]Odwiedziny 题目大意: 一棵\(n(n\le5\times10^4)\)个点的树,\(n\)次询问从一个点到另一个点的路径上,每次跳\(k\)个点,所经过的点权和. 思路: 分块思想. 当\(k\ge\sqrt n\)时,显然每次询问不会跳超过\(\sqrt n\)次,可以借助树链剖分在\(\mathcal O(\sqrt n)\)的时间内暴力完成询问. 当\(k<\sqrt n\)时,预处理从一个点出发,每次跳\(k\)格,跳到根结点的权值和.可以\(\mathca…
[POI2015]Logistyka 题目大意: 一个长度为\(n(n\le10^6)\)的数列\(A_i\),初始全为\(0\).操作共\(m(m\le10^6)\)次,包含以下两种: 将\(A_x\)修改为\(y\): 询问若每次任意选择\(x\)个正数,将它们\(-1\),能否操作\(y\)次. 思路: 用\(cnt\)表示不小于\(y\)的数的个数,\(sum\)表示小于\(y\)的数之和. 一个结论是,当\(sum\ge(x-cnt)\times y\)时可行,否则不可行. 证明参考C…
[POI2015]Wilcze doły 题目大意: 给定一个长度为\(n(n\le2\times10^6)\)的数列\(A(1\le A_i\le10^9)\),可以从中选取不超过\(d\)个连续数字变成\(0\),求一个最长的子串使得这段数的和不超过\(p\). 思路1: 显然,将\(d\)个修改的机会用完一定最优,答案至少为\(d\). 二分答案\(k\),\(O(n)\)枚举端点,若区间和-区间最大的长度为\(d\)的子段和\(\le p\),则答案至少为\(k\). 而"区间最大的长度…
3747: [POI2015]Kinoman Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 830  Solved: 338 Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部. 你可以选择l,r(1<=l<=r<=n),并观看第l,l+1,…,r天内所有的电影.如果同一部电影你观看多于一次,你会感到无聊,于是无法获得这部电影的好看值…
4380: [POI2015]Myjnie Description 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i].有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[i]个洗车店,且会选择这些店中最便宜的一个进行一次消费.但是如果这个最便宜的价格大于c[i],那么这个人就不洗车了.请给每家店指定一个价格,使得所有人花的钱的总和最大. Input 第一行包含两个正整数n,m(1<=n<=50,1<=m<=4000).接下来m行,每行包含三个正整数a[i],b…