自定义博客皮肤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、四国军棋、文明、亚泰球赛

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

原创 BZOJ2214: [Poi2011]Shift

题目大意:有一个1..n的排列,有两种操作:(a) 将最后一个数移到最前面(b) 把第三个数移到最前面我们将连续进行k次同一个操作称为“一块操作”,表示为ka或kb。找到一个操作序列使得进行这些操作后,排列变为1,2,3,...,n。什么狗题!网上就搜到了一个一句话题解差评!!大概思想就是按顺序一个一个的确定位置,假设前i-1个位置都已经确定好了,现在要把第i号

2016-08-31 15:42:50 713

原创 BZOJ2528: [Poi2011]Periodicity

题目大意:给定一个字符串S,其长度为N,如果对于任意的i(1神TM构造题!!!!!出题人脑洞太大了,这种题给tourist都不能现场做出来吧!!!(也不一定)VFK的题解讲的很好,里面只有一个“显然”定理没有证,那我就来补充一下吧本原串定理:如果一个串不是本原串,修改其中任意一个字符,它就会变成本原串。反证法,假设都不是本原串,那么设第一个串的循环节长度为a,修

2016-08-31 15:26:42 1097

原创 BZOJ2525: [Poi2011]Dynamite

题目大意:给一棵树,书上有一些关键节点,要求你选m个点,使得关键节点到这些点中距离的最小值的最大值最小,求这个值先二分答案,转成判定性问题考虑我们已经知道覆盖范围了,那么我们就要用最少的点来覆盖整个树这一步用贪心就可以了,从下往上,直到必须放一个点的时候才放为什么是对的呢?我们考虑在一个不是必须放的地方放置了一个点,这样他们对于子树下面的影响是一样的,都是全部能

2016-08-31 15:25:31 817

原创 BZOJ2215: [Poi2011]Conspiracy

题目大意:给定一张无向图,要求你把图中的每个点染成红色或蓝色,使得红色的点形成一个团,蓝色的点形成一个独立集首先假设我们已经求出了一组可行解,那么其他方案至多是本方案中从后勤和同谋组各出一个人进入对方组,因为一旦从某一组出来两个就一定不满足题意这时我们考虑处理出每个人是否只与对面集合中的一个人冲突,然后分类三种情况(只有后勤去同谋,只有同谋去后勤,两边交换一个人)枚举就可以了。

2016-08-25 07:48:24 907

原创 BZOJ1110: [POI2007]砝码Odw

题目大意:给定一些容器和砝码,保证任意两个砝码之间存在正整数倍数关系,求最多能放进去多少砝码首先把所有重量相同的砝码扔到一起,因为都是正整数倍,所以最多有logN种不同的砝码然后考虑放置,首先砝码肯定要从最小的先开始放那么我们考虑放置某一组砝码的时候优先放到哪个盒子里,这个其实可以由后一组砝码来决定,也就时先把当前容器装下后面砝码的残余空间计算出来,然后把砝码优先向这些残余空间

2016-08-24 15:19:48 617

原创 BZOJ2557: [Poi2011]Programming Contest

题目大意:n个人m个题目,每个题要r分钟完成。比赛有t分钟。给出每个人会做哪些题目,请你安排一个每个人在什么时候做什么题目,使得做出来的题目数最多。在做题数一样多的情况下,罚时尽量小。首先可以想到费用流做法,即对于每个人在时间限制内建很多条边,费用分别为1.2.3.4.5.....代表他们做了多少题,然后在能做的关系对间连边,每道题再向汇点连边即可但是这样边的数目最多可达百万,

2016-08-24 10:01:44 984

原创 BZOJ2280: [Poi2011]Plot

题目大意:给定n个点和m,要求把n个点分成m段,使得每段的最小覆盖圆的半径的最大值最小肯定能想到要二分答案,然后看看怎么判定对于每个点来说,需要找到序列中最远能到达的从他开始符合条件的点但是因为最小圆覆盖需要随机打乱点才能保证时间复杂度,所以我们不能依次推出最小覆盖圆,那么能想到二分但是每次检验是O(长度)的,而我们需要二分m次,直接二分可能会使时间复杂度变成O(logIN

2016-08-23 16:09:52 755

原创 BZOJ1336&1337:[Balkan2002]Alien最小圆覆盖

题目大意:给定n个点,求最小圆覆盖最小圆覆盖裸题....算法讲解戳→这里#include#include#include#include#include#define N 100010using namespace std;struct node{double x,y;}b[N];node O;double R;double sqr(double x){

2016-08-23 16:07:29 445

原创 最小圆覆盖算法

算法目的:最小圆覆盖算法可以在线性时间复杂度内求出覆盖n个点的最小圆算法步骤:      ①首先现将所有点随机排列     ②按顺序把点一个一个的加入(一步一步的求前i个点的最小覆盖圆),每加入一个点就进入③     ③如果发现当前i号点在当前的最小圆的外面,那么说明点i一定在前i个点的最小覆盖圆边界上,我们转到④来进一步确定这个圆,否则前i个点的最小覆盖圆与前i-1个点的最小覆盖圆是一样的,则不

2016-08-23 16:05:39 17895 6

原创 BZOJ2530: [Poi2011]Party

题目大意:给定一个图,其中至少有一个大小为2/3的团,让你输出一个大小为1/3的团每次找到两个之间没有边的点,他们之中至少有一个不在大团中,把这些删干净了至少还剩下N/3个的点,输出即可#include#include#include#include#define N 3010using namespace std;int a[N][N];bool vis[N];i

2016-08-22 17:57:18 704

原创 BZOJ2217: [Poi2011]Lollipop

题目大意:给一个只有1和2的序列,每次询问有没有一个子串的和为x先预处理出前缀和,然后对于每个询问,假如恰好有一个前缀和=x,那么就直接输出否则一定有一个前缀和为x+1的地方,这时只要开头是1或者开头是2后面是1都可以直接出解..也就是说不能直接出解的情况只是前后都是2,所以预处理出每个点向后最多有多少个连续的2,这道题就可以做了#include#include

2016-08-22 16:12:30 812

原创 BZOJ2529: [Poi2011]Sticks

题目大意:给你每根木棍的长度和颜色,求一个能拼成三角形且木棍颜色互不相同的方案枚举长度最大的木棍,另外两个木棍就越长越好,因此只需要不断维护前三长且颜色互不相同的木棍就可以了#include#include#include#include#define N 1000010using namespace std;struct ppp{int c,l;}b[N];bool

2016-08-22 16:05:38 638

原创 BZOJ2213: [Poi2011]Difference

题目大意:给一个字符串,求其中的一段,使得出现次数最多的字符与出现次数最少的字符的出现次数之差最大枚举右端点,设R[i][j]表示当前前缀中i出现的次数与j出现次数之差,然后再维护L[i][j]表示之前出现过的i和j的最大差如果不需要让出现次数最小的不为0,那么就可以直接统计答案了,但是这个题需要保证所以维护最小值和与他出现次数不一样的次小值就可以了注意右端点每窜一格R和L

2016-08-22 15:47:28 828

原创 BZOJ4580: [Usaco2016 Open]248

题目大意:给定一个1*n的地图,在里面玩2048,每次可以合并相邻两个,问最大能合出多少挺神的一道题F[i][j]表示以i为结尾合出j的话开头的位置在哪,如果不能合出就等于0,转移的时候先让末尾合出j-1,然后在那个开头的地方前一个为结尾再合一个j-1就好了因为输入的数不超过40,所以答案不会超过57时间复杂度上限是O(NlogN),空间复杂度O(57N)#in

2016-08-22 11:40:22 555

原创 BZOJ4391: [Usaco2015 dec]High Card Low Card

题目大意:给定对方的出牌序列以及你的手牌,双方手牌一共是一个1到2n的全排列,一开始是点大胜出,你可以在任意时刻改一次规则变成点小胜出,求最多能赢多少次用贪心的思想,肯定一开始尽量用点大的,改规则之后用点小的,每次用卡的时候都用那个恰好能赢的卡是最优的,如果没有就用最小的,然后枚举一下改规则的时间,这样可以O(N^2)算出答案我们考虑先不枚举改规则的中间点,用F[i]表示前i个回合

2016-08-22 11:01:26 936

原创 BZOJ1635: [Usaco2007 Jan]Tallest Cow 最高的牛

题目大意:有n头牛,给定一些限制条件,每个限制条件是a的身高小于等于b的身高且a到b之间的牛身高都小于a的身高,求每头牛最高是多少首先因为题目数据保证合法了,所以a≤b这个条件没什么用,其次最高的牛的编号也没有用,因为这个我们也能求出来然后假设我们把每个限制条件想象成一对括号,那么就是说括号里面的身高都要比括号外面的身高矮一截....然后当一对括号层层嵌套时,这些牛的身高就是越往里越矮

2016-08-22 10:30:23 654

原创 BZOJ3312: [Usaco2013 Nov]No Change

题目大意:给定一个账单序列,每张消费卡可以支付连续的一段账单,问最少用价值多少的消费卡能支付所有账单一眼状压DP,f[i]表示i状态下最远能付到哪张账单,然后预处理一下每张消费卡从每张账单开始最远能付到哪,转移一下就行了时间复杂度O(2^K*N)#include#include#include#include#define N 100010using namespac

2016-08-22 09:52:01 664

原创 BZOJ3387: [Usaco2004 Dec]Fence Obstacle Course栅栏行动

题目大意:给定一个初始点和n个与x轴平行的y轴坐标互不相同的栅栏,问水平距离至少移动多少能使得从该初始点回到原点且不从中间跨越任何一条栅栏首先可以确定,最终行进的路线一定可以等价于在几个栅栏的边界和起点终点间连线产生的路径,也就是说只有栅栏的边界是有用的,所以我们可以在这些点上建边跑最短路但是这样的话边数是N^2级别的,所以我们要优化一下建图考虑什么样的边是有效的,对于一个栅栏

2016-08-22 08:30:13 793

原创 BZOJ2212&3702: [Poi2011]Tree Rotations

题目大意:给定一颗完全二叉树,每个叶子节点有一个权值,你可以任意交换每个点的左右儿子,使得最后整棵树中序遍历的逆序对个数最少交换左右儿子不会影响左右儿子子树中的逆序对个数,只会影响这两颗子树之间的逆序对个数,而左右儿子子树中是否交换左右儿子不会影响这两颗字数之间的逆序对个数,所以我们可以对每个结点的子树分开考虑,所有节点的两个子树间的逆序对个数总和就是整个树的逆序对个数总和然后对于

2016-08-15 09:17:16 813

原创 BZOJ4676: Xor-Mul棋盘

题目大意:给定一个网格棋盘,每条边有一个权值c,每个点有两个权值a,b,你需要给每个点一个权值d,使得每个点的(a^d)*c的和+每条边的两个端点的d异或起来*c的和最小首先因为是位运算,所以每一位相互独立,可以分开算然后就能想到状压DP,因为n只有5而且每一列只和上一列有关系,所以可以设f[i][j]表示第i列的状态为j,目前产生的代价最小值这样转移的时候枚举上一列的情况,然

2016-08-12 10:27:49 712 2

原创 BZOJ3771: Triple

题目大意:给定n把斧头的价值,问在这些斧头中随便挑一个两个或三个,价值总和分别有多少种拿这道题练了练FFT的理解程度首先我们考虑一个函数F(x)=a0+a1x^1+a2x^2+........无穷无尽(当然到后面系数可能是0)我们称这个为生成函数接着我们可以把每一项的系数想象成这种斧头的数量,比如当你有一把1斧头,一把3斧头,生成函数就是F(x)=x+x^3这个东西

2016-08-12 10:02:59 713

原创 BZOJ1513: [POI2006]Tet-Tetris 3D

题目大意:在一个给定的矩形区域内,每次查询一个矩形的最大值,然后再把这个矩形内的值全都赋成这个值加上一个数,问最后的最大值是多少学了二维线段树,以前以为二维线段树只是树套树,后来发现二维线段树必须标记永久化标记永久化对于线段树上每个节点需要维护两个量,拿维护最大值来举例,你需要维护一个值have,代表这个子树里有这样一个最大值,另外一个值all代表这个子树里全都是这个值那么赋值

2016-08-12 09:48:29 1079

原创 BZOJ2160: 拉拉队排练

题目大意:给定一个字符串,将这个串中所有的奇数长度回文串挑出来按长度降序排序,求前k个长度的乘积manacher裸题啊....先用manacher,求出每个节点的P值,然后把他们推到一个(队列?数组?)里,然后从大到小一个一个的乘起来就好了,注意长的字符串乘完之后长度减二还是一个合法字符串#include#include#include#include#defi

2016-08-12 09:39:22 485

原创 BZOJ3527: [Zjoi2014]力

题目大意:Fj=∑i<jqiqj(i−j)2−∑i>jqiqj(i−j)2F_{j}=\sum\limits_{i<j}\frac{q_{i}q_{j}}{(i-j)^2}-\sum\limits_{i>j}\frac{q_{i}q_{j}}{(i-j)^2} 令Ei=Fi/qiE_{i}=F_{i}/q_{i},求出所有的EiE_{i}首先可以把qjq_{j}消掉,变成Ej=∑i

2016-08-12 09:33:44 163

原创 BZOJ4066: 简单题

题目大意:两个操作,单点修改,矩形求和,强制在线,矩阵边长≤50W强制在线不能用cdq,所以只能上K-DTREE了,然而这题动态加点,所以每插入一定次数就暴力重建一次,这样时间复杂度大概是O(Nsqrt(N))级别的,我也不太清楚#pragma GCC optimize("O2")#include#include#include#include#define N

2016-08-12 08:36:40 578

原创 BZOJ3939: [Usaco2015 Feb]Cow Hopscotch

题目大意:给定一个棋盘,从左上角走到左下角,每次必须严格向右下走一步并且两个各自的标号不能相同,问一共有多少种走法设F[i][j]表示走到(i,j)这个格子的方案数,那么转移方程就是严格左上的所有格子的F值和减去和他相同颜色的F值和,前者可以直接维护前缀和得出,后者可以对每种颜色建一个动态开点的线段树来维护,时间复杂度O(NMlognm),空间复杂度O(NMlognm)

2016-08-11 16:18:16 882

原创 BZOJ1327: The Rotation Game

题目大意:给一个井字形的棋盘,每次可以进行8种操作的一种,问最少几次能把中间8个窜成同一个数......PKUSC2016的时候第一天第一题.....结果当时不知道BZOJ上有QAQ,没加剪枝直接滚蛋了....首先明显是IDA*,直接搜索就行,剪枝条件就是判断(8-中间8个中颜色最多的那个的个数≥)至少还需要的步数+当前步数是否≤限制条件就能A了我从网上粘的标程...就不贴了

2016-08-11 15:10:29 555

空空如也

空空如也

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

TA关注的人

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