自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Remilia's

此博客停更了,新博客地址www.zhuoyifan.net

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

原创 SPOJ QTREE Query on a tree(树链剖分)

SPOJ QTREE Query on a tree题目链接树链剖分基础题代码:#include #include #include #include using namespace std;const int N = 10005;int dep[N], top[N], sz[N], son[N], fa[N], id[N], idx, val[N]

2014-09-30 22:02:00 928

原创 POJ 2736 Housewife Wind(树链剖分)

POJ 2763 Housewife Wind题目链接就树链剖分。。不过这题坑ector啊!, vector居然超时代码:#include #include #include #include using namespace std;#define lson(x) ((x<<1)+1)#define rson(x) ((x<<1)+2)typede

2014-09-30 20:11:15 1119

原创 UVA 11354 - Bond(树链剖分)

UVA 11354 - Bond题目链接题意:给定一个图,要求每次询问两点,求出这两点间路径最大危险系数最小思路:先求最小生成树,在生成树上每次询问求LCT就可以了,利用树链剖分求解代码:#include #include #include #include using namespace std;#define lson(x) ((x<<1)+

2014-09-30 17:42:44 1127

原创 FZU 2082 过路费(树链剖分)

FZU 2082 过路费题目链接树链抛分修改边的模板题代码:#include #include #include using namespace std;typedef long long ll;const int N = 50005;int dep[N], id[N], sz[N], top[N], son[N], fa[N], idx;int

2014-09-30 16:49:10 973

原创 HDU 5045 5047 5050 5053(上海网络赛E,F,I,L)

HDU 5045 5047 5050 5053太菜了,名额差点没保住,吓尿。。赶紧开刷树链抛分5045:状压DP,压缩10个人,由于两个人不能差2以上,所以可以用01表示5047:推推公式即可,每次交线多4条5050:求GCD,用java大叔即可5053:签到题代码:5045:#include #include #include

2014-09-30 12:50:13 1082

原创 HDU 3966 Aragorn's Story(树链剖分)

HDU Aragorn's Story题目链接树抛入门裸题,这题是区间修改单点查询,于是套树状数组就OK了代码:#include #include #include #include using namespace std;const int N = 50005;inline int lowbit(int x) {return x&(-x);}i

2014-09-30 12:39:55 928

原创 UVA 1048 - Low Cost Air Travel(最短路)

UVA 1048 - Low Cost Air Travel题目链接题意:给定一些联票,在给定一些行程,要求这些行程的最小代价思路:最短路,一张联票对应几个城市就拆成多少条边,结点表示的是当前完成形成i,在城市j的状态,这样去进行最短路,注意这题有坑点,就是城市编号可能很大,所以进行各种hash代码:#include #include #include

2014-09-26 21:21:12 1741

原创 UVA 1078 - Steam Roller(最短路)

UVA 1078 - Steam Roller题目链接题意:给定一个地图,要求起点走到终点需要的时间,如果进入一个转弯位置,则进入和出去的时候时间要加倍思路:最短路,关键在于如何建模,每个结点d[x][y][d][flag]表示在x, y结点,方向为d,是否加倍过了,这样就可以把每个结点之间对应的关系建边,做最短路即可代码:#include #includ

2014-09-26 19:30:01 1681

原创 UVA 1161 - Objective: Berlin(网络流)

UVA 1161 - Objective: Berlin题目链接题意:给定一些航班,每个航班有人数,和起始终止时间,每次转机要花半小时,问限制时间内最多能有多少人从起始城市到终点城市思路:以航班为结点建图,航班有容量限制所以进行拆点,然后两个航班如果终点和起点对上,并且时间满足就可以建边,然后源点连向起点为起始的航班,终点为终点的航班连向汇点(要在时间不超过时限的情况下),

2014-09-26 11:42:42 1188

原创 UVA 1212 - Duopoly(最小割)

UVA 1212 - Duopoly题目链接题意:两个公司,每个公司都有n个开价租用一些频道,一个频道只能租给一个公司,现在要求出一个分配方案使得收益最大思路:最小割,源点连到第一个公司,第二个公司连到汇点,容量均为价钱,然后第一个公司和第二个公司有冲突的就连一条边容量为无穷大,然后求这个图的最小割就是去掉最小多少使得图原图不会冲突了,然后用总金额减去最小割的值即可

2014-09-25 16:53:36 950

原创 UVA 1486 - Transportation(网络流+拆边)

