自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

forezxl的博客

ZJ蒟蒻OIer

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

原创 BZOJ1012: [JSOI2008]最大数maxnumber(洛谷P1198)

线段树BZOJ题目传送门 洛谷题目传送门这道题做法很多,这里采用线段树。 先建一颗200000大小的线段树。插入时就相当于单点修改,查询时直接查就好了。代码(洛谷加了读优最后一个点会T掉我也不知道为什么):#include#include#include#include#define N 200006using namespace std;struct tree{

2018-01-27 21:10:35 310

原创 BZOJ1003: [ZJOI2006]物流运输(洛谷P1772)

最短路 DPBZOJ题目传送门 洛谷题目传送门首先spfa预处理从i'>iii到j'>jjj天用同一路线的最短路,记为w[i][j]'>w[i][j]w[i][j]w[i][j]。 dp[i]'>dp[i]dp[i]dp[i]表示前i'>iii天的最小代价。 那么有转移方程dp[i]=min(dp[i],dp[j]+w[j+1][i]+k) 代码:#include#inclu

2018-01-27 17:30:57 307

原创 洛谷P1074 靶形数独(NOIp2009)

DLX题目传送门常规方法是DFS+一些剪枝。但是因为这是数独,可以用DLX求出数独的所有解,取分数最大的那个即可。不会DLX的小伙伴看这里代码:#include#include#include#define N 81*9#define M 81*4using namespace std;struct node{ node *l,*r,*u,*d;

2018-01-27 11:00:20 269

原创 hihocoder1321 搜索五·数独

DLX题目传送门DLX的一个经典应用。首先我们需要把这个数独问题转化为一个精确覆盖问题。根据数独的规则,我们有如下几个限制: 1.每个数字在每一行只能出现一次。限制编号1~81 2.每个数字在每一列只能出现一次。限制编号82~162 3.每个数字在每一个九宫格内只能出现一次。限制编号163~243 4.每一格只能填其中一个数字。限制编号244~

2018-01-25 20:33:33 639

原创 DLX 简介(hihocoder1317)

问题简介精确覆盖问题:给定一个01矩阵,从中选出若干行,使得每一列恰好有一个1。求一个方案。算法实现搜索每次选择一行,然后把这一行有1的列,在同一列中也有1的其它行,以及这一行本身从矩阵中除去。然后又变成了一个小的矩阵,一直递归至只剩一行。如果这一行全是1,则返回有解并输出选择的行编号,否则无解并恢复原来矩阵。如果搜索完毕后仍没有方案则无解。下面给出一张大矩阵变小矩阵的

2018-01-23 21:14:14 436

原创 BZOJ1001: [BeiJing2006]狼抓兔子(洛谷P4001)

平面图最小割->对偶图最短路BZOJ题目传送门 洛谷题目传送门比较经典的一道平面图最小割转对偶图最短路的题。 推荐这个我的对偶图标号方法:注意特判n==1||m==1的情况代码:#include#include#include#include#include#define N 1005#define K N*N#define M N*N*3using

2018-01-21 12:02:44 268

原创 BZOJ4458: GTY的OJ

贪心 ST表 堆题目传送门树上的超级钢琴,我们只需要建树上的ST表即可,稍微复杂了点。代码:#include#include#include#include#include#include#define N 500005#define lg 19#define il inlineusing namespace std;typedef long long LL

2018-01-20 16:08:48 390

原创 BZOJ2006: [NOI2010]超级钢琴(洛谷P2048)

