自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 hdu 3395 Special Fish 最大费用流

题意:n条鱼可以相互攻击,得到的值为这两条鱼的异或值。每条鱼只能被攻击一次。求能得到的亦或者的最大值。很容易想到最大费用流。拆点,对每个 i ,连边(s, i, 1, 0), (i + n, t, 1, 0)。当 ij = 1 时, 对 i —> j + n 连边(i, j + n, 1, -(val[i] ^ val[j]))。由于题目的特殊性,当最大费用出现时, 并不一定是最大流, 而

2015-10-07 19:21:47 683

原创 hdu 5493 Queue 线段树

题意:n个人排队,给出每个人的身高和,每个人只记得在他前面或后面比他高的人的数量,求一组字典序最小的排队方式。首先将所有人按照身高从小到大排序,假设数组前面的人都已经合理的排好,那么对于当前的人来说,他的要求就是在他的前面或者后面能够有足够的空间安排比他高的人。于是设线段树当前节点记录该节点的子区间里面还有多少空余的空位,每次查询的时候去找到    当前的人前面(后面)比他高的人的数量 +1

2015-09-27 21:02:05 996

原创 hdu 3667 Transportation 费用流+拆边

题意:给出一张n个点m条边的图,从起点1送k个单位的货物到终点n,其中每条边有容量限制Ci,且每条边的花费与货物经过这条边的大小成ai 的系数关系,即运输x的货物,要ai * x * x的花费,求是否能够送到终点,且求最小花费。由于c才为5,很容易想到将其拆边,假设容量为3,则能依次得到容量大小为1,花费为1, 3, 5的三条边(1+5+3 = 3*3),然后跑一发费用流即可。#inclu

2015-09-23 15:00:29 435

原创 Codeforces Round #104 (Div. 2) ABCD