UVA 1486 - Transportation题目链接题意:一个有向图上运输k货物,有一些边,每个边一个系数a,经过该边如果有x货物,就要缴纳a x x的钱,问运输从1到n最小的代价思路:费用流,这题边的容量c最大只有5,所以可以拆边,一条边拆成c条边,每条容量1,对应相应的代价为a * (i^2 - (i - 1)^2),然后跑一下费用流即可代码:

2014-09-25 15:07:01 1037

原创 UVA 1317 - Concert Hall Scheduling(网络流)

UVA 1317 - Concert Hall Scheduling题目链接题意:现在有两个音乐厅,有一些人要租用,每次租一个区间的时间,给w钱,要求一个租的方案使得总收入最大,问总收入思路:区间k覆盖问题,一个左闭右开区间可以建一条边,容量为1,代价为-w(因为要求最大),然后区间每个[i, i + 1]建一条边,容量2,代价0,然后跑一下费用流即可代码:

2014-09-25 14:09:47 1215

原创 UVA 11380 - Down Went The Titanic(网络流)

UVA 11380 - Down Went The Titanic题目链接题意:给定一个图,上面有薄冰'.'或'*‘,厚冰'@',木块'#',一开始人都在'*'上,薄冰只能走一次就会沉掉,厚冰次数不限,如果人走到木块上就获救了,但是一个木块的容量只有p,求最多能有多少人获救思路:最大流,由于点有次数限制,所以可以进行拆点,然后建图每个4和四个方向建边,源点和'*'建边,'#

2014-09-25 11:29:01 1836

原创 UVA 1349 - Optimal Bus Route Design(KM完美匹配)

UVA 1349 - Optimal Bus Route Design题目链接题意:给定一些有向带权边,求出把这些边构造成一个个环,总权值最小思路:由于环入度出度为1,所以可以把每个点拆成入度点和出度点,然后建图做一次二分图完美匹配即可,注意这题坑点,有重边代码:#include #include #include #include using na

2014-09-25 10:37:59 1689

原创 UVA 11280 - Flying to Fredericton(最短路)

UVA 11280 - Flying to Fredericton题目链接题意:给定一些国家,和两个国家间的花费,现在有一些询问,询问每次最多转k次飞机,最小花费思路:dijkstra变形,多开一维表示转机次数即可代码:#include #include #include #include #include #include #include

2014-09-24 23:50:26 1303

原创 UVA 10246 - Asterix and Obelix(最短路)

UVA 10246 - Asterix and Obelix题目链接题意:给定一个图,每个点有一个代价,边有一个代价,现在有q次询问,每次询问从u到v的最小花费,花费的计算方式为,路径代价加上路径上最大代价结点的代价思路:枚举最大代价结点,然后做dijkstra,做的过程中忽略掉比枚举点更大代价的点,然后更新所有的答案,预处理完成后每次询问就可以在O(1)时间内完成了

2014-09-24 19:39:53 1502

原创 UVA 11853 - Paintball(dfs)

UVA 11853 - Paintball题目链接题意:就是给定一些圆,判断能否不经过这些圆从左边走到右边,如果可以要求起始和终止位置尽量往北,输出位置思路:每次找一个超出上边界的圆dfs,如果能到下边界,就是隔断了肯定到达不了,如果隔断左右边界,就要更新答案的值代码:#include #include #include #include #incl

2014-09-24 18:33:29 2038

原创 UVA 1395 - Slim Span(MST)

UVA 1395 - Slim Span题目链接题意:给定一些结点和边,要求出最苗条度最小的生成树,苗条度定义为:生成树中最大权的边减去最小权的边的值思路:类似建最小生成树的算法,多一步枚举起始边即可代码:#include #include #include using namespace std;const int N = 105;const

2014-09-24 15:04:45 1224

原创 Codeforces Round #266 (Div. 2)

Codeforces Round #266 (Div. 2)题目链接A:就简单的判断一下那种更大即可B:枚举x到sqrt(n),然后可以直接算出y,然后判断一下即可C:先判断和是否是3的倍数,然后预处理出前缀和出现位置和后缀和对应sum / 3个数,然后从头往后扫一遍把当前一个和后面进行组合即可D:先预处理出差分,使得数组表示线段的添加方式,然后每次有一个-

2014-09-24 14:12:56 882

原创 HDU 5036 Explosion(北京网络赛E题)

HDU 5036 Explosion题目链接思路:对于每个点,只要考虑哪些炸掉能到他的个数cnt,那么他对应的期望就是1 / cnt,然后所以期望的和就是答案,用bitset来维护代码:#include #include int t, n;double p;int main() { int cas = 0; scanf("%d", &t); whi

