自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hanks_o的博客

有权限号的bzoj蒟蒻用户

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

原创 bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

题目传送门 水题。解法: 这道题打个暴力都水过了。。代码实现:#include<cmath>#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;int s[1100000];int a[110000],n;int ma

2017-10-30 20:52:02 343

原创 bzoj4034: [HAOI2015]树上操作(树链剖分+线段树)

题目传送门 水经验。解法: 就写个树剖呗。 然后用线段树维护一下呗。 维护整一段的和。 打个懒标记。代码实现:#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#include<cmath>#include<queue>using namespace s

2017-10-30 11:23:14 382

原创 1968: [Ahoi2005]COMMON 约数研究

题目传送门 这道题是给我水经验的么。解法: 看到题面有数学公式还以为是道大难题。。 结果。。 读完题后就是1~N每个数都作为因子一共出现多少次。。 就是n/i的和呗。代码实现:#include<cstdio>#include<cstring>using namespace std;int main() { int n;scanf("%d",&n);int ans=0;

2017-10-29 16:06:36 304

原创 bzoj2152: 聪聪可可(点分治)

题目传送门 哇有意思。解法: 这道题做了两天了。。 贼难受。。 因为这道题不可能n方枚举。 但是一旦确定了最近公共祖先之后。 只用枚举整一棵的点就行了(因为他肯定经过最近公共祖先嘛) 但是每个点都有可能作为最近公共祖先呀。 所以我们就希望对于每个最近公共祖先,它整一棵树的节点数尽量少咯。 点分治嘛,让他分得更平均。 不会点分治可以看这里那么在确定最近公共祖先之后怎么做呢。 枚举

2017-10-29 15:41:04 315

原创 bzoj5071: [Lydsy十月月赛]小A的数字

题目传送门 巨难受。不知道被谁怂恿去打月赛。 被虐了。解法: 真的垃圾。当时我也想到前缀和了。 只不过我推错了。 A[i-1]+A[i],-A[i],A[i+1]+A[i]。 我当时是这么想的。 A[i-1]加了一个A[i] A[i+1]加了一个A[i] -A[i]减了一个A[i] 那一共加了一个A[i] 那么这个前缀和是变化的。是动态的。那我就不能用前缀和了!!! 所以签到

2017-10-29 11:16:16 440

原创 bzoj1050: [HAOI2006]旅行comf(最小生成树)

题目传送门 想了一个多小时就想到一个暴力,结果还真是。。解法: 先判断st和ed连不连通,不连通就IMPOSSIBLE。 最小生成树可以做。 先按照边权从小到大排序。 然后枚举每条边,以当前这条边作为最小的边,添加比它大的边。 如果添加的边可以使得st和ed连通,那么维护一下答案。 那如果最大的边不一定是st到ed这条路径上面的边怎么办呢。 对于每一条边,添加完之后马上判断st和ed

2017-10-27 21:30:53 393

原创 bzoj2818: Gcd(欧拉函数)

题目传送门 其实我早就看到这道题了只不过不会做。 结果今天上午我学了欧拉函数。 所以又一次看到这道题就把它做了。解法: 对于每一个质数p,gcd(x,y)=p 我们将x和y都除以p,那么他们的gcd就等于1了。 所以枚举每一个质数,将n除以p。 这就转化为了在n/p中求互质的对数。上午学的欧拉函数就派上用场了。 phi[x]表示小于等于x且跟x互质的数的个数。 那么n/p中互质的对

2017-10-27 16:27:42 581

原创 bzoj3240: [Noi2013]矩阵游戏(矩阵乘法+快速幂)

题目传送门 费马小定理是什么鬼。。解法: 这道题其实就是把n行的数排成一行。 后面的数由前面的数得到。 用矩乘啊。 加个快速幂呗。 看了下数据范围。。。 n*m有10^2000000,快速幂怎么也得一千万啊,加个高精度除2,炸炸炸。 问了一下lxj大佬。 大佬说:用费马小定理啊! 怒查一波费马,还有这种操作?! a^(p-1) mod p=1 题目都要mod 1,000...

2017-10-27 16:19:28 359

原创 bzoj2463: [中山市选2009]谁能赢呢?

题目传送门 这道题就是道结论题,以前一场考试中考过。我记得我当时是这么yy的: 最后走完之后肯定是一个中间没有空间的块。 如果有空间肯定可以继续走。 然后因为他们两个人都很聪明,所以肯定都能提前知道这个情况。 那么输的那个人就会想办法扩大这个块使得他能赢。 两个人都这么想,最后肯定走完整个图,所以判断一下n的奇偶性就行了呀。代码实现:#include<cstdio>#include<c

