自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cyhlnj

梦想之所以奢侈,是因为要你付出代价

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

原创 Bzoj3626 [LNOI2014]LCA

先把问题简化,怎样求一个点x和y的lca的deep和 显然直接求LCA,但是这样的话,要求多个就不好叠加 于是可以用奇技淫巧:先把x到根的所有点打上标记,那么询问y到根的标记的个数即为答案,这样就可以叠加 所以对于询问,拆成[1,l-1], [1, r],排序后依次加点覆盖标记即可可以用树链剖分+线段树,或者Orz yyb大佬一样写LCT代码表示不想写LCT# include <bits/st

2017-12-31 20:26:06 232

原创 [TJOI2015]旅游

树链剖分+线段树 线段树维护max,min,左往右的最大差,右往左的最大差 求LCA时一定要注意方向# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long

2017-12-30 17:47:27 224

原创 [SCOI2016]美味

按位从高往低贪心,枚举到第i位,只需要判断这2^i长度的区间是否有菜,用主席树就可以了# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const

2017-12-30 14:41:31 271

原创 [AH/HNOI2017]单旋

这道题可以用LCT做,开set,LCT,二叉树操作1:直接开set,找到它要插入的位置,一定是前驱,后缀中deep最大的(显然手玩)操作2:set+LCT询问路径,直接手动提上去,因为树的形态不变操作3:同2操作4:LCT::Cut,手动删除操作5:同4没了记得手动更新二叉树(这个一定要想清楚会又WA又TLE又RE n遍)# include <bits/stdc++.h># def

2017-12-30 10:30:20 314

原创 Luogu3613 睡觉困难综合征

luogu题面 这道题是NOI起床困难综合症改编而来的 思路是一样的 这道题我们考虑用LCT维护,每个节点维护两个值 一个为中序遍历这棵子树的ans0,ans1(分别表示0和INF(二进制下全为1)跑的答案) 另一个为中序遍历的反向遍历这棵子树的ans0,ans1 还要记得保存这个点的初始操作考虑合并,若知道的左边的f0,f1,右边的g0,g1,合并后的h0,h1 有

2017-12-30 09:01:05 299

原创 [SCOI2007]降雨量

ST表,再大力讨论一下(因为lower_bound和upper_bound,WA了一次)# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;cons

2017-12-30 08:15:03 450

原创 [SCOI2005]王室联邦

分块基本没有限制 所以每次大于等于b就分一块# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int _(2e3 + 10);IL

2017-12-29 22:24:56 255

原创 HAOI2011 problem a

与i分数相同的人数的区间[a[i] + 1, n - b[i]] 设f[i]表示确定了i个人后满足要求的最大人数 对于一个区间[l, r],用map弄出它的个数num,f[r] = max(f[l - 1] + num) q其实不用排序,挂条链就可以了# include <bits/stdc++.h># define RG register# define IL inline# defi

2017-12-29 20:20:51 209

原创 [SDOI2009]晨跑

拆点跑费用流,套模板# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int _(410), __(2e5 + 10), INF(21

2017-12-29 19:22:08 201

原创 Luogu[POI2005]KOS-Dicing

题面二分后用网络流判定 S->人,流量为二分的mid 人->比赛,流量为1 比赛->T,流量为1 输出方案只要判断a就可以了# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcp

2017-12-29 17:39:21 222

原创 [NOI2005]维护数列

Splay模板题(很难调)# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int _(5e5 + 10), INF(21474836

2017-12-29 16:52:50 218

原创 [HNOI2013]切糕

最小割让相邻的最小割上的点层数差小于等于d,也就是大于d时S,T仍然能相通 那么可以从下面d层向上面相邻的点连容量为INF的边 表示相邻的最小割上的点层数差大于d时,还能走这条INF边回来,流其它的路到T,这样就强制要小于等于d了# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b

2017-12-29 11:31:07 217

原创 【ZJOI2010】网络扩容

费用流+最大流 先一遍最大流 再所有边扩容,新加节点限制扩容量k# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))# define ID(a

2017-12-29 10:35:15 218

原创 [ZJOI2009]狼和羊的故事

裸的最小割然而我还是太菜了,没看见有零的格子,WA了两遍# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))# define ID(a, b) (

2017-12-29 09:57:45 343

原创 [USACO09MAR]地震损失2Earthquake Damage 2

