自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 洛谷 P2762 太空飞行计划问题

题面题意 去太空飞行时,可以花费一些钱带一些实验器材,带够一些实验器材可以做一个实验获得一定利润,问最大净利润.做法 与 洛谷 P3410 拍照相同,都是用最小割解最大权闭合图,但这题还要输出方案. 这道题不能根据边的剩余流量输出方案,因为剩余流量可能不为满流,也不为0,仅仅在满流为1时可以用这种方法输出流量. 正确做法是先求出最小割,然后依次去掉与每个器材相连的边,求一遍最小

2018-02-27 19:27:13 247

原创 bzoj 2323: [ZJOI2011]细胞

题面题意 给出一个数字串表示一个细胞,将其分为若干段等大小球,每个球内有一段数字,每一段再分为该数字大小个小球,每个小球与两边的有丝连接(除了两头的),每一个小球至少退化一条丝,那么有几种不同的分法.做法 经过分析之后,可以发现分段与去掉丝两部相互独立,而且退化这一步的种类数恰好是斐波那契数,因为数字大小是10^100级别的,因此要用矩阵快速幂来写,然后问题就在与分段. 可以用dp来

2018-02-26 19:15:21 269

原创 bzoj 2324: [ZJOI2011]营救皮卡丘

题面题意 有k个人从0点开始走,他们分开行动,要依此经过所有点,则最短距离是多少.做法 与洛谷 P1251 餐巾计划问题的做法相似. 首先所有点都必须要经过,因此我们可以看做一个人第一次到达i点时,直接到达超级汇点,又从超级源点流出到达i点,这样可以保证每个点都被经过,可以将每个点拆成两个,一个与汇点相连,一个与源点相连,流量均为1,费用为0. 为了保证依次经过,在弗洛伊德时,

2018-02-26 16:25:48 193

原创 BZOJ 2768[JLOI2010]冠军调查

题面题意 n个人发表意见,每个人说1或0,有m对朋友,为了每个人可以为了朋友迁就自己,改变主意,求改变意见次数与和朋友意见不同的组数之和的最小值.做法 用最小割求解,将超级源点与说1的相连,说0的与超级汇点相连,朋友间连双向边,求最小割. 因为根据题意只有两种操作会是答案变大: 1.与朋友意见不同(去掉一条边). 2.改变意见(去掉与超级源点或超级汇点间的边) 因此

2018-02-24 16:41:11 188

原创 Cashier Employment POJ - 1275

题面题意 一家超市24小时营业,给出24小时每小时至少需要的员工数量和n名员工的申请开工时间,每名员工连续工作8小时,问最少雇佣员工数量.做法 利用前缀和可以发现题目可以转化为多个形如x+y<=b的不等式,因而用差分约束系统求解,s[i]表示0到i时雇佣的员工数量和,可以得到以下方程: 1.s[i]>=s[i-1],每小时雇佣的员工数量大于等于0. 2.s[i]-s[i+16]

2018-02-23 19:29:35 208

原创 差分约束系统 (Layout POJ - 3169为例)

作用 求解多个形如x+y<=c(c为常数)的不等式.具体做法 可以发现,在求最短路时,若a,b间有边的权值为c,则d[a]+c>=d[b],因而可以将不等式转化为这个形式,之后建边跑最短路即可.实际应用 一般讲题目转化为多个形如x+y<=c(c为常数)的不等式,之后建图跑最短路. 此题中一共就三种限制: 1.升序排列 2.有两点a,b间的距离不超过k,也就是b-a<

2018-02-23 18:04:40 223

原创 洛谷 P3410 拍照

题面题意 有n个人,选出一些人,有m种组合每种组合都有一定收益,但选人也有一定的花费,问最大收益.做法 这题可以用洛谷 P1361 小M的作物来做,也有简化的方法. 首先对每种方案,每个人都建一个点,之后每个方案点向它所需的人连一条边,每个点都有点权,要选出一些点,使其点权和最大.每一个合法方案都是一个闭合图(每一个点的出边都指向已选择的点),此题就转化为了求最大权闭合图. 最

2018-02-23 09:34:00 208

