自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 收藏
  • 关注

原创 bzoj 2303: [Apio2011]方格染色 (并查集)

题目描述传送门题目大意:将每个方格都染成红色或蓝色。要表格中每个2 × 2的方形区域都包含奇数个(1 个或 3 个)红色方格。有些格子的颜色已经染好了,求给剩下的方格染上颜色,使得整个表格仍然满足要求的染色方案数题解对于每个一个2*2的表格,我们可以把条件表示成异或方程的形式。 对于每个位置(i,j),若填红色那么a[i][j]=1a[i][j]=1 S(i,j)S(i,j)=a[i][j]

2017-04-28 20:13:49 557

原创 bzoj 2304: [Apio2011]寻路 (最短路+建图)

题目描述传送门题解对于矩形的每个顶点找到能到达的其他矩形边界上的点,然后将所有有用的点找出来。 先按照纵坐标排序,然后将纵坐标相同的点中相邻的点连边,注意在边界上的点需要特判,因为不能进入矩形。 然后按照横坐标排序,处理方式与纵坐标相同。 注意需要特判一下起点与终点的位置,因为有可能在矩形的边界上。 连完边,跑最短路即可。代码#include<iostream>#include<cstri

2017-04-28 08:53:10 687

原创 bzoj 1177: [Apio2009]Oil (DP)

题目描述传送门题解将矩阵分割成3部分,分割一下其实可以发现,最多只有6中分割情况 对于每个位置维护以(x,y)为正方形的左上角,左下角,右上角,右下角,所得到的正方形的和。 然后在维护到每个位置的左前缀,右前缀,左后缀,右后缀的最大值。 暴力每种分割的方法计算答案。代码#include<iostream>#include<cstdio>#include<algorithm>#incl

2017-04-27 16:18:15 378

原创 bzoj 1178: [Apio2009]CONVENTION会议中心 (set+倍增)

题目描述传送门题解代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<set>#include<map>#define N 200003#define inf 1000000000using namespace std;struct data

2017-04-27 16:07:58 658

原创 bzoj 4606: [Apio2008]DNA (DP)

题目描述传送门题解代码#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>#define N 50003#define LL long long using namespace std;int n,m,a[N],a1[N],b[N];LL f[N][5][13],g

2017-04-26 21:28:41 533

原创 bzoj 4561: [JLoi2016]圆的异或并 (计算几何+扫描线+splay)

题目描述传送门题目大意:在平面直角坐标系中给定N个圆。已知这些圆两两没有交点,即两圆的关系只存在相离和包含。求这些圆的异或面积并。异或面积并为:当一片区域在奇数个圆内则计算其面积,当一片区域在偶数个圆内则不考虑。题解首先两个圆的相对位置是不会改变的。 上图中的三个圆与三条直线相交会形成上下两个交点,如果把交点看成是左右括号,那么括号序列的相对关系是不变的(如果存在同一条直线上),靠上的两个圆如

2017-04-26 19:17:15 552

原创 UOJ#206. 【APIO2016】Gap

和ATP达成人生成就——第一道交互题

2017-04-25 21:38:35 1096

原创 bzoj 1845: [Cqoi2005] 三角形面积并 (扫描线+计算几何)

题目描述传送门题目大意:给出n个三角形,求它们并的面积。题解MD被卡了一下午精度,各种不爽!!! 同样被卡的同学建议使用long double试一试。。。。 我们把三角形的顶点以及所有交点的横坐标离散,那么相邻两列之间的图形要么是梯形要么是三角形,只要统计出两列上的被覆盖区域的长度,就可以用(上底+下底)*高/2来计算。 统计覆盖区域的话,找出所有的区间,左端点排序后扫一遍就可以了。 有一种

2017-04-25 17:26:49 493

原创 bzoj 2161: 布娃娃 (扫描线+线段树)

题目描述传送门题解把l[i],r[i]看成是l[i]处加入,r[i]+1处删除。 因为要查询的是第k大的问题,所以我们将c[i]离散化后建立权值线段树即可。代码#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>#define N 400003#define p 199