2017-10-27 10:06:22 228

原创 bzoj2456: mode

题目传送门 这道题真的恶心。跟我理解的众数完全不一样。。导致我完全忽略了出现次数大于n/2这个条件。。解法: 以为很水打了个代码交上去0msTLE真的舒服。 看了看讨论原来这个是MLE。 那就是不能开数组咯。。 不会啊(忽略了次数大于一半) 然后上网%题解。 发现哦原来还有这个条件。 那众数和不是众数的相互抵消。代码实现:#include<cstdio>#include<cstri

2017-10-27 09:55:04 244

原创 bzoj2190: [SDOI2008]仪仗队(欧拉函数)

题目传送门 基础太弱导致我现在才去学欧拉函数。解法: 欧拉函数就是求小于等于x且与x互质的数的个数。 先把左下角换到左上角(等效) 把1,1看做原点。 斜率相同的点中只有一个点能看到。 斜率为(x-1)/(y-1) 那么只有互质的时候才是离原点最近的点。 所以我们就要求与每一个x-1互质个个数。 所以筛phi。然后求出ans=1~n-1的phi(欧拉函数) 然后因为欧拉函数求得是

2017-10-27 08:40:33 252

原创 bzoj2120: 数颜色(带修莫队)

题目传送门 莫队可以带修改,那不是爆炸了。。解法: 不会莫队看这里 莫队还是原来的莫队。 只是带了个修改。 T表示当前进行了几次修改,a[i].t表示第i个询问之前有多少个操作。 如果当前进行的操作次数少于我要修改的次数,那么把没修改的都补上。 否则的话就倒退到第a[i].t次操作之后。其他的操作还是蛮简单的。 每进来一个点就维护一下答案。 如果这个点没出现过,颜色种类就+1 每

2017-10-26 19:54:15 387

原创 bzoj1911: [Apio2010]特别行动队(斜率优化+Dp)

题目传送门 好开心又独立做了一道斜率优化原来斜率优化也不是辣么难嘛。。解法: 这道题Dp方程还是蛮好想的。 s[i]表示1到i的和。 f[i]=min(f[i],f[j]+a*(s[i]-s[j])^2+b*(s[i]-s[j])+c)斜率优化。。 设j>k且j对于i更优。 f[j]+a*(s[i]-s[j])^2+b*(s[i]-s[j])+c<f[k]+a*(s[i]-s[k])^2

2017-10-26 15:48:33 277

原创 bzoj2038: [2009国家集训队]小Z的袜子(hose)(莫队)

