
BZOJ题解
DYT_B
略过
展开
-
BZOJ2435: [Noi2011]道路修建
题目描述:传送门题解:dfs计数?#include<cstdio>#include<string>using namespace std;const int maxn=1000005;int n,tot,lnk[maxn],son[2*maxn],nxt[2*maxn],w[2*maxn];bool vis[maxn];long long ans...原创 2018-04-26 19:51:53 · 203 阅读 · 0 评论 -
BZOJ4551: [Tjoi2016&Heoi2016]树
题目描述:Description 在2016年,佳媛姐姐刚刚学习了树,非常开心。现在他想解决这样一个问题:给定一颗有根树(根为1),有以下两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个结点,可以打多次标记。)2. 询问操作:询问某个结点最近的一个打了标记的祖先(这个结点本身也算自己的祖先)你能帮帮他吗?Input 输入第一行两个...原创 2018-04-11 20:06:05 · 242 阅读 · 0 评论 -
BZOJ3732: Network
题目描述:Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N。 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,000,000,000).现在有 K个询问 (1 < = K < = 20,000)。 每个询问的格式是:A B...原创 2018-04-10 20:37:26 · 381 阅读 · 0 评论 -
BZOJ1086: [SCOI2005]王室联邦
题目描述:Description “余”人国的国王想重新编制他的国家。他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理。他的国家有n个城市,编号为1..n。一些城市之间有道路相连,任意两个不同的城市之间有且仅有一条直接或间接的道路。为了防止管理太过分散,每个省至少要有B个城市,为了能有效的管理,每个省最多只有3B个城市。每个省必须有一个省会,这个省会可以位于省内,也可...原创 2018-04-10 18:55:59 · 211 阅读 · 0 评论 -
BZOJ1562: [NOI2009]变换序列
题目描述##:传送门题解:这题显然是二分图完美匹配。然后只要考虑一下字典序最小就好了。代码如下:#include<cstdio>#include<string>#include<cstring>using namespace std;const int maxn=200005;int n,sum,tot,lnk[maxn],nxt[...原创 2018-04-14 20:02:01 · 194 阅读 · 0 评论 -
BZOJ1597: [Usaco2008 Mar]土地购买
题目描述:Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000,000; 1 <= 长 <= 1,000,000). 每块土地的价格是它的面积,但FJ可以同时购买多快土地. 这些土地的价格是它们最大的长乘以它们最大的宽, 但是土地的长宽...原创 2018-02-24 22:28:20 · 200 阅读 · 0 评论 -
BZOJ1096: [ZJOI2007]仓库建设
题目描述:Description L公司有N个工厂,由高到底分布在一座山上。如图所示,工厂1在山顶,工厂N在山脚。由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用。突然有一天,L公司的总裁L先生接到气象部门的电话,被告知三天之后将有一场暴雨,于是L先生决定紧急在某些工厂建立一些仓库以免产品被淋坏。由于地形的不同,在不同工厂建立仓库的费用可能是不同的。第i...原创 2018-02-24 22:21:49 · 302 阅读 · 0 评论 -
BZOJ1010[HNOI2008] 玩具装箱toy
题目描述:Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中。P教授有编号为1…N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的。同时如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充...原创 2018-02-24 19:41:54 · 261 阅读 · 0 评论 -
BZOJ3675: [Apio2014]序列分割
题目描述: Description 小H最近迷上了一个分隔序列的游戏。在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列。为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.小H首先选择一个长度超过1的序列(一开始小H只有一个长度为n的序列——也就是一开始得到的整个序列); 2.选择一个位置,并通过这个位置将这个序列分割成连续的两个非空的新序列。 每次进行...原创 2018-03-01 21:13:06 · 238 阅读 · 0 评论 -
BZOJ1856: [Scoi2010]字符串
题目描述:Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数。现在lxhgww想要知道满足要求的字符串共有多少个,聪明的程序员们,你们能帮助他吗? Input 输入数据是一行,包括2个数字n和m Output 输出数据是一行,包括1个数字,表示满足要求...原创 2018-02-22 22:56:26 · 211 阅读 · 0 评论 -
BZOJ1816: [Cqoi2010]扑克牌
题目描述:Description 你有n种牌,第i种牌的数目为ci。另外有一种特殊的牌:joker,它的数目是m。你可以用每种牌各一张来组成一套牌,也可以用一张joker和除了某一种牌以外的其他牌各一张组成1套牌。比如,当n=3时,一共有4种合法的套牌:{1,2,3}, {J,2,3}, {1,J,3}, {1,2,J}。 给出n, m和ci,你的任务是组成尽量多的套牌。每张牌最多只能用在一...原创 2018-02-22 22:22:28 · 242 阅读 · 0 评论 -
BZOJ4552: [Tjoi2016&Heoi2016]排序
题目描述:Description: 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴。 ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号预估质量最高的菜肴编号为1。由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如“i 号菜肴‘必须’先于 j 号菜肴制作”的限制,我们将这样的限制简写为《i,j》。现在...原创 2018-02-22 21:27:34 · 333 阅读 · 0 评论 -
BZOJ1412: [ZJOI2009]狼和羊的故事
题目描述:Description“狼爱上羊啊爱的疯狂,谁让他们真爱了一场;狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈可以看作一个n*m个矩阵格子,这个矩阵的边缘已经装上了篱笆。可是Drake很快发现狼再怎么也是狼,它们总是对羊垂涎三尺,那首歌只不过是一个动人的传说而已。所以Orez决定...原创 2018-03-14 20:59:31 · 391 阅读 · 0 评论 -
BZOJ1922: [Sdoi2010]大陆争霸
题目描述:传送门题解:这题是一道有限制的最短路题。 如果没有限制,刷一次最短路就行了,但是是有限制的,即走一个点之前必须要先走另外几个点。那么我们应该怎样处理呢。 这里其实有一个贪心的想法,刷Dijkstra。(这个算法本身就是贪心)对于当前的每一个点,求出其”需要多久才能走到”以及”多久才能销毁它的所有限制条件”这两个量,求一个时间的max就是走到这个点的真实时间。接下去用这个真实时...原创 2018-02-18 22:33:10 · 225 阅读 · 0 评论 -
BZOJ1066: [SCOI2007]蜥蜴
题目描述:Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减1(如果仍然落在地图内部,则到达的石柱高度不变),如果该石柱原来高度为1,则蜥蜴离开后消失。以后其他蜥...原创 2018-02-18 20:50:36 · 444 阅读 · 0 评论 -
BZOJ1257: [CQOI2007]余数之和sum==51nod1225 余数之和 (略有不同)
BZOJ传送门题解:这题做过好几次,只要对于除值相同的部分进行分块,一块一块处理就好了啊。。。 代码如下(51nod版本):#include<cstdio>#include<string>using namespace std;const int tt=1000000007,inv2=(tt+1)/2;long long n,m,ans;lo...原创 2018-02-17 22:08:51 · 255 阅读 · 0 评论 -
BZOJ1566: [NOI2009]管道取珠
题目描述: 传送门题解:这题要求的是ai^2,我们难以直接写DP硬求,此时就要思考一些奇伎淫巧了。 我们注意到,ai^2就是ai*ai,如果我们同时进行两场游戏,两边相同时相加,最后不就是ai^2了吗? 所以我们可以定义f[i][j][k][t] 表示第一局第一个管取到第i个,第二个管取到第j个;第二局第一个管取到第k个,第二个管取到第t个。但是这样还会超时。我们注意到i+j等于k+t...原创 2018-04-17 20:48:38 · 301 阅读 · 0 评论 -
1787: [Ahoi2008]Meet 紧急集合
题目描述题解:这题首先能够确定这个交点属于任意两个点的lca中的一个。 那么我们就可以刷三次lca,并且求出交点,然后路径求和就好了。代码如下:#include<cstdio>#include<string>using namespace std;const int maxn=500005;int n,Q,tot,lnk[maxn],so...原创 2018-04-14 10:04:53 · 183 阅读 · 0 评论 -
FFT:BZOJ4503 两个串
题目描述:戳这里题解:如果没有"?",那么我们可以用kmp。我们可以把这道题目抽象成一个和式:假设两串S,T分别是0~n,0~m,翻转T串(变成m~0)。假设T串中"?"的位置都设为0。假设S串从第x个位置开始匹配可以匹配完T串,那么等价于要满足:∑0m(Sx+i−Tm−i)2Tm−i=0\sum_0^m(S_{x+i}-T_{m-i})^2T_{m-i}=00∑m(Sx+i−T...原创 2018-12-23 14:42:17 · 226 阅读 · 0 评论 -
BZOJ 2286消耗战
题目描述:戳这里题解:这题就是虚树的板子题啦。我们要求一些最小可以阻断给定k个点到根的路径的边权和。那么考虑没有询问的情况,可以直接用树形DP。我们先用倍增求出一个点到根的路径上的最小的边权x,然后对于一个选中的节点,肯定是求它的x作为一这个点为根的子树上的答案。而对于一个未被选中的点,就有两种可能,一种是合并它子树中的点的答案,一种是当做选中的点来处理,两个取min。但是我们考虑到有多组...原创 2018-10-17 18:57:42 · 274 阅读 · 0 评论 -
BZOJ1977: [BeiJing2010组队]次小生成树 Tree
题目描述:戳这里 题解: 求非严格次小生成树是比较简单的,但是严格的就有点(超级)麻烦了。 我们可以考虑一下用克鲁斯卡尔做最小生成树的过程,一定是找了一些最小的边来构造。 我们假设造好了最小生成树,那么任意一条没有被选择过的边加入树都会在树上形成一个环。 则我们只需要考虑取出当前环上权值最大的一条边,换成当前这条,看看是不是最小次大的就可以了。 但是题目中说了是严格次小生成树,所以有可...原创 2018-07-29 14:07:28 · 210 阅读 · 0 评论 -
BZOJ3124: [Sdoi2013]直径
题目描述:戳这里 题解:: 这题是一道比较经典的和直径有关的题目。我们首先肯定要刷出直径。 有一个关于直径的结论,如果有多条直径,那么它们相交的部分肯定是连续的一段(yy一下应该能想出来)。 那么在我们刷出来的直径中,为什么会出现一条边没有被所有直径经过呢,那么肯定是从直径上的某一个在它之前的点有至少两条最长路径,那么这个点在某一条中,那么肯定就不满足题目条件了。 我们思考一下,是不是只...原创 2018-07-29 08:59:24 · 252 阅读 · 0 评论 -
莫比乌斯反演初步2:BZOJ 2301: [HAOI2011]Problem b
题目描述:戳这里 题解: 这题看似和HDU1965很像,其实就是很像。(HDU1965题解) 反演的过程是一样的,只是这题的数据更加大一点。所以我们一定要用除法分块。 还有一点,这题的a和c不是1,所以要容斥一下: 答案是:mu(b,d)-mu(a-1,d)-mu(b,c-1)+mu(a-1,c-1)代码如下:#include&amp;lt;cstdio&amp;gt;#include&amp;l...原创 2018-07-17 08:44:51 · 222 阅读 · 0 评论 -
BZOJ 2440: [中山市选2011]完全平方数
题目描述题解: 这题是一道莫比乌斯函数题。具体看k神的博客。代码如下:#include<cstdio>#include<string>#include<cmath>using namespace std;const int maxn=1000005;int T,n,m,su[maxn],f[maxn],ans;bool vis[ma...原创 2018-06-24 15:24:26 · 246 阅读 · 0 评论 -
BZOJ3884: 上帝与集合的正确用法
题目描述戳这里题解:这道题是一道函数构造题,详细可以看这个博客讲的很清楚。 代码如下:#include<cstdio>#include<string>#include<cmath>#include<map>using namespace std;int T;long long n;map <long long,l...原创 2018-06-23 14:14:58 · 235 阅读 · 0 评论 -
BZOJ2705: [SDOI2012]Longge的问题
题目描述:传送门题解:这题和51nod上有一题是一样的。 假设gcd(n,i)=k,则满足gcd(n,i)=k的i之和就是φ(n/k)*k,即为小于等于n/k并且与n/k互质的数的和,再乘上最大公因数k。 那么我们可以直接暴力枚举一下就好了。 代码如下:#include&lt;cstdio&gt;#include&lt;string&gt;#include&lt;cm...原创 2018-06-23 11:09:39 · 344 阅读 · 0 评论 -
BZOJ1856: [Scoi2010]字符串&&Luogu P1641 [SCOI2010]生成字符串
题目描述:LG传送门 BZOJ传送门题解:这题看似有点像DP题,但是其实是一道排列组合题。答案就是C(n+m,m)-C(n+m,m-1)。 详细参考LG上xyz32768的题解 代码如下:#include<cstdio>#include<string>using namespace std;const int maxn=20000...原创 2018-06-21 19:39:36 · 267 阅读 · 0 评论 -
BZOJ4368: [IOI2015]boxes纪念品盒
题目描述:传送门题解: 这题是一道贪心题,想法非常神奇。。。 详见原题解:传送门 代码如下:#include<cstdio>#include<string>#include<algorithm>using namespace std;const int maxn=10000005;int n,m,l,s1[maxn],s2[m...原创 2018-05-24 20:59:49 · 443 阅读 · 0 评论 -
BZOJ1303: [CQOI2009]中位数图
题目描述:传送门 题解:前缀和水题,个人做法比较傻逼。。。#include<cstdio>#include<string>#include<map>#include<algorithm>using namespace std;const int maxn=100005;int n,m,a[maxn],s[maxn];long ...原创 2018-05-28 21:10:27 · 232 阅读 · 0 评论 -
BZOJ1028: [JSOI2007]麻将
题目描述:传送门题解:这题是比较水的一道题。我们发现n比较小,直接暴力一发。爆枚少了那张牌,再枚举用哪两张牌来组成对子,最后暴力判断是否可以和牌(可以组成刻子先组刻子,不行再组顺子)。 代码如下:#include<cstdio>#include<string>#include<algorithm>using namespace std;...原创 2018-05-23 21:10:24 · 326 阅读 · 0 评论 -
BZOJ2208: [Jsoi2010]连通数
题目描述:传送门题解: ~~大力暴力~~ 代码如下:#include<cstdio>#include<string>#include<cstring>using namespace std;const int maxn=2005,maxm=4000005;int n,tot,ans,lnk[maxn],son[2*maxm],nxt...原创 2018-05-21 20:34:14 · 203 阅读 · 0 评论 -
BZOJ1497: [NOI2006]最大获利
题目描述:Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战。THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研究、站址勘测、最优化等项目。在前期市场调查和站址勘测之后,公司得到了一共N个可以作为通讯信号中转站的地址,而由于这些地址的地理位置差异,在不同的地方建造通讯中转...原创 2018-02-17 17:22:32 · 458 阅读 · 0 评论 -
BZOJ1025: [SCOI2009]游戏
题目描述:Description windy学会了一种游戏。对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应。最开始windy把数字按顺序1,2,3,……,N写一排在纸上。然后再在这一排下面写上它们对应的数字。然后又在新的一排下面写上它们对应的数字。如此反复,直到序列再次变为1,2,3,……,N。 如: 1 2 3 4 5 6 对应的关系为 1->2 2->3 3-...原创 2018-02-17 14:56:49 · 200 阅读 · 0 评论 -
BZOJ1055: [HAOI2008]玩具取名
题解:一道简单的dp题。定义f[i][j][c]表示i~j这一区间中的所有字母能否缩成c这一字母。转移就是:f[i][j][c]=f[i][k][c1]&& f[k+1][c2]&&(c1c2>>c,i代码如下:#include#include#includeusing namespace std;const int maxn=205;int n,a[5][maxn],hs原创 2018-01-13 20:41:21 · 212 阅读 · 0 评论 -
BZOJ1296: [SCOI2009]粉刷匠
题解:这题比较简单,可以用dp+0/1背包来解决。首先对每一条木板都刷一趟dp,求出f[i][m][j]表示第i个木板刷了j次可以正确粉刷的格子总数。然后对于所有的木板做一次0/1背包。最后输出f1[n][t]即可。#include#includeusing namespace std;const int maxn=55,maxm=2505;int n,m,t,a[maxn][m原创 2018-01-12 21:47:30 · 200 阅读 · 0 评论 -
BZOJ1022: [SHOI2008]小约翰的游戏John
题解:这题是经典的nim游戏,判断能不能获胜,只要将每一堆的个数xor起来,再判断一下就好了。#include#includeusing namespace std;int T,n;inline int read(){ int x=0; char ch=getchar(); while (ch'0'||ch>'9') ch=getchar(); whil原创 2018-01-13 20:44:34 · 230 阅读 · 0 评论 -
BZOJ1854: [Scoi2010]游戏
题解这题其实是二分图最大匹配。可以把1~1000000的属性和1~n的武器相连边,然后从1开始刷二分图匹配,刷到无法匹配就停下来并输出答案。 代码如下:#include#include#includeusing namespace std;const int maxn=10005,maxm=1000005;int n,m,tot,girl[maxm],lnk[maxm],s原创 2018-01-13 20:59:16 · 262 阅读 · 0 评论 -
BZOJ1024: [SCOI2009]生日快乐
题解:n这么小,不爆搜对不起题面。。。 代码如下:#include#includeusing namespace std;int t;double n,m;double dfs(double x,double y,int z){ if (z==1) {if (xreturn x/y;} double ans=1e20; for (int i=1;i<原创 2018-01-13 21:35:54 · 293 阅读 · 0 评论 -
BZOJ1260: [CQOI2007]涂色paint
题解:水题,区间dp。 代码如下:#include#include#includeusing namespace std;const int maxn=55;int n,a[maxn],f[maxn][maxn];char s[maxn];int main(){ scanf("%s",s); n=strlen(s); for (int i=0;i1]=s原创 2018-01-13 21:39:00 · 375 阅读 · 0 评论 -
BZOJ4337: BJOI2015 树的同构
题解树哈希。因为节点可以重新标号,直接把一棵树的每一个节点当做根来做哈希再判断一下就好了。 代码如下:#include#include#include#includeusing namespace std;const int maxn=55,pow=2333,tt=1000000007;int m,n,tot,s[maxn],lnk[maxn],son[2*maxn],n原创 2018-01-13 21:46:25 · 345 阅读 · 0 评论