2014-09-23 16:31:53 1805

原创 HDU 5035 Delivery(北京网络赛D题)

HDU 5035 Delivery题目链接思路:概率论书上的一题,公式为(n + 1) / sump代码:#include #include int t, n;double p;int main() { int cas = 0; scanf("%d", &t); while (t--) { scanf("%d", &n); double s

2014-09-23 16:29:54 1120 2

原创 Codeforces Round #268 (Div. 2)

Codeforces Round #268 (Div. 2)题目链接A:有的标记掉判断一下即可B:枚举时间一个个去判断一下即可C:构造一下,4和5分别手动构造,然后之后每次多2个数字就先相减掉得到1,然后乘上原数字不变,4以下的是绝对构造不出来的D:贪心,先排序,然后每次twopointer选头尾两个判断能丢进哪个集合,都不行就找一个之前满足的丢进小集合

2014-09-22 19:45:05 753

原创 HDU 5040 Instrusive(北京网络赛I题)

HDU 5040 Instrusive题目链接思路:记忆化广搜,先预处理出图,每个位置用一个二进制数表示,表示4秒为1个周期内,这个位置是否会被照到,然后进行记忆化广搜即可,状态多开一个4,表示在4秒一周期,然后进行转移即可代码:#include #include #include using namespace std;const int N = 505

2014-09-22 16:07:15 1031

原创 HDU 5038 Grade(北京网络赛G题)

HDU 5038 Grade题目链接思路:这题是签到题,注意细节即可。。。代码:#include #include #include using namespace std;const int N = 10005;int t, n, vis[N];int main() { int cas = 0; scanf("%d", &t); while

2014-09-22 16:04:23 540

原创 HDU 5037 Frog(北京网络赛F题)

HDU Frog题目链接思路:贪心搞,记录青蛙当前和上一次的位置,如果遇到一个区间跳不过去,要加石头,就按两步长度为(l + 1)去放会使得步数最大,注意边界条件有可能一步就能跳过去代码:#include #include #include using namespace std;const int N = 200005;int t, n, m, l;

2014-09-22 16:00:28 652

原创 HDU 5033 Building(北京网络赛B题)

HDU 5033 Building题目链接思路:利用单调栈维护建筑建的斜线,保持斜率单调性,然后可以把查询当成高度为0的建筑,和建筑和在一起考虑,从左往右和从右往左各扫一遍即可代码:#include #include #include #include #include using namespace std;const int N = 200005;

2014-09-22 16:00:07 1138

原创 HDU 5025 Saving Tang Monk(广州网络赛D题)

HDU 5025 Saving Tang Monk题目链接思路:记忆化广搜,vis[x][y][k][s]表示在x, y结点,有k把钥匙了,蛇剩余状态为s的步数,先把图预处理出来,然后进行广搜即可代码:#include #include #include using namespace std;const int INF = 0x3f3f3f3f;con

2014-09-22 15:56:40 1253 2

原创 HDU 5024 Wang Xifeng's Little Plot(广州网络赛C题)

HDU 5024 Wang Xifeng's Little Plot题目链接思路:先利用记忆化搜索预处理出每个结点对应8个方向最远能走多远,然后枚举拐点记录最大值即可代码:#include #include #include using namespace std;const int d[8][2] = {{-1, 0}, {0, 1}, {1, 0},

2014-09-22 15:54:01 802

原创 HDU 5023 A Corrupt Mayor's Performance Art(广州网络赛B题)

HDU 5023 A Corrupt Mayor's Performance Art题目链接思路:线段树的区间修改区间查询延迟更新,每个结点存一个二进制数表示有哪些颜色即可代码:

2014-09-22 15:48:54 654

原创 UVA 12125 - March of the Penguins(最大流)

UVA 12125 - March of the Penguins题目链接题意:给定一些冰块,每个冰块上有一些企鹅,每个冰块有一个可以跳出的次数限制,每个冰块位于一个坐标,现在每个企鹅跳跃力为d,问所有企鹅能否跳到一点上,如果可以输出所有落脚冰块,如果没有方案就打印-1思路:最大流,拆点表示冰块次数限制,然后枚举落脚冰块建图跑最大流即可代码:#include

2014-09-19 21:38:30 1485

原创 Codeforces Round #267 (Div. 2)

Codeforces Round #267 (Div. 2)A:签到题,直接for一遍B:取异或就是不同的数,然后bitcount一下判断即可C:dp,dp[i]表示到i的最大值,然后对取与不取当前位置进行转移即可,要先把前缀和预处理出来D:先利用map,把字符串hash掉,然后建图,现场在做的时候是直接记忆化搜索,不过这样处理不了环的情况,果断fst了,后来换了下