2017-04-25 09:55:36 674

原创 bzoj 3958: [WF2011]Mummy Madness (扫描线+线段树)

题目描述传送门题解二分一个移动的时间。然后每个木乃伊和自己能到达的区域是一个正方形。 判断自己能到达的区域是否完全被木乃伊所能到达的区域覆盖即可。 有些细节需要注意: (1) 离散化的时候要插入中间点,否则离散完了不相邻的点都相邻了。 (2) 线段树区间修改的时候不下放标记,对于一个区间如果标记>0,那么答案就是区间的长度,这样子标记都被保留了,删除的时候可以直接删。 (3)需要注意自己能

2017-04-25 08:49:59 375

原创 bzoj 1818: [Cqoi2010]内部白点 (扫描线+线段树)

题目描述传送门题目大意:无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点)。每秒钟,所有内部白点同时变黑,直到不存在内部白点为止。你的任务是统计最后网格中的黑点个数。 内部白点的定义:一个白色的整点P(x,y)是内部白点当且仅当P在水平线的左边和右边各至少有一个黑点(即存在x1 < x < x2使得(x1,y)和(x2,y)都是黑点),且在竖直线的上边

2017-04-24 20:49:46 358

原创 bzoj 1218: [HNOI2003]激光炸弹 (扫描线+线段树)

题目描述传送门题目大意:平面内有n个点,求用长度为R的矩形可以框住的点的最大价值,边界上的不算。题解如果直接算边长为R的矩形框住的点,不容易计算。 我们把问题做变形,对于每个点我们把其扩大成一个矩形,表示只要矩形的左上角在该区域中就可以得到这个点的价值,那么我们其实就是要找到被覆盖的价值最大的位置。 根据矩形的左右边界把每个矩形拆成两个操作,在左边界+val,在右边界+1 -val。 然后按照

2017-04-24 19:30:43 650

原创 bzoj 4780: [Usaco2017 Open]Modern Art 2 (模拟)

题目描述传送门题目大意:给定一个序列,序列上每个点有一个颜色。每一轮可以选择一些没有交集的区间,将每个区间涂上一种颜色。要求全程每个颜色最多被涂一个区间,求最少涂多少轮题解其实就是求一个合法的括号序列的最大深度。 注意“0 for a blank cell”这句话,刚开始没看到,结果不停的WA。。。。QAQ代码#include<iostream>#include<cstring>#includ

2017-04-24 16:39:31 651

原创 bzoj 2788: [Poi2012]Festival (差分约束+最短路+tarjan)