题意一共有P个牧场.由C条双向路连接.两个牧场间可能有多条路.一条路也可能连接相同的牧场.牛棚坐落在牧场1.N (1 <= N <= P) 只奶牛打来了求救电话,说她们的农场没有被摧毁,但是已经无法到达牛棚. 求出最少可能有多少牧场被摧毁.求最小割 没有被摧毁的连INF 注意这里的是点,要拆成两个才能转化成边(因此WA了几次)# include <bits/stdc++.h># define

2017-12-29 09:36:53 306

原创 Luogu2045 方格取数加强版

题目描述给出一个n*n的矩阵,每一格有一个非负整数Aij,(Aij <= 1000)现在从(1,1)出发,可以往右或者往下走,最后到达(n,n),每达到一格,把该格子的数取出来,该格子的数就变成0,这样一共走K次,现在要求K次所达到的方格的数的和最大输入输出格式输入格式:第一行两个数n,k(1<=n<=50, 0<=k<=10) 接下来n行,每行n个数,分别表示矩阵的每个格子的数输出格式:一个数,

2017-12-29 08:56:28 206

原创 [SDOI2013]费用流

然而这是一道网络流。。。如果满足Bob,使总费用最大: 设最大流的边流量(不是容量)为w[i],分配到每条边的费用为p[i],最大流量为wmax,p[i]的和为P 那么显然w[i] * p[i]的和小于等于wmax * P 证明: wmax∗P=∑wmax∗p[i].....................(1)wmax * P = \sum wmax * p[i].............

2017-12-28 22:34:06 187

原创 [SCOI2007]蜥蜴

网络流 一个点拆成两个,注意要把某一类边连反过来 这样才能保证有限制# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))# define ID

2017-12-28 21:39:34 160

原创 BZOJ1001 狼抓兔子

最小割RE代码不给AC的# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))# define ID(a, b) (a - 1) * m + bu

2017-12-28 19:36:39 299

原创 [HEOI2016]游戏

二分图匹配(网络流实现)# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))using namespace std;typedef long l

2017-12-28 17:35:19 352

原创 [SDOI2015]星际战争

水题啦网络流+二分 误差才10^-3,乱搞直接开longlong暴力每个都乘1000,输出时除一下就好了# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeo

2017-12-28 15:30:11 233

原创 [USACO5.4]奶牛的电信Telecowmunication

裸的最小割,拆点时要考虑清楚到底是怎么连 如果之前i->i+n,之后又x->y+n,显然出不了解 所以可以改为i+n->i如果要输出方案考虑每一个一个点,如果删去这个点,最小割变小了,那么这个点就是所求点。不输出方案的代码# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) me

2017-12-27 22:30:03 252

原创 luoguP2711 小行星

题目描述星云中有n颗行星,每颗行星的位置是(x,y,z)。每次可以消除一个面(即x,y或z坐标相等)的行星,但是由于时间有限,求消除这些行星的最少次数。输入输出格式输入格式:第1行为小行星个数n,第2行至第n+1行为xi, yi, zi,描述第i个小行星所在的位置。输出格式:共1行,为消除所有行星的最少次数。输入输出样例输入样例#1:31 2 32 3 11 3 2输出样例#1:2说明1≤

2017-12-27 22:09:36 232

原创 luogu2402 奶牛隐藏