贪心 ST表 堆BZOJ题目传送门 洛谷题目传送门貌似这是一类题目啊。。。题意:给定一个序列,求长度在[l,r][l,r]范围内的前k大子段和,不能重复。最暴力的方法当然是把所有子段搞出来排个序,但是当r−l+1r-l+1 足够大时,显然会爆炸。考虑到k不大,我们可以换个思路:不断选最大的子段,选k次。根据k和n的范围,可以推断大概每次选择需要O(log2n)O(log_

2018-01-19 20:43:26 369

原创 洛谷P3825 [NOI2017]游戏(BZOJ4945)

2-SAT DFS洛谷题目传送门 BZOJ题目传送门每张地图都只有两种车能使用且只能用一辆车,这样的限制满足2-SAT。设每种地图能使用的两辆车为id[x]和id[x]^1。 先假设没有x地图存在,那么对于一个限制(x,p,y,q)(x,p,y,q)(x,p,y,q),我们可以进行如下连边: 1.地图x无法放第p种车。此时略过。 2.地图x可以放第p种车,但是地图y无法放第q种...

2018-01-19 14:35:53 276

原创 BZOJ1997: [Hnoi2010]Planar(洛谷P3209)

2-SAT 平面图BZOJ题目传送门 洛谷题目传送门首先根据平面图的性质,如果m>n∗3−6m>n*3-6,那么这个图一定不是平面图。这样我们就可以把边数缩至nn级别的了。因为存在哈密顿回路,那么对于连接相同的两点的边,最多只能有两条(除了哈密顿回路的边),一条在环的里面,一条在环的外面。这样的限制满足2-SAT.用手画几张图就可以发现,当两条边相交时,必然都在环的同一侧。记相交

2018-01-17 19:30:59 244

原创 2-SAT(POJ3683)

前置技能Tarjan定义K-SAT:给你许多个集合,每个集合都有k个元素。同时又有一些限制(如取x则不能取y),你必须在所有集合中取且仅能取一个元素,求合法方案。 2-SAT:当K取2时的情况。为什么只考虑K=2的情况呢? 因为当K>2时,已经被证明是一个NPC问题。算法实现几个前提建x->y的边表示选了x就必须选y。在同一集合的元素编号为x,x^1。 建

2018-01-16 20:01:29 246

原创 HDU1814 Peaceful Commission

2-SAT题目传送门入坑2-SAT qwq2-SAT经典题,但因为求最小字典序,所以只能暴力判断。(要有信仰O(nm)O(nm)是过得去的)代码:#include#include#include#include#define N 16001#define M 40001using namespace std;struct edge{ int next,

2018-01-14 20:42:25 259

原创 BZOJ2957: 楼房重建

线段树题目传送门当修改某一个建筑的高度时,只会对后面的答案产生影响。 线段树建好后,对于一个节点有两种情况: 1.这个节点中最大的斜率≤修改的斜率(斜率相等的时候也算看不见)。这时这个节点对答案的贡献没有贡献。 2.否则如果其左子树的最大斜率>修改的斜率,因为不会影响到右子树,直接递归处理左子树,否则就变成第一种情况。代码:#include#in

2018-01-14 19:50:05 272

原创 BZOJ2843: 极地旅行社

LCT题目传送门 继续划水打模板 代码:#include#include#include#include#define N 30005#define il inline#define iv il voidusing namespace std;struct node{ int fa,to[2],f,sz;}t[N];int a[N],n,m,stk[N],t

2018-01-10 20:07:29 270

原创 BZOJ2049: [Sdoi2008]Cave 洞穴勘测(洛谷P2147)

LCTBZOJ题目传送门 洛谷题目传送门简单的LCT应用。 每个询问其实就是询问他们的祖先是否相等。只需要access(x),splay(x),再不断往左走到最底就是x的祖先了。LCT不会?丑陋的代码:#include#include#include#include#define N 10005#define il inline#define iv il voi

2018-01-10 18:54:58 206

原创 BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊(洛谷P3203)

LCTBZOJ题目传送门 洛谷题目传送门新增一个点n+1表示弹飞的点。 刚开始把i和i+ki接起来,查询时直接把x到n+1的路径拎出来,答案就是节点个数-1。改值时把x和x+ki断开,再把x和x+y接起来。注意对n+1取min。代码:#include#include#include#include#define N 200005#define il inline#d

2018-01-07 21:11:26 272

原创 LCT(动态树)(洛谷P3690)(BZOJ3282)

推荐这篇论文前置技能Splay和树链剖分简介动态树问题, 简称LCT,近几年在OI中兴起的一种新型问题,是一类要求维护一个有根树森林,支持对树的分割, 合并等操作的问题。算法用途比如维护一个数据结构,有如下操作:1.查询路径权值和。 2.查询LCA。 3.修改单个点的权值。 4.断开两个点,使之成为两棵树。 5.合并两个点,使之成为一颗树。当然还...

2018-01-07 19:44:00 523

原创 树套树之线段树套线段树(BZOJ3110、洛谷P3332)

线段树可以维护一个序列。当需要维护一个矩阵(即二维平面)内的数值,或者有什么奇怪的区间操作时,就需要用到二维线段树,也就是线段树“套上”线段树。

2018-01-03 20:22:51 1141

空空如也

空空如也

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

TA关注的人

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