题目描述传送门题目大意:有n个正整数X1,X2,...,XnX1,X2,...,Xn,再给出m1+m2m1+m2个限制条件,限制分为两类: 1. 给出a,b(1<=a,b<=n)a,b (1<=a,b<=n),要求满足Xa+1=XbXa + 1 = Xb 2. 给出c,d(1<=c,d<=n)c,d (1<=c,d<=n),要求满足Xc<=XdXc <= Xd 在满足所有限制的条件下,求集合{

2017-04-24 14:51:31 529 1

原创 bzoj 1077: [SCOI2008]天平 (差分约束)

题目描述传送门题解代码#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>#define N 100003#define inf 1000000000using namespace std;int tot,nxt[N],point[N],v[N],c[N],mp[10

2017-04-24 09:21:07 655

原创 bzoj 3436: 小K的农场 (差分约束)

题目描述传送门题解代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<queue>#define N 200003#define inf 1000000000using namespace std;int tot,nxt[N],point[N]

2017-04-24 07:21:54 274

原创 bzoj 1064: [Noi2008]假面舞会 (图论+DFS)

题目描述传送门题目大意:共n个人,k(k>3)种面具,只有戴第i 类面具的人才能看到戴第i+1 类面具的人的编号,戴第k 类面具的人能看到戴第1 类面具的人的编号。给出m对关系,(x,y)表示x可以看到y。现在请你根据给出的关系计算,至多和至少有多少类面具。如果k<3或者信息有误,输出-1.题解给出的是一个有向图,求出的k必须满足是所有环上点数的倍数,那么最直接的想法一定是找出所有的环求环上点数的g

2017-04-23 23:51:25 552

原创 poj 1752 Advertisement (差分约束)

题目描述传送门题目大意:题目大意:有n个人在一条路上跑步,广告商准备在这条路上设置广告牌,假设这条路上每一个点有一个广告牌 现在已知这n个人从Ai开始跑,到Bi结束,那么他可以看到max(Ai,Bi)-min(Ai,Bi)+1的广告牌数,现在广告商 需要每个人都要看到至少k个广告牌(如果区间长度不够K,那么需要看到区间长度),求需要设置的最少广告牌数以及一组合法解题解经典的区间约束问题。 设d

2017-04-23 21:27:22 578

原创 hdu 3666 THE MATRIX PROBLEM (差分约束)

题目描述传送门题解代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#define N 400003#define inf 1000000000using namespace std;int point[N],nxt[N],v[N

2017-04-23 20:40:47 290

原创 hdu 3440 House Man (差分约束)

题目描述传送门题解代码#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>#include<queue>#define N 100003#define inf 2147400000using namespace std;int h[N],dis[N],v[N],c[

2017-04-23 19:57:11 292

原创 poj 3169 Layout (差分约束)

题目描述传送门题目大意:n头牛编号为1到n,按照编号的顺序排成一列,每两头牛的之间的距离 >= 0。这些牛的距离存在着一些约束关系:1.有ml组(u, v, w)的约束关系,表示牛[u]和牛[v]之间的距离必须 <= w。2.有md组(u, v, w)的约束关系,表示牛[u]和牛[v]之间的距离必须 >= w。问如果这n头无法排成队伍,则输出-1,如果牛[1]和牛[n]的距离可以无限远,则输出-2,

2017-04-23 19:14:35 242

原创 bzoj 2539: [Ctsc2000]丘比特的烦恼 (KM算法)

题目描述传送门题解KM的裸题吧,就是细节比较恶心。。。。代码#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>#include<map>#define N 103#define inf 1000000000using namespace std;double di

2017-04-22 21:51:33 753

原创 bzoj 4832: 抵制克苏恩 (概率与期望DP)

题目描述传送门题目大意::有1一个英雄和若干随从奴隶主,克苏恩会攻击 K 次,每次会从对方场上的英雄和随从中随机选择一个并对其产生 1 点伤害。现在对方有一名克苏恩,你有一些奴隶主作为随从,每名奴隶主的血量是给定的。 如果克苏恩攻击了你的一名奴隶主,那么这名奴隶主的血量会减少 1 点,当其血量小于等于 0 时会死亡,如果受到攻击后不死亡,并且你的随从数量没有达到 7 ,这名奴隶主会召唤一个拥有

2017-04-22 20:45:25 1088

原创 bzoj 1048: [HAOI2007]分割矩阵 (记忆化搜索)

题目描述传送门题目大意:给出一个矩阵,将其分割成n个小矩阵,个矩阵的总分为其所含各位置上分值之和。最小化各矩阵总分的均方差。题解记忆化搜索。 f[a][b][c][d][k]f[a][b][c][d][k] 表示将矩阵(a,b,c,d)(a,b,c,d)分割K次的∑ki=1(xi−x¯)2\sum_{i=1}^k (x_i-\bar x)^2的最小值。 最后的答案就是f[a][b][c][d][

2017-04-22 17:25:21 587 1

原创 bzoj 1079: [SCOI2008]着色方案 (记忆化搜索)

题目描述传送门题目大意:有n个木块排成一行,从左到右依次编号为1~n。你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块。 所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=nc1+c2+...+ck=n。相邻两个木块涂相同色显得很难看,所以你希望统计任意两 个相邻木块颜色不同的着色方案。题解f[a][b][c][d][e][x]f[a][b][c][d][e][x] 表剩余数量为

2017-04-22 16:42:55 614

原创 bzoj 2534: Uva10829L-gap字符串 (后缀数组+ST表)

题目描述传送门题目大意:有一种形如uvu形式的字符串,其中u是非空字符串,且V的长度正好为L,那么称这个字符串为L-Gap字符串 。 给出一个字符串S,以及一个正整数L,问S中有多少个L-Gap子串.题解同bzoj 2119: 股市的预测代码#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#incl

2017-04-21 15:10:55 516

原创 bzoj 3730: 震波 (动态点分治)

题目描述传送门题解这道题如果用动态开点的线段树时间非常的卡,我写的常数太大根本卡不过去。。。。 貌似比较好的打开方式是把线段树改成树状数组。。。 以下代码是TLE的。。。代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define N 100003#defi

2017-04-21 11:06:05 501

原创 hdu 5571 tree (动态点分治)

题目描述传送门题目大意:给出一棵n个节点的树,每个点有一个权值aia_i,一个点对(i,j)i<j(i,j) i<j的贡献为(ai xor aj)∗dis(i,j)(a_i \space xor \space a_j)*dis(i,j),求每次修改一个节点后树中所有点对的贡献和。题解带修改的路径问题很适合用动态点分治来做。 这道题如果我们直接考虑ai xor aja_i \space xor \

2017-04-21 08:11:02 389

原创 hdu 4918 Query on the subtree (动态点分治+动态开点+线段树)

题目描述传送门题目大意:一棵n个节点的树,每个节点有一个权值val 操作1:修改点x的权值 操作2:查询与x的距离小于等于d的节点的权值和。题解如果修改的话应该有很多种做法的。 首先建立重心树,对于每个点维护两棵权值线段树,一棵表示u(作为重心)的子树中到u距离为x的点的权值和,一棵表示到u的父重心距离为x的点的权值和。 那么每次查询的时候就是u的子树中距离为[0,d]的权值和+u在重心树中

2017-04-20 21:20:25 758

原创 bzoj 1095: [ZJOI2007]Hide 捉迷藏 (动态点分治)

题目描述传送门题目大意:给出一棵树,树上的每个点有黑白两种状态,求树上最远两个黑点的距离。 会改变点的状态。题解这道题如果不会改变点的状态,那么就是一道点分治的裸题。因为点的状态会动态的改变,所以就引进了一种新的算法——动态点分治。 首先回顾一下点分治的过程,点分治其实就是每次找到重心,然后处理与重心有关的路径。时间复杂度的之所以能够保证是因为如果按照每次找出的重心建树,那么树高不会超过logn

2017-04-20 17:46:34 515

原创 bzoj 1558: [JSOI2009]等差数列 (线段树)

题目描述传送门题目大意:给定一个长度为N的数列,初始时第i个数为vi。 操作(1)A s t a b在序列的[s,t]区间上加上初值为a,步长为b的等差数列。即vi变为vi+a+b*(i-s) 操作(2)B s t询问当前序列的[s,t]区间最少能划分成几段,使得每一段都是等差数列。题解首先可以想到的是线段树维护的是差分后的值,vali=vi+1−vival_i=v_{i+1}-v_i,而不是原

2017-04-20 10:39:11 1366

原创 bzoj 1449: [JSOI2009]球队收益 (费用流)

题目描述传送门题目大意:在一个篮球联赛里,有n支球队,球队的支出是和他们的胜负场次有关系的,具体来说,第i支球队的赛季总支出是Ci∗x2+Di∗y2,Di<=CiCi*x^2+Di*y^2,Di<=Ci。其中x,y分别表示这只球队本赛季的胜负场次。现在赛季进行到了一半,每只球队分别取得了win[i]场胜利和lost[i]场失利。而接下来还有m场比赛要进行。问联盟球队的最小总支出是多少。题解对于每支队

2017-04-19 20:50:26 360

原创 bzoj 4012: [HNOI2015]开店 (树链剖分+主席树)

题目描述传送门题解这道题维护和求解的方法和bzoj 3924: [Zjoi2015]幻想乡战略游戏是类似的。 但是这道题有一个[L,R]的区间限制,所以我们用主席树来维护,外层是按照离散化后的xix_i从小到大,内层是dfs序。代码#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<c

2017-04-19 18:40:55 600

原创 bzoj 4353: Play with tree (树链剖分)

题目描述传送门题目大意: 给你一棵包含N个节点的树,设每条边一开始的边权为0,现在有两种操作: 1)给出参数U,V,C,表示把U与V之间的路径上的边权变成C(保证C≥0) 2)给出参数U,V,C,表示把U与V之间的路径上的边权加上max(C,路径上边权最小值的相反数)。 你需要统计出每次一操作过后树中边权为0的边有多少条。题解树链剖分。边权下放为点权。 然后用线段树维护区间最小值,区间最小