原创 洛谷 P1361 小M的作物

题面题意 有n个作物,A,B两块地,将它们种在A,B中的一块,每个作物种在两块地上分别有一个收益,有m种组合,若这个组合内的作物都在一块地内则有额外收益,求最大收益.做法 这题与洛谷 P3355 骑士共存问题有些相似,都是转化为最小割的问题. 首先假设每种作物均有两个,分别种在A,B上,现在要每种作物都要拔掉一个,那么在跑最大流时,有流量则代表这种做法不采用,最后用总收益减去最大流量

2018-02-22 20:16:08 544

原创 CodeForces - 686D D. Kay and Snowflake

题面题意 给出一棵树,多次询问以某个节点为根的子树的重心.法一 倍增 易知一棵树的重心满足整棵树减去重心的子树大小小于等于整棵树大小的一半,而且重心的最大子节点的子树大小也小于等于整棵树大小的一半. 因此可以用倍增维护某个点的第2^i个最大子孙节点(沿着子树最大的子节点找下去),不断比较大小,复杂度O(n*logn).代码#include<iostream>#include<cs

2018-02-11 10:20:19 353

原创 洛谷 P3355 骑士共存问题

题面题意 给出一张边长为n,有几个障碍点的棋盘,问最多可以放几个骑士使他们不互相攻击.做法 我们可以反过来考虑,先将棋盘放满骑士,计算至少去掉几个骑士. 经过观察,我们可以发现,相同颜色的格子上的棋子无法相互攻击,因此可以让超级源点连想每一个红点,每一个黄点连向超级汇点,流量均为一,表示将棋盘放满,再将红格子向可以攻击到的格子连一条边,流量为INF,如果有流量通过某个点,就说明这个点

2018-02-11 08:36:14 382

原创 C. Ilya And The Tree codeforces 842 C

题面题意 有一棵树,一开始每个点有一个初始值,每一个点的新数为它到树顶的路径中的所有数,去掉一个数后的最大公因数中的最大值.做法 因为要去掉一个数,所以一个个枚举显然不显示,因而可以在dfs时记录一下此时的点到根的数的因数个数,也就是每扫到一个点都将其分解质因数(记得回溯),若新增的因数的个数达到其深度-1,则这个数可用,在分解的同时找到最大的. 但还要考虑不是新增的因数,即去掉的数

2018-02-10 21:07:21 178

原创 CodeForces - 337D D. Book of Evil

题面题意 给出一棵树,其中有且只有一个节点上有魔鬼,与它距离在d以内的点都有可能收到影响,先给你这些收到影响的点,问几个节点上可能有魔鬼做法 首先可以证明:如果有一点到这些点中的最远的两点的距离均小于等于d,则这点上可能会有鬼. 之后问题就转化为了找收到影响的点中的最远两点. 又可以证明:以任意一点为根,两点中一定有一个点的深度最大. 因此可以先以1为根,dfs,找到此时

2018-02-10 19:59:11 213

原创 树状差分

作用 差分可以快速处理区间加的问题,而树状差分是分相似,可以快速处理树上一条链上的加法,将原来需要用树链剖分或是倍增的题目大大优化,且实现起来的复杂度低,也十分好些.实现方法 与差分基本相同,数列中的差分是每次修改头尾两节点,这里也是一样,处理链首和链尾即可,最后一遍dfs便可以求出每一个点或边的权值.代码以C. Fools and Roads CodeForces - 191C .#i

2018-02-10 19:14:22 397

原创 洛谷 P3358 最长k可重区间集问题

题面题意 在一条线上有n个开区间,现在要选择一些,使每个点最多被k个区间覆盖且开区间总长度(右端点减左端点)最大.方法 这题难与限制每个点的区间覆盖数,无法将最长长度转化为最大流,但可以通过最大费用流(将所有边的费用取反再跑一遍最小费用流)来做. 具体做法是相邻点连一条费用为0,流量为INF的边,区间两端点连一条费用为区间长度,流量为1的边,s到1与最右端点到t连一条费用为0,流量为

2018-02-10 08:53:29 303

原创 洛谷 P3523 [POI2011]DYN-Dynamite