A - Lucky Ticketchar a[55];int n;int main(){ while( ~scanf("%d", &n) ) { scanf("%s", a+1); n = strlen( a+1 ); int s1 = 0, s2 = 0; bool OK = 1; for

2015-09-22 20:05:17 615

原创 poj 2828 Buy Tickets 线段树单点更新

题意:有N个人排队,每一个人都有一个val来对应,每一个后来人都会插入当前队伍的某一个位置pos。要求把队伍最后的状态输出//#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setpr

2015-09-17 21:26:46 341

原创 hdu 1394 Minimum Inversion Number 线段树

题意:求a1, a2, ..., an-1, an (where m = 0 - the initial seqence)                a2, a3, ..., an, a1 (where m = 1)                a3, a4, ..., an, a1, a2 (where m = 2)                ...          

2015-09-10 21:03:53 301

原创 zkw费用流模板(适用二分图)

hdu 1853 :#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(13) << (double) x << endl;#include #include

2015-09-09 20:18:00 421

原创 hdu 2686 Matrix / 3376 Matrix Again最大费用流

题意:给出一个矩阵,从左上角走到右下角,再从右下角走回左上角,往下走的过程中只能向右或下,往上走只能左和上,且往上往下的两条路不能重合,求经过矩阵的最大值。很明显的多线程dp,这里用费用流来做,往下走的过程中每个点拆点a, a',其中a到a‘建边,除了第一个点和最后一个点,都是费用为矩阵的值*-1,转换成求最大费用,流量为1,表示只经过这个点一次。而一趟来回可以看成是从第一个点到最后一个点的两

2015-09-09 19:42:20 327

原创 hdu 1853 Cyclic Tour /3488 Going Home 费用流判环

题意:给出一张有向图,判断每个点是否只属于一个环,并输出环的权(即组成环的边权值之和)参考http://blog.csdn.net/scf0920/article/details/36657717 拆点后建图,如果每个点都是环的一部分而且每个点只能用到一次的话,那每个点的初度入度都是1,这就可以利用网络流来解决,只要拆点令其流量为1,就限制了每个点只能用一次,每次左边的连到右边的,就相当于

2015-09-07 20:58:38 334

原创 hdu 1533 Going Home 费用流MCMF模板

题意:n个人和房子,每个人只能进入一个房子,且消费为两者曼哈顿距离,求n个人进入房子的最小花费。建超源超汇,超源向人连边,超汇向房子连边,然后人向房子连边,跑MCMF即可#include #include #include #include #include #include #include #include #include #include #include /

2015-09-07 16:01:01 355

原创 hdu 5410 CRB and His Birthday 01完全混合背包

题意:m块钱n个物品,第i个物品需要买了k个需要k*w【i】块钱,得到A【i】*k+B【i】个糖果,问最多能得到多少糖果将第i个物品拆成两份,花费都为w【i】,第一份价值为A【i】+B【i】,只能取一次,第二份为A【i】,可以去无限次,跑下混合背包即可#include #include #include #include #include #include #include

2015-09-07 13:32:04 308

原创 hdu 5416 CRB and Tree 离线处理树xor前缀

题意:给出一棵树,和树边的权值,q个询问,每次给出s求有多少条路径上边权值异或值为s。由于可得f(u,v) = f(1,u)\ f(1, u) f(1,u) ^f(1,v) f(1, v)f(1,v), 那么就离线处理出以1为树根的树xor前缀,并hash记录该异或值数量,对于每个询问s,遍历1~n,累计num【xor【i】】即可,注意s = 0时,所有的值1~n都满足(x^x =

2015-09-06 21:51:21 343

原创 hdu 5402 Travelling Salesman Problem 模拟构造

题意:n*m的矩阵,从1 1走到n,m,每个点只走一次,求到终点路过点之和的最大值,并输出路径。可得当nm中有奇数时一定能全部走完,来看nm为偶数时,若某个格子值最小且坐标ij之和为偶数,模拟一下之和发现无论怎么走,必然有两个坐标之和为奇数的点无法走到;再来看,某格子坐标和为奇数的,若不经过它,则一定能遍历完整个图。相比之下,选一个值最小的偶数格子+两个奇数格子,肯定要比选一个坐标为奇数的格子

2015-08-19 15:21:06 429

原创 hdu 5385 The path 构造

题意:给出一张有向图(尼玛是有向图啊!),只给出边的起点终点,然后要确定边长,来构造出单源最短路中起点为1的距离d(x)且满足下式,d(1)d(2)....d(x)>d(x+1)>...d(n).按照题解说的模拟构造就行了- -如下:我们可以采取贪心做法,一开始将111号点作为最短路径树的根,然后左边从222开始,右边从nnn开始,只要之前加入的点有边连向他们就加入这样一个点加入的

2015-08-15 21:18:54 787 2

原创 hdu 5389 Zero Escape dp

题意:n个数分成两堆,每堆的原根之和的原根分别要等于给出的AB,原根如:65536  是7,6+5+5+3+6=25  然后2+5=7.将其看成背包,则mod 9之后的那个值看成容量,做次背包就行了。//#include #include #include #include #include #include #include #include #include

2015-08-14 21:26:18 325

原创 hdu 5386 Cover 暴力模拟

题意:两种操作:L x y: for(int i=1;iH x y:for(int i=1;i给出初始矩阵和目标矩阵,给出m种操作,将其排个序,使得初始矩阵经过排序后的操作能够变成目标矩阵。从目标矩阵直接反着模拟回来就行了,而且题目保证有解//#include #include #include #include #include #include #inclu

2015-08-14 16:15:45 407

原创 hdu Mahjong tree 树dp

题意:给出一棵有根树编号1~n,1为根,树上放n个麻将,编号1~n。要求是对于每个节点放置的麻将编号,这颗树的子节点放置编号必须连续,每一颗子树的放置编号也必须连续,最后求方案数%mod(1e9+7)通过画一下就可以知道,对于每个节点来说,设它的子树大小(节点数量)为sz,那么sz>=2的子树个数不能超过2,否则方案数则一定为0.这样的话再处理一下sz为1的子树数量,最后统计一下每个节点的方案

2015-08-12 21:24:48 372

原创 hdu 5375 Gray code dp

题意:长度为n的01串(?可以表示0或1),表示成的二进制,转成格雷码,每个位置有一个分值,若格雷码的i位置为1则可以得到val【i】分,求最多能拿多少分。设dp【i】【0】为i位置为0时的最高分,dp【i】【1】为i位置为1时的最高分 ,然后分类判断一下即可。#include using namespace std;typedef long long ll;const int N

2015-08-12 16:16:25 331

原创 hdu 5371 Hotaru's problem manacher + 线段树

题意:找出一段最长的子串分成三部分abc,其中ab为回文串,ac相等(可得bc也是回文串)这里将分割abc的两个点分别看成第一分割点x和第二分割点y,那么用manacher求出每个点为中心的最长分割点之后,对于第一ab这个回文串,可以知道的是它的长度为偶数,第一分割点为其中间的那个位置,再来看第二分割点的位置,由manecher的性质知道,假如有这么一段子串(abcd随便表示数字,并不一定相同

2015-08-12 15:11:00 553 2

原创 hdu 5353 Average 迷のWA-- --

题意:相邻两个人能传递一次糖果,问最后所有人的糖果数是不是一样。把第一个给第二个的情况枚举一下,接下来剩下的人按情况即可。按理说,依次判断 if (OK)  { PRINTF; continue;}的写法和放在for里面根据case讨论第一个给第二个的情况是没有区别的,蓝而,,神奇的是前者会迷のwa-- --,顺便贴下AC代码AC:#include #include #incl

2015-08-09 15:42:20 385

原创 hdu 5348 MZL's endless loop dfs

题意:给出一张图确定边的方向,使得每个点的abs(入度-出度) 由于所有点总度数 = m*2,其中除去度数为偶数的点,那么剩下度数为奇数的点个数一定为偶数个,而度数为奇数的点,在一张图中只能为起点或者终点,偶数个这样的点说明了,这张图除去所有环之外(某个环里面的点度数一定是偶数),组成的森林中,一定能组成整数条只包含一个起点一个终点的路径,即假设x个度数为奇数的点,x为偶数,那么可以有x/2条

2015-08-05 20:19:03 357

原创 hdu 2870 Largest Submatrix 最大子矩阵

题意:wxyz分别可替换成对应的abc,求abc相同子矩阵的最大那个。分别枚举abc然后跑最大子矩阵即可。#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(

2015-08-05 14:54:11 350

原创 hdu 2845 Beans dp

题意:n*m的格子取数,每次取x,y时,x+1和x-1这两行不能去,(x,y-1),(x,y+1)这两格不能取。求最后能取到的最大的值。先对每行求最大不连续子段和,由于行数不能连续取,相等于再对列做一次求不连续子段和即可#include #include #include #include #include #include #include #include #inclu

2015-08-04 21:34:32 321

原创 hdu 2844 Coins dp

题意:价值m一下可达的背包情况有多少种。混合背包模板。#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(13) << (double) x << endl;

2015-08-04 20:59:09 317

原创 hdu 2577 How to Type dp

题意:通过按最少次键盘数打出要求的字符,详见样例。设dp【i】【0】表示关闭Caps lock情况下的打第i个字符时最少次数,dp【i】【1】为开启状态下的最少次数,则有小写情况下:dp【i】【0】 = min(dp【i-1】【0】+1(小写情况下直接打),dp【i-1】【1】+2(按住shirt再打,比开启关掉大写再打再开启大写要优)),大写反一下就行了。#include #inc

2015-08-02 21:18:03 435 1

原创 hdu 5327 Olympiad 多校4 01

题意:统计LR区间里面数字各位数都不相同的数量记录前缀然后输出即可#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(13) << (double) x <<

2015-08-02 19:41:08 335

原创 hdu 5328 Problem Killer

求最长的等比或者等差数列扫两遍数组分别统计就行了#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(13) << (double) x << endl;#i

2015-08-02 19:23:54 284

原创 hdu 5336 XYZ and Drops 2015 Multi-University Training Contest 4 10

题意:r*c的格子里面有些水珠,体积超过4就会爆炸并向四周发射一个小水珠,每秒前进一格。小水珠在同一个格子中与小水珠相互不影响,但是若有一个水珠,则小水珠融入水珠里面,水珠体积+1.问在(x,y)点0秒时刻爆炸,T秒之后格子里面水珠的状态。暴力用队列模拟即可。#include #include #include #include #include #include #inclu

2015-08-02 16:59:48 273

原创 VK Cup 2015 - Finals, online mirror F - Clique in the Divisibility Graph dp

题意:n个数中选出一些序列,使得序列中任意两个数x,y,x整除y或者y整除x。设dp【i】表示值为i时序列中的最长长度,就可以从i的约数中转移过来了#include #include #include #include #include #include #include #include #include #include #include ///cout <<

2015-08-01 22:07:42 329

原创 hdu 5289 Assignment 二分+RMQ 2015 Multi-University Training Contest 1 02

题意:给出1~n的一个序列,求区间最大值-区间最小值RMQ处理出区间最大最小值,易知某段区间的最大值-其最小值会随着区间长度的减小而减小,因此可以通过枚举左端点,二分右端点来计算以左端点为起点的区间满足条件的贡献。#include #include #include #include #include #include #include #include #include

2015-07-31 21:07:31 255

原创 hdu 5335 Walk Out bfs 2015 Multi-University Training Contest 4 09

题意:从(1,1)走到(n,m)时经过的01串二进制的值最小。首先确定从(1,1)走到矩阵中的任意一格(i,j),需要走i+j-2步,那么尽可能的走0且尽早的走0肯定是最优的。因此对于每个相同步数x,可以确定的是走x步能过走到的点,考虑到影响结果的走法 :x步的走下一个x+1步的结果,要么是0,要么是1.那么如果有0的话肯定选0,这种走法,那就将其加进队列,否则若在x+1步走一个0都没遇到,就

2015-07-31 17:19:19 335

原创 hdu 2159 FATE dp

设dp【i】【j】表示还有i忍耐度和j只怪可以杀时,获得的最大经验。由于怪物可以无限杀,做一下完全背包即可。最后扫一边二维dp求答案。#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << s

2015-07-27 20:32:12 290

原创 hdu 1203 I NEED A OFFER! dp

设dp【i】为花费i,一个offer都没收到的最小概率,跑一下01背包最后1-dp【m】即可#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(13) << (d

2015-07-27 16:37:06 263

原创 hdu 1171 Big Event in HDU dp

题意:把物品分成价值尽量相同的两堆。一个多重背包预处理,然后对容量为总价值一半炮一发01背包即可#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(13) <

2015-07-27 15:52:35 313

原创 hdu 2571 命运 dp

简单dp, 走格子,注意初始化#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(13) << (double) x << endl;#include #in

2015-07-27 14:53:11 277

原创 hdu 1505 City Game dp

题意:最大F子矩阵 * 3每行处理出里(i,j)最左最有的不小于mat【i】【j】的数组,然后更新答案#include #include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(

2015-07-26 21:49:04 280

原创 hdu 4411 Arrest 费用流模板

题意:警察局在0点,里面有k个警察,要将1~n的贼窝一网打尽,这1+n个点都有距离,且要求抓 i 点的贼前保证已经抓光 比i小的贼。警察们最后要回到0点,问满足抓到所以的贼(题目保证可行)最少走的路之和建边参照yyn http://blog.csdn.net/u013368721/article/details/38781127#include #include #include

2015-07-26 15:43:24 281

原创 hdu 5313 Bipartite Graph 贪心+bfs染色

题意:给出一张二分图,问最多在里面能加多少条边,保证还是二分图。首先可以确定,在最后的二分图中,两个部分的点数差最小,则能保证所加边数最多。那么记录当前二分图两个部分分别的点数,对新的联通块加入当前二分图时,少的那部分点加入当前多的那部分点集中。最后对那些独立的点单独处理,即加入使得两部分的点数差最小。最后就是x*y-m,即两部分点数之积-原图变数#include #include #

2015-07-26 11:24:27 372

原创 hdu 1864 最大报销额 dp

题意略。把数据处理出来就是个裸背包。p:RE要注意把数组开到3000500左右即可。#include #include #include #include #include #include #include #include #include #include ///cout << fixed << setprecision(13) << (double) x << en

2015-07-24 21:39:04 303

原创 hdu 2955 Robberies dp

题意:Roy抢银行,n个银行中每个银行有val【i】的钱,Roy在这个银行被抓的概率为p【i】,而Roy有一个安全线P,当Roy抢银行的安全程度在P以内使安全的,否则就会被抓。问Roy不被抓时最多能抢多少钱//设dp【i】表示安全情况下偷i钱 的最大安全程度。在P以内是安全的,则在1-P要被抓,所以有dp【n】>=1-P。p【i】表示被抓的概率,则1-p【i】为安全的那么可以得到dp[j]

2015-07-24 20:50:03 292

空空如也

空空如也

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

TA关注的人

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