2017-04-19 10:08:50 537

原创 bzoj 1071: [SCOI2007]组队 (单调性乱搞)

题目描述传送门题目大意:假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有队员都应该满足: A∗(height–minH)+B∗(speed–minV)<=CA * ( height – minH ) + B * ( speed – minV ) <= C 其中A和B,C为给定的经验值。 问在N名选秀球员中,最多能有多少名符合条件的候选球员。题解这道题刚开始

2017-04-19 07:55:30 336

原创 bzoj 1084: [SCOI2005]最大子矩阵 (DP)

题目描述传送门题目大意:给出一个n*m的矩阵,请你选出其中至多k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵不能相互重叠。题解m只有1,2两种,所以分开考虑一下 当m=1时,f[i][j]f[i][j] 表示到i选取了j段的最大价值 f[i][j]=max(f[i−1][j],f[k][j−1]+sum[i]−sum[k])f[i][j]=max(f[i-1][j],f[k]

2017-04-18 20:06:09 418

原创 bzoj 3159: 决战 (树链剖分+splay)

题目描述传送门题解其实就是之前用线段树维护的东西改成用splay维护 比较麻烦的就是翻转操作,需要把翻转的位置提出来插入的另一个splay中,翻转后再插回去 具体的细节还是见代码吧。代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define N 100003

2017-04-18 16:44:56 513

原创 bzoj 1430: 小猴打架 (prufer序列+数论)

题目描述传送门题目大意:N个点,每次可以连接两个不连通的点,N-1次后形成一棵树,问题有多少种不同的连接方式。题解首先确定有多少种不同形态的树。根据prufer序列,设有m个点的度数无限制,那么贡献是Cmn−2mn−2−totC_{n-2}^m m^{n-2-tot} 那么对于这道题来说,树的形态就是nn−2n^{n-2} 因为n-1条边还存在连接的顺序,所以最后的答案是nn−2∗(n−1)!

2017-04-18 11:27:23 337

原创 bzoj 1211: [HNOI2004]树的计数 (prufer序列+组合数学)

题目描述传送门题解ans=(n−2)!∏(di−1)!ans={(n-2)!\over \prod (d_i-1)!},分解因数,上下相消即可。 注意判断无解的几种情况 (1) n=1,d[1]!=0 (2) n!=1,d[i]=0 (3) [∑ni=1(di−1)]!=n−2[\sum_{i=1}^n (d_i-1)]!=n-2代码#include<iostream>#include<c

2017-04-18 10:45:39 334

原创 bzoj 4698: Sdoi2008 Sandy的卡片 (后缀数组+二分)

题目描述传送门题解二分答案,判断是否有一段区间的height都大于当前答案,并且包含n个串中的每个串。代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define N 2000003using namespace std;int xx[N],yy[N],v[N

2017-04-18 09:15:31 338

空空如也

空空如也

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

TA关注的人

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