2014-09-19 10:44:53 1465

原创 UVA 10249 - The Grand Dinner(网络流 or 贪心)

UVA 10249 - The Grand Dinner题目链接题意:给定几队队员,几张桌子,每队有一个人数,每个桌子也有一个容量上限,要求一种安排方案,使得没有同队人坐在一个桌子上,求方案思路:明显贪心可以搞- -, 每次往容量最多的桌子塞就可以了。。不过这题既然出在网络流这章,还是用网络流也搞了下源点连到每队,桌子连到汇点,容量就是容量,然后每队和每个桌子相连,

2014-09-18 20:17:49 1398

原创 UVA 1345 - Jamie's Contact Groups(二分+最大流)

UVA 1345 - Jamie's Contact Groups题目链接题意:给定一些人,每个人有一个分组,现在要每个人选一个分组,使得所有分组中最大的人数最小,问这个最小值是多少思路:二分答案,然后利用最大流去判定,源点往每个人建一条边容量为1,每个人往各自的分组建一条边,容量为1,分组向汇点建一条边,容量为二分出来的值,这样跑一下最大流如果最大流等于n,就是能满足

2014-09-18 18:34:31 1521

原创 UVA 10779 - Collectors Problem(网络流)

UVA 10779 - Collectors Problem题目链接题意:每个人有一种贴图,现在第0个人要去和别人交换贴图,来保证自己的贴图尽量多,只有别人没有该种贴图,并且自己有2张以上另一种贴图才会换,问最多有几张贴图思路:最大流,关键在于如何建模,把0号人和物品连边,容量为有的容量,然后其他人如果物品等于0的,连一条边从物品到这个人,表示能交换,然后如果物品大于1的,

2014-09-18 16:19:12 1287

原创 UVA 11248 - Frequency Hopping(网络流)

UVA 11248 - Frequency Hopping题目链接题意:给定一个网络,现在需要从1到N运输流量C,问是否可能,如果可能输出可能,如果不可能,再问是否能通过扩大一条边的容量使得可能,如果可以输出这些边(按u先排再按v排),如果不行输出不可能思路:先做一遍网络流,然后每次在最小割上进行增加容量,需要两个优化,每次找流量找到>= c就可以了,然后每次修改容量,可以

2014-09-18 14:50:03 1091

原创 UVA 10888 - Warehouse(二分图完美匹配)

UVA 10888 - Warehouse题目链接题意:就是推箱子游戏,问最少要几步思路:每个箱子和目标位置建边,权值为负权值,然后进行二分图完美匹配即可,注意不能到达的位置权值应该置为最小代码:#include #include #include #include #include using namespace std;const int

2014-09-18 13:18:30 1254

原创 UVA 11165 - Galactic Travel(BFS+twopointer+并查集)

UVA 11165 - Galactic Travel题目链接题意:给定一些不能走的边,要求出从s到t的最短路思路:由于点数多,直接广搜会超时,所以加上优化,已经找过的点就不在重复找了,这点可以利用并查集进行优化,然后对于每个点的每个不能走的区间,可以先排序,然后利用twopointer的性质,每次可以从上次找到的位置往后找即可代码:#include #i

2014-09-17 15:20:38 1309

原创 HDU 5006 Resistance(鞍山网络赛J题)

HDU 5006 Resistance思路:这题由于数据是随机的。。电阻不是1就是0,就可以先缩点,把电阻为0的那些边缩掉,只考虑有电阻的边,这样的话缩下来点数就不多了,就可以利用高斯消元+基尔霍夫定律去搞了代码:#include #include #include #include #include using namespace std;const int

2014-09-15 21:51:42 2259 6

原创 HDU 5008 Boring String Problem(西安网络赛B题)

HDU 5008 Boring String Problem题目链接思路:构造后缀数组,利用height的数组能预处理出每个字典序开始的前缀和有多少个(其实就是为了去除重复串),然后每次二分查找相应位置,然后在往前往后找一下sa[i]最小的代码:#include #include #include using namespace std;typedef l

2014-09-15 20:34:05 1318

原创 HDU 5017 Ellipsoid(西安网络赛K题)

HDU 5017 Ellipsoid题目链接思路:模拟退火大法好!代码:#include #include #include #include using namespace std;const int D[8][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {-1, -1}, {1, -1}, {-1,

2014-09-15 16:30:56 2720 14

空空如也

空空如也

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

TA关注的人

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