题面题意 给出一棵树,树上有一些关键点,现在你最多选择m个点,使所有关键点到这些你选择的点的最小距离中的最大值最小.做法 一开始想到的是树形dp,但因为数据过大,且处理麻烦. 正确做法是先二分答案,再用贪心的思想来检验,但记录仍有麻烦 记录时每个点记录两个值,一个是离他最远的并且不在当前选择的点的覆盖范围内的点与他之间的距离,一个是离它最近的已选择的点距他的距离. 转移时

2018-02-09 16:11:40 292

原创 树状数组维护区间和和区间修改

作用 可以用树状数组在(n*logn)内,虽然线段树也能,但是树状数组的代码,空间都要比它优越得多.实现方法 首先我们可以用差分的方法使区间修改可以在log的复杂度完成,但重点在于区间和的查询. 我们知道,此时num[i]=a[1]+a[2]+……a[i],可以利用树状数组快速求出. 而区间和则是(a[1]+a[2]+……a[i])+(a[1]+a[2]+……a[i-1])……

2018-02-08 19:53:23 493

原创 Find a multiple POJ - 2356

题面题意 给出n个数,是否可以选出一些数使它们的和为n的倍数,能则输出方案,反之输出0.方法 这题一开始只想到n^2的搜索,TLE了. 看了题解之后发现可以用抽屉原理证明一定存在一个解是一些连续的数. 因为一共n个前缀和,它们对n取模一定存在两个相同或是为0. 如果为0,输出这个前缀. 如果有两个相同,则输出它们中间的这段数.代码#include<iostream

2018-02-07 21:22:02 227

原创 洛谷 P1251 餐巾计划问题

题面题意 有一家餐馆,每天需要一些餐巾,用完之后都会变脏,有两个洗餐巾的地方,给出单价和需要天数(可以放入任意数量的餐巾),每天可以买一些餐巾,问最小费用.方法 这题建图主要难点是汇点无法确定,因为餐巾可以通过清洗再次使用,而不能像流量一样直接流向汇点. 解决方法是每天拆成两个节点,一个A点用于处理干净的餐巾,一个B点用于处理脏的餐巾,干净餐巾经过使用后变脏可以理解为干净餐巾从A流向

2018-02-07 19:55:35 272

原创 洛谷 P4016 负载平衡问题

题面题意 给出一个环上的仓库,每个仓库中有一些货物,每个仓库内的货物可以搬到相邻仓库,要使每个仓库的货物相等,至少要移动多少货物.方法 网络流的题目难于减图,无法在其中建出源点和汇点,但可以这样考虑,将每一个仓库与所有仓库货物的平均值比较,若货物过多,向超级源点连一条流量为多出货物,费用为0的边,若少于,向汇点连一条流量为缺少的货物,费用为0的边,再在相邻两个仓库间连流量无限,费用为1的边

2018-02-07 16:39:02 214

原创 洛谷 P2517 [HAOI2010]订货

题面题意 给出每一个月的商品需求量和每一个月的生产成本以及仓库容量和贮存费用(每月,与贮存货物的量无关),问最小成本.分析 一开始没有想到用费用流去做,且难以建图,但将名词转化一下即可 将货物的量当做流量,成本当做费用,先建一个超级源点(可以理解为工厂),连向每一个月的节点,因为生产数量无限制,故流量为INF,费用为成本,再建一个超级汇点(理解为客户),每一个月的节点连向它,流量为需

2018-02-06 16:39:09 214

原创 洛谷 P2153 [SDOI2009]晨跑

题面题意 给出一幅有向无环图,问从点1到点n有几条互相没有交点(除起点终点外不能有公共点)的路径,保证路径数量最多的情况下,路径最大数量与最短的路径长度之和是多少.分析 与费用流裸题不同的是,不能有公共点,解决方法是将每一个点拆为一个入点和一个出点,流量为1(起点终点不用拆或者流量为INF),建边时,从一个点的出点连向另外一点的入点,再跑一遍费用流即可.代码#include<iostre

2018-02-06 15:40:14 235

空空如也

空空如也

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

TA关注的人

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