题目传送门 强啊学了一发莫队。解法: 刚看到这题没啥思路就只有一个n方的垃圾。。 %题解说是莫队,学了一发。 莫队大概就是用来优化暴力的一个东西。这道题的数学解法相必大家都会。。 在n个袜子里面选2个就是n*(n-1)/2 i颜色的袜子有sum[i]只,方案就是sum[i]*(sum[i]-1)/2。 因为上下都有除以2,所以我把2给削掉了只剩个平方了。对于每个sum[i]*(sum[

2017-10-26 11:01:03 334

原创 bzoj1221: [HNOI2001] 软件开发(费用流)

题目传送门 费用流真的强。解法: 一眼看过去感觉像费用流。 有数量有花费。。 想了一会儿,每天都有用完都会有剩下的,那我把他拆成两个点呗。 一个点表示当前剩下的(A),一个点连ed表示用过的(B)。 每天一开始剩下的就相当于需要的。 所以st连Ai连一条容量为ni费用为0边,表示每天都给ni条毛巾,暂时我还不知道怎么分配的(是买还是用之前的) 如果你想全部直接买的话(也有这种可能)

2017-10-26 09:18:19 375

原创 bzoj1597: [Usaco2008 Mar]土地购买(斜率优化+Dp+单调队列)

题目传送门 真的舒服我终于第一次自己推出了斜率方程。。 真开心。解法: 其实这道题Dp还是挺好想的。 Dp方程大概就是f[j]+i到j所有的土地一组的花费。 其实看到斜率优化的题我一般都想怎么去搞单调性。。 排序。。 先按照长排序一遍。(升降随意,我从小到大排的) 对于每块土地i,j<i 那么i的长肯定大于等于j的长(排了序) 如果i的宽也大于等于j的宽的话,j就没用了。。 因

2017-10-25 20:31:18 317

原创 bzoj1497: [NOI2006]最大获利(网络流)

题目传送门 真的皮。解法: 这道题不会啊。 %了题解都说是最大权闭合子图。 最大权闭合子图的方法。 st向正权点(可以赚钱的)连容量为利益的边。 负权点(要花钱的)向ed连容量为花的钱的边。 图中的边(对应的利益和花费)连容量为无限大的边。 答案为总利益-最大流为什么? 花了好久来想: 如果一条路径上面流过的流量是等于他的花费的。 说明他的利益是大于花费的,那么赚钱肯定要选。

2017-10-25 16:21:20 470

原创 bzoj1877: [SDOI2009]晨跑(费用流)

题目传送门 这道题不错啊。解法: 既然每个点只能走一次,那么拆点就很容易想到了。 Ax表示x拆成的第一个点。 Bx表示x拆成的第二个点。 我们把每个点拆成A和B。 从A到B有一条流量为1费用为0的边,表示这个点只能走过一次。 一条边x,y。 从Bx向Ay连一条费用为长度,流量为1的边。 因为这条边肯定也只能走一次啦。然后就跑最小费用最大流啊。 然后我就错了? 为什么。 因为第

2017-10-25 11:24:52 284

原创 bzoj1833: [ZJOI2010]count 数字计数(数位Dp)

题目传送门 这道题怎么跟windy数辣么像啊。 但是比windy数好像很多。解法: f[i][j][k]表示i位数最高位为j,这些数中有多少个k。 Dp方程显而易见不想多说了。memset(f,0,sizeof(f)); for(int i=1;i<=12;i++) for(int j=0;j<=9;j++) { f[i][j][j]=pow

2017-10-24 20:21:42 335

原创 bzoj1854: [Scoi2010]游戏(二分图匹配)

题目传送门 好题!解法: 想了一会儿如何限制选了一个另外一个不再选呢? 好像可以用二分图匹配诶。 每个装备的两个属性到这个装备有一个匹配关系。 然后就跑最大匹配就行了嘛。 从1开始,能匹配表示可以攻击到这个属性。 否则的话就不能再继续了。真的卡时间边目录+时间戳代码实现:#include<cstdio>#include<cstring>#include<cstdlib>#incl

2017-10-24 07:37:08 272

原创 bzoj1878: [SDOI2009]HH的项链(树状数组+离线处理)

题目传送门 真是毒瘤题。解法: 好恶心树状数组还有这个功能?! 区间种数也可以用树状数组维护?! 果断%一发题解。 看了半天发现: 用树状数组维护前缀和。 last[i]表示i这个位置的颜色上一个出现的位置是哪里。 那么我们在last[i]+1这个位置+1 在i+1这个位置-1。 那么我们在统计前缀和的时候每种颜色不论出现多少次贡献都为1。 每一段的答案等于求1~l的和。 为

2017-10-23 21:30:21 378 1

原创 bzoj3223: Tyvj 1729 文艺平衡树(伸展树)

题目传送门 这道题让我觉得我可以认真写下博客了。解法: 按照位置来建立伸展树,本身的值则是这个位置上是什么值。 即: 左子树在序列中位置都比我前。 右子树在序列中位置都比我后。 最后得出来的树我们按照中序遍历输出每个点的权值就好。怎么反转? 既然左子树比我前右子树比我后那么反转的话我只要把家族所有人对调一下就行了嘛。 也就是整棵子树的左右孩子都对调。 那么问题就是怎么把同一段序列放

2017-10-23 19:54:49 633

原创 bzoj1503: [NOI2004]郁闷的出纳员(伸展树)

题目传送门 基本也算入门题了。解法: 就伸展树维护一下然后加个暴力吧。代码实现:#include<cstdio>#include<cstring>#include<cmath>using namespace std;int root;struct node { int d,n,c,f,son[2];} tr[110000];int len;void update(int

2017-10-23 19:46:20 629

原创 bzoj3224: Tyvj 1728 普通平衡树(伸展树)

题目传送门 裸的伸展树。解法: 所谓伸展树就是一种平衡树。 自己学吧。代码实现:#include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>#include<algorithm>using namespace std;int root;struct node { int d,n,c,f,son[2

2017-10-23 19:37:59 246

原创 bzoj2243: [SDOI2011]染色(树链剖分+线段树)

题目传送门 开心的我又看错了题目。一开始看成是一段序列了那直接上线段树不就完了呗。 打个懒标记。维护一下区间有多少种颜色以及边界都是什么颜色。 打完了代码又去看题。发现是在一棵树上。。 哦那就加个树剖呗。解法: 线段树维护四个特征值: 区间内有多少段颜色。 区间内颜色是否统一,统一的话是什么颜色。 区间左端点是什么颜色。 区间右端点是什么颜色。 然后上树剖。 如果当前这一段跟上

2017-10-23 10:46:31 255

原创 bzoj1010: [HNOI2008]玩具装箱toy(斜率优化)

题目传送门 斜率优化拖了好久都没学。。解法: %%% f[i]表示1~i的最小花费。 f[i]=min(f[j]+(sum[i]-sum[j]+i-(j+1)-L)^2) (j<i) f[i]=min(f[j]+(sum[i]+i-sum[j]-j-1-L)^2) (j<i) 令s[i]=sum[i]+i,L=1+L 则f[i]=min(f[j]+(s

2017-10-22 16:17:25 253

原创 bzoj1066: [SCOI2007]蜥蜴(网络流)

题目传送门 这道题怎么跟我以前做的题那么像。 求没通过的蜥蜴最小不就是求通过的最大吗。 最大流走起。解法: 就因为有点像所以我一开始就想错了。。 以前的题是时间,我一般都是用拆点的。 但是。。 这道题是一个人经过这个点这个点寿命就-1。 按照寿命拆点的话就无法限制通过人数了。 所以每个点要拆成两个点。 两个点之间连边,流量为这个点的寿命(也就是能有多少个人在这上面踩) 这样的话

2017-10-22 15:10:04 278

原创 bzoj1432: [ZJOI2009]Function

题目传送门 真的恶心这道题真是毒瘤。 tg这个人整天推荐毒瘤题。解法: 差点就连题目都看不懂了。%题解啊太垃圾了。 挺谢谢博主的 写的不错。代码实现:#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm> #include<iostream>using namespace std;int mai

2017-10-20 21:44:21 326

原创 bzoj1711: [Usaco2007 Open]Dining吃饭(网络流)

题目传送门 真是吃屎了漏了一个细节。解法: 想了一会儿怎么表示一头牛又吃了饮料又喝了食物呢。 很简单。牛放在中间不就完了。 左边食物右边饮料,流量都为1。 食物连向牛,牛连向饮料,这样就能表示啦。 哈哈又切一题。开心的码代码。 错了! 想了半天发现一头牛可能吃了两份东西。。那样的话流量就会为2了。。 流量为2肯定有两个食物各给了流量。 那么我们就需要限制每头牛只吃一个食物,所以每

2017-10-18 09:18:30 336

原创 bzoj3048: [Usaco2013 Jan]Cow Lineup(单调队列)

题目传送门 啥话都不想说快排的判断写错了!!解法: 题目要求连续的一段最长(大概是这样) 其实就是要求原序列中最长的一段。使得里面的数不超过K+1种。 比如: K=2 也就是要删除两种数。 现在有个区间为555552 有一个区间为555521。 很显然上面那个更优。 但是我们要求在原序列里最长。 所以肯定会有一段为 555552?或者?555552 使得不超过三种数。然后就用

2017-10-18 08:38:05 337

原创 bzoj1045: [HAOI2008] 糖果传(数论)

题目传送门 双倍经验。3293。解法: 一碰到数论就是各种不会啊只会膜题解了。 hzw的写的很好我看懂了。 原帖 首先,最终每个小朋友的糖果数量可以计算出来,等于糖果总数除以n,用ave表示。 假设标号为i的小朋友开始有Ai颗糖果,Xi表示第i个小朋友给了第i-1个小朋友Xi颗糖果,如果Xi<0,说明第i-1个小朋友给了第i个小朋友Xi颗糖果,X1表示第一个小朋友给第n个小朋友的糖

2017-10-17 15:06:17 333

原创 bzoj 3477: [Usaco2014 Mar]Sabotage luogu 【P2115】 [USACO14MAR]破坏Sabotage(二分)

题目传送门 好题啊卡精度真的不厚道。 卡了一个小时。。解法: 首先二分答案!!答案是平均值哦。 然后每个数都减去平均值,这是平均值的经典解法。 然后求最大子段和,因为我们要对剩下的数构成最大影响。 那么选的数就要尽量大。 所以我们求出最大子段和,然后看一下剩下数的和是否<=0。 因为: 如果==0的话,那么说明这个答案是可行的。 如果<0的话,说明正确答案比这个答案还要小,所以先

2017-10-13 15:46:30 442

原创 bzoj1650: [Usaco2006 Dec]River Hopscotch 跳石子 luogu【P2678】 跳石头 (二分)

题目传送门 师兄叫我们刷usaco。 我为了骗访问量到luogu找到了原题哈哈哈。 我可以发blog了。解法: 玄学的二分啊。 我的方法跟大多数人都不同。 我先二分答案。 然后距离上一个保留石头大于等于这个答案的石头我都应该保存下来。 然后看一下保存下来的石头是否<=n-m不就完了吗? 错! 不可以等于这个答案。 为什么? 比如四个石头。 4,8,12,16。 如果我现在

2017-10-13 15:13:19 420

原创 bzoj4443: [Scoi2015]小凸玩矩阵(二分+二分图匹配)

题目传送门 不错的题啊。解法: 第一眼看上去:二分!!! 求第K大的最小值嘛。 跟求最大的尽量小有什么区别。 一看感觉就是二分。。 继续想: 要找行和列不同的点? 这题怎么跟我之前做过的一道题这么像呢。。(bzoj1059) 二分图匹配嘛。我做过的。。那么我们就二分最小值咯。然后大于等于他的点我们给行跟列一个匹配关系。 然后跑一次二分图匹配,看一下是否>=K个,这道题就解决了,美

2017-10-13 14:54:01 354

原创 bzoj1257: [CQOI2007]余数之和sum(数论)

题目传送门 神啊不会做啊初三数学不够用啊。膜了一发AKc大佬的题解,发现是个等差数列咯。 去膜原帖吧 然后我懒得用公式。 不想写做法了网上都有都差不多。 看代码注释吧。 其实我不一定能说清楚(最讨厌数论了)代码实现:#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algori

2017-10-13 14:37:29 324

原创 bzoj1044: [HAOI2008]木棍分割(二分+单调队列)

题目传送门 跑了3s那些200ms的是怎么跑出来的。。解法: 第一问蛮简单。以前大概做过这种类型的题。。 就二分一下最长的那一段的长度。 然后O(n)判断一下。第二问不简单。。 求方案诶。 我以前拿60分的时候打的是Dp。。 f[i][j]表示前i个分成j段切最长长度不大于第一问的答案的方案数。 那么继承就为f[k][j-1],k为上一段的结尾且满足k到i这一段木棍长度小于第一问的答

2017-10-12 08:21:03 403

原创 bzoj1208: [HNOI2004]宠物收养所(伸展树)

题目传送门 我好弱啊我连伸展树模版都打错。解法: 来一个人就领走宠物。 来一个宠物就被人领走。 那么树上某一个时刻要么全部都是人要么全部都是宠物。。 所以我们放心的求值就可以了。没学过伸展树的自己去学吧。代码实现:#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorith

2017-10-11 14:32:33 300

原创 bzoj1207: [HNOI2004]打鼹鼠(Dp)

题目传送门 好水的一道Dp。 水一发。。解法: f[i]表示前i个鼹鼠,第i个要打,最多可以打多少只。 状态继承就很简单。 如果曼哈顿距离<=他们的时间差的话就可以继承咯。最后要所有的f求一遍最大值才行。 因为我们的状态表示是第i个一定要打。但是我们也可能不打。所以所有的f都要求一遍最大值。代码实现:#include<cstdio>#include<cstring>#include<

2017-10-11 14:29:09 394

原创 bzoj1293: [SCOI2009]生日礼物(堆)

题目传送门解法: 坐在颓凳上吹了半个小时空调想出来的。 这道题不就是每一行数选一个数,然后使得最大值-最小值尽量小咯。因为头尾的彩珠不可能是同一种嘛。如果是同一种的话那我还可以缩减长度啊。 所以每一种彩珠只有一个点参加头尾的比较。 所以说每一行只用选出一个点就够了其他的点不用管。。然后怎么选我就不会做了。 请教师兄: 师兄跟我说枚举开头或者结尾。 然后每一行找刚刚好比他大的,用单调队列

2017-10-11 14:24:52 286

原创 bzoj1143: [CTSC2008]祭祀river(二分图匹配)

题目传送门 题面有点坑(对于我这种不读题面的人来说) 题面上有个大大的图。我看了一下好像是环诶。 我就以为这题有环。 一开始 我想: 既然有环,那么我用强联通缩点之后每个环最多只能选出一个点咯。 然后我再在剩下的点里面求点集,使两两不能互相到达。然后我看错了: 题目说显然,水系中不会有环流(下图描述一个环流的例子) 微笑。然而这道题是裸的最大独立集。 学(mo)了一发。 师兄b

2017-10-11 08:49:06 414

空空如也

空空如也

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

TA关注的人

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