bzoj
inklutcuah
这个作者很懒,什么都没留下…
展开
-
【bzoj1207】【HNOI2004】【打鼹鼠】
题目大意某个时间会在某个坐标出现一只鼹鼠,求最多能打多少只。解题思路不用讲了,直接上暴力dp,f[i][j]打到第i只鼹鼠用了j时间最多能打多少只。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k)原创 2016-08-17 22:51:17 · 407 阅读 · 0 评论 -
【bzoj4552】【Tjoi2016】【Heoi2016】【排序】【二分答案】【线段树】
题目大意给出长度为n的序列,有m个排序操作,对一个区间升序或降序排序,求操作完某一位的值。题解一个非常不显然的性质,本题满足二分性质。二分一个答案,如果原数大于或等于答案就标记为1,不然标记为0。排序完可以知道目标位到底是大于等于还是小于答案,适当调整答案即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#原创 2016-07-12 16:31:12 · 474 阅读 · 0 评论 -
【bzoj4551】【Tjoi2016】【Heoi2016】【树】【线段树】
题目大意给出一棵有根树,有很多操作,给一个点打标记,查询到跟路上最近那个点打了标记。题解我的做法是先搞出dfs序,打标记只会影响子树,线段树区间修改就行了,查询就是单点查询。注意空点不下传标记,不然空间不够。更好的做法是离线用并查集维护。打标记相当于把一棵子树从整棵树中断开,倒着做,先断开子树。查询就是getfather,答案就是father的father。修改就是合并子树,并查集连一下,应为修改可原创 2016-07-12 11:22:24 · 396 阅读 · 0 评论 -
【bzoj1012】【JSOI2008】【最大数】【maxnumber】【线段树】
题目大意给出一个空序列,支持队尾插入,查询队尾往前x长的子序列的最大值。题解数据结构裸题,上线段树即可。原创 2016-06-28 20:25:07 · 366 阅读 · 0 评论 -
【bzoj1202】【HNOI2005】【狡猾的商人】【最短路】
题目大意序列中有一些限制,是否有那么一个序列满足所有限制。解题思路把限制看成两点间的距离,跑floyd,看是否所有边都是最短路。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(int i原创 2016-08-18 08:10:13 · 408 阅读 · 0 评论 -
【bzoj1003】【ZJOI2006】【物流运输】【最短路】【动态规划】
题目大意给出一幅无向图(点数<=20),在n天内,有某些点在某段时间不能经过,求n天最短路之和,每相邻两天所走路不同将付出额外代价k,求最小代价。题解用单最短路算法求出任意一段时间用同样路径的花费。f[i]表示1到i天的花费,f[j]=min{f[i]+cost[i+1][j]*(j-i)+k}(j>i)。原创 2016-06-28 16:04:17 · 480 阅读 · 0 评论 -
【bzoj1051】【HAOI2006】【受欢迎的牛】【强连通分量】
题目大意给出一幅有向图,求所有点都能到达它的点的个数。题解tarjan缩点,看是否只有一个连通块,输出出度为零的连通块的大小。其实我们不一定要真的缩点,求完强连通分量后发现这个强连通分量有出边就可以排除,最后看可行数是否大于一,并同时记录连通块的大小,判断后输出即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring原创 2016-07-04 08:22:24 · 402 阅读 · 0 评论 -
【bzoj1192】【HNOI2006】【鬼谷子的钱袋】
题目大意你有一些钱,你要分最少的组使你可以通过选取其中的一些组来支付所有小于等于你拥有钱的金额。解题思路假设你有n元钱,你可以将⌈n/2⌉\lceil n/2 \rceil 的钱分一组,这样就变成里一个n/2的子问题,它能满足就一定可以与⌈n/2⌉\lceil n/2 \rceil 配合满足原问题。code#include<set>#include<cmath>#include<cstdio>原创 2016-08-18 08:18:33 · 307 阅读 · 0 评论 -
【bzoj1103】【POI2007】【大都市】【meg】【人工栈】
题目大意一棵有根树,每次修改一条边或询问跟到一个点的路径上有多少条边没被修改。解题思路可以用括号序表示树上的一条路径,访问时间戳+1,离开时间戳-1,修改一条边就是将深度大的点的时间戳都改为0,表示对后面没影响。最恶心的是要打人工栈。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algori原创 2016-08-17 22:46:29 · 476 阅读 · 0 评论 -
【bzoj1293】【SCOI2009】【生日礼物】
题目大意在坐标轴上有不同种类的一些点,求最短的区间包含所有种类的点。解题思路可以考虑找到第一个合法区间,当左指针右移时有可能是某一些种类没被包含,这时我们可以加入下一个当前种类的点,每个点只会被加入一次,因此O(n)。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#de原创 2016-08-17 22:28:07 · 396 阅读 · 0 评论 -
【jzoj4905】【NOIP2016提高组】【换教室】【动态规划】【期望】
题目大意解题思路先跑一次Floyd求出两点之间的距离,f[i][0,1]为第i个点申不申请到终点的期望,由于期望的线性性,和的期望等于期望和,所以可以很容易求出相邻两个点申不申请的期望,直接dp即可,具体可以看一下代码。code#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LD doubl原创 2016-11-27 17:24:36 · 386 阅读 · 0 评论 -
【jzoj4931】【bzoj4380】【POI2015】【Myjnie】【动态规划】
题目大意有N家洗车店从左往右排成一排,每家店都有一个正整数价格Pi。有M个人要来消费,第i个人会驶过第Ai个开始一直到第Bi个洗车店,且会选择这些店中最便宜的一个进行一次消费。但是如果这个最便宜的价格大于Ci,那么这个人就不洗车了。请给每家店指定一个价格,使得所有人花的钱的总和最大。bzoj上需要输出方案。解题思路我们发现指定的价格一定属于ci可以先将c离散化,g[i][j][l]表示第i到j家店最原创 2016-12-27 22:29:30 · 615 阅读 · 0 评论 -
【jzoj3839】【bzoj4423】【AMPPZ 2013 baj】【Bytehattan】【Babystep】【平面图转对偶图】
题目大意给出一个网格图,求删除一条相邻的边后是否连通,强制在线。解题思路黑圈表示原图的方格,绿边表示原边,紫边表示删除这些边,红边表示当前要删除的边,我们发现如果我们想要添加的紫边会和原来的紫边构成环,这样割掉红边以后一定产生新的连通块。我们把紫边的交点当作新点,这样就转换成并查集问题,平面图转对偶图。code#include<cmath>#include<cstdio>#include<cst原创 2017-01-13 21:31:36 · 368 阅读 · 0 评论 -
【bzoj2002】【Hnoi2010】【Bounce 弹飞绵羊】【lct】
题目大意某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,Lostmonke原创 2017-05-12 21:25:40 · 270 阅读 · 0 评论 -
【bzoj1588】【HNOI2002】【营业额统计】【splay】
题目大意给出一个序列,求每个数与前面的数的最小差的和。题解用平衡树保存前缀,把每个数与前驱和后继的最小差加进答案即可。ps#原创 2016-06-30 08:26:53 · 380 阅读 · 0 评论 -
【bzoj3224】【Tyvj1728】【普通平衡树】【splay】
题目大意要求写出一种数据结构,支持1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大的数)6. 求x的后继(后继定义为大于x,且最小的数)题解使用任意一种平衡树即可,我使用的是splay。千万注意3,5,6询问中括号的要求。要求你在查找的时候用一些特殊的技巧,例如fi原创 2016-07-03 08:57:19 · 575 阅读 · 0 评论 -
【bzoj1026】【SCOI2009】【windy数】【数位动态规划】
题目大意求一个区间内,有多少个数满足相邻两个数差大于1。题解数位dp。区间[a,b]可以变成[0,b]-[0,a-1]。f[i][j][x][y]表示第i位上选j这个数,前面是否每一位都和a不一样,前面是否都是前导0。f[i][j][x][y]转移到f[i+1][k][x||(k!=a[i+1])][y&&(!k)],且j,k满足abs(j,k)>1,当x==1时0<=k<=9,当x==0时0<=k原创 2016-06-30 15:34:57 · 426 阅读 · 0 评论 -
【bzoj1257】【CQOI2007】【余数之和】【sum】
题目大意给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值解题思路k%i==k-⌊n/i⌋\lfloor n/i \rfloor*i,发现i>k的部分可以直接算,而⌊n/i⌋\lfloor n/i \rfloor只有n√\sqrt n种取值,分块处理即可。code#include<set>#include<cmath>#i原创 2016-08-18 08:26:57 · 318 阅读 · 0 评论 -
【bzoj1143】【CTSC2008】【祭祀】【river】
题目大意给出一幅有向图,选取一些点,这些点不能从一个点到达另一个点,求最多能选多少个点。题解其实我们用floyd传递闭包,知道哪些点不能同时取。显然就是求最大独立集,对偶问题是最小点覆盖,等价于二分图最大匹配,建个图后跑一遍网络流就可以了。最大独立集对偶问题是最小点覆盖#code#include#include#include#includ原创 2016-07-05 20:49:09 · 414 阅读 · 0 评论 -
【bzoj1305】【CQOI2009】【dance】【跳舞】
题目大意有n个男孩和n个女孩,男女间要么互相喜欢要么不喜欢,跳一次舞每个人和没跳过的喜欢的跳或和最多k个不喜欢的跳。求最多跳几次。解题思路有一个直观的贪心,最大的答案为每个人喜欢的人数取最小值后加k,但我们能不能保证有合法解呢,反正bzoj上能过,但某个oj上不能过。于是就打了网络流,先二分一个答案,每个人拆成两个点(和喜欢的人跳与和不喜欢的人跳),源到和喜欢的人跳流量为ans,和喜欢的人跳到和不喜原创 2016-09-06 15:34:32 · 289 阅读 · 0 评论 -
【bzoj4553】【Tjoi2016】【Heoi2016】【序列】【树套树】【线段树套线段树】
题目大意给出长度为n的序列a,有m次变化。每次变化把a[x]改成b[x],一个位可以多次修改,变化相对独立。选出最长字串,在m次变化与原串中都是不下降的。题解通过分析可知,设f[i]为前i位中一定选了i所形成的最长不下降字串的长度,f[i]可以转移到f[j] (j>i)当且仅当满足三个条件。a[i]<=a[j]。max(b[i])<=a[j]。a[i]<=min(b[j])。把a[i]也当作b[i]原创 2016-07-12 11:11:17 · 430 阅读 · 0 评论 -
【bzoj2002】【Hnoi2010】【Bounce】【弹飞绵羊】【分块】
题目大意有n个格,可以在i往后跳a[i]个格,修改a[i],询问i跳多少次跳出这n个格。解题思路这是一道lct模板题,显然a[i]就是i的father,修改就是割一条边连一条边,询问一个点的深度。然而我并不会lct,只会打暴力。我们可以分块,维护跳到下一个块的花费,修改暴力重构当前块的所有点跳到下一个块的花费,询问一个块一个块的跳,当一个块大小为n√\sqrt n时复杂度为O(nn√)O(n\sqr原创 2016-08-17 20:54:19 · 377 阅读 · 0 评论 -
【bzoj1196】【HNOI2006】【公路修建问题】【并查集】
题目大意有一些可修路点对,可修一级或二级公路使图连通且最少有k条一级公路,使最大的公路费用最小。解题思路可以发现求最大值最小用二分答案,可以用并查集维护当前连通块,首先能建一级公路要先建(满足一级公路的限制),再建二级公路,再看看是否能是整个图连通,直到找到最优答案。code#include<set>#include<cmath>#include<cstdio>#include<cstring原创 2016-08-17 20:39:55 · 609 阅读 · 0 评论 -
【bzoj1015】【JSOI2008】【星球大战】【starwar】【并查集】
题目大意给出n个点,依次摧毁k个点,求每次摧毁后连通块的个数题解正难则反,采用离线做法,求出摧毁后连通块的个数,倒着将摧毁的点重新插入,使用并查集维护,即可求出答案。原创 2016-06-30 11:09:31 · 351 阅读 · 0 评论 -
【bzoj1208】【HNOI2004】【宠物收养所】【平衡树】【set】
题目大意有一些宠物和领养人,都有一个特征值,有一些事件加入宠物或领养人,将找到最近的领养人或宠物配对并产生特征值差的不满值,求不满值和。解题思路用数据结构维护,查找最近的点。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define原创 2016-08-18 10:08:26 · 341 阅读 · 0 评论 -
【bzoj1001】【BeiJing2006】【狼抓兔子】【网络流】【平面图转对偶图】
题目大意平面图最小割。题解一眼上zkw,结果tle,还傻乎乎地去优化。后来查了查题解,发现有个东西叫平面图的对偶图,构出图后跑最短路就可以了。平面图的对偶图,就是用边把平面割成很多个块,就是新图的点。分割两个块的边,就是两个新点的新边。最后我还是没ac,留坑待填。原创 2016-06-28 08:52:29 · 510 阅读 · 0 评论 -
【bzoj1031】【JSOI2007】【字符加密】【Cipher】【字符串】【后缀数组】
题目大意给出一个字符串,将他的循环同构排序,从小到大输出最后一个字符。解题思路显然sa,按rank输出即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(int i=j;i<=k;i+原创 2016-07-20 22:11:37 · 289 阅读 · 0 评论 -
【bzoj1010】【HNOI2008】【玩具装箱】【toy】【动态规划】【斜率优化】
题目大意: 有编号为1..N的N件玩具,第i件玩具长度是Ci。可以将任意编号连续的玩具变成一堆,再装到容器中。如果一堆中有多个玩具,那么每两件玩具之间要加入1个单位长度的填充物。 如果将第i到第j件玩具放在一堆中,那长度将为:j-i+sigma(Ck)//i原创 2015-08-13 16:45:29 · 441 阅读 · 0 评论 -
【bzoj1191】【HNOI2006】【超级英雄】【Hero】【二分图匹配】
题目大意给出一些题目,每题有两个锦囊,用其中一个一定能解决一道题,必须按顺序解决题目,求最多可以解决多少道题目。解题思路显然用匈牙利做二分图匹配,注意按顺序做,一旦有一个失配就停止并输出答案。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long原创 2016-08-02 09:14:58 · 388 阅读 · 0 评论 -
【bzoj4554】【Tjoi2016】【Heoi2016】【游戏】【二分图匹配】
题目大意给出一个图,有一些石头不可炸,一些软石头可炸但不可放炸弹,一些空地可放炸弹。用最多炸弹使两个炸弹互相不可炸。题解对于横竖连通的块标号,可放炸弹的点横竖相连,表示可以放炸弹,做二分图最大匹配即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL原创 2016-07-12 19:25:37 · 438 阅读 · 0 评论 -
【jzoj5215】【BZOJ4870】【Shoi2017】【GDOI2018模拟7.9】【组合数问题】【矩阵快速幂】
题目大意解题思路暴力60分没毛病。rcode#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LF double#define LL long long#define ULL unsigned LL#define fo(i,j,k) for(LL i=j;i<=k;i++)#defin原创 2017-07-09 16:26:24 · 338 阅读 · 0 评论