题目描述在一个农场里有n块田地。某天下午,有一群牛在田地里吃草,他们分散在农场的诸多田地上,农场由m条无向的路连接,每条路有不同的长度。 突然,天降大雨,奶牛们非常混乱,想要快点去躲雨。已知每个田地都建立有一个牛棚,但是每个牛棚只能容纳一定数量的牛躲雨,如果超过这个数量,那多出的牛只能去别的田地躲雨。奶牛们每移动1的距离花费1时间,奶牛们想知道它们全部都躲进牛棚,最少需要多少时间。(即最后一头奶牛

2017-12-27 20:27:19 267

原创 luogu1402 酒店之王

题目描述XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化。由于很多来住店的旅客有自己喜好的房间色调、阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜。有一天来了n个客人,每个客人说出了自己喜欢哪些房间,喜欢哪道菜。但是很不幸,可能做不到让所有顾客满意(满意的条件是住进喜欢的房间,吃到喜欢的菜)。这里要怎么分配,能使最多顾客满意呢?输入输出格式输入格式:

2017-12-27 19:18:35 322

原创 [CQOI2009]dance跳舞

每个人拆成两个点,一个表示接受喜欢的,一个表示不接受喜欢的,(男yes,男no,女yes,女no) 男yes->男no,容量为k;女no->女yes,容量为k 男女喜欢,则男yes->女yes,容量为1 否则男no->女no,容量为1二分歌曲x,S->男yes,容量为x;女yes->T,容量为x 若最大流==n*x则满足要求# include <bits/stdc++.h># define

2017-12-27 17:26:22 194

原创 [Shoi2007]Vote 善意的投票

题目描述幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?输入输出格式输入格式:文件的第一行只有两个

2017-12-27 16:40:40 253

原创 [CQOI2015]任务查询系统

把一个任务拆成两个,在s时加入,在e+1时减去即可 直接离散化后上主席树# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int _

2017-12-27 15:27:08 247

原创 [SDOI2013]森林

主席树 离散化后 每个点储存从根到它的路径上的点权 新加边时直接用启发式合并,直接把size小的重构 询问时sum[u]+sum[v]-sum[lca]-sum[fa[lca]]来比较,在树上二分 LCA用倍增求,在启发式合并时暴力更新 连通性用并查集维护,再维护每个联通快的size 空间开大点就可以过了# include <bits/stdc++.h># define IL inl

2017-12-26 19:42:20 226

原创 [THUWC 2017]在美妙的数学王国中畅游

bzoj5020题解Taylor展开式: 若f(x)的n阶导数在[a,b]内连续,则f(x)在x0∈[a,b]可表示为若f(x)的n阶导数在[a, b]内连续,则f(x)在x_{0}\in[a, b]可表示为f(x)=∑i=0nf(n)(x0)(x−x0)ii!+Θ((x−x0)n)f(x)=\sum_{i=0}^{n} \frac{ f^{(n)}(x_{0})(x-x_{0})^{i} }{i

2017-12-26 15:15:09 484

原创 [POI2014]KUR-Couriers

题意给一个数列,每次询问一个区间内有没有一个数出现次数超过一半题解主席树,一个数出现次数>一半,这个区间内只有这一个数满足,那么主席树直接维护所有数的出现次数,直接在树上二分查询# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))us

2017-12-25 20:47:25 249

原创 WC2001 高性能计算机

cogs网址这道题DP 设g[0/1][i][a][b]表示第i个机子做了a个A,b个B,0/1表示当前为A/B的最小代价 N^4转移 设f[i][a][b]表示前i个机子做了a个A,b个B的最小答案 N^5转移# include <bits/stdc++.h># define RG register# define IL inline# defi

2017-12-25 19:54:08 420

原创 Bzoj2588 Count on a tree

离散化 主席树 每个点记录它到根的路径上的点 查询时u,v,lca,fa[lca]组合起来计算即可# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long l

2017-12-23 11:22:39 247

原创 Bzoj1901 Dynamic Ranking

动态区间第k小那么每个点开一棵线段树(主席树)再套一个树状数组在外面每次询问区间内的树的个数时 相当于进行了一次树状数组求区间和的操作,只是是把树状数组那个点看做主席树,对log棵主席树求区间和然后每次询问,修改时就是把log棵主席树同时跳到儿子,修改也是log棵时间复杂度O(nlogn*logn)空间复杂度O(nlogn*logn)# include <bits/stdc++.h># defi

2017-12-23 11:09:42 244

原创 [NOI2014]起床困难综合症

从高位往地位贪心即可# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int _(1e5 + 10);IL ll Read(){

2017-12-20 22:23:49 346

原创 [SCOI2010]传送带

在两个传送带上分别三分两个点计算 三分套三分# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Sqr(x) ((x) * (x))using namespace std;typedef long long ll

2017-12-19 21:46:55 352

原创 [CQOI2007]余数求和

大于k的部分直接加k 对于小于等于k的cnt个数 ans=cnt*k - Σ(k/i * i) 然后k/i在一段区间内不变,这段区间直接可以数列求和# include # define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;type

2017-12-19 20:41:00 351

原创 四维偏序

CDQ套CDQ或者CDQ套树套树 前者快于后者然而我写了后者# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# define RG register# define Fill(a, b) memse

2017-12-19 19:37:09 568

原创 CDQ分治 陌上花开(三维偏序)

CDQ分治或树套树可以切掉 CDQ框架:先分计算左边对右边的贡献再和所以这个题可以一维排序,二维CDQ,三维树状数组统计 CDQ代码# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# def

2017-12-19 19:34:52 452

原创 动态逆序对

CDQ分治 把删除转变为逐个添加,于是就变成了三维偏序问题 时间,位置,大小 分两遍统计即可# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# define RG register# defi

2017-12-19 19:28:33 427

空空如也

空空如也

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

TA关注的人

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