- 博客(264)
- 资源 (2)
- 收藏
- 关注
原创 NYOJ 1204 魔法少女 简单DP
思路:dp[i][0]表示不用魔法到达第i层所用的最短时间,dp[i][1]表示用魔法到达第i层所用的最短时间。因为魔法不能连续用,所以dp[i][1]=min(dp[i-1][0],dp[i-2][0]);dp[i][0]=min(dp[i-1][0],dp[i-1][1])+h[i];
2016-02-02 12:44:45
963
原创 NYOJ 1070 诡异的电梯【Ⅰ】 DP
诡异的电梯【Ⅰ】时间限制:1000 ms | 内存限制:65535 KB难度:3描述新的宿舍楼有 N(1≤N≤100000) 层 and M(1≤M≤100000)个学生. 在新的宿舍楼里, 为了节约学生的时间也为了鼓励学生锻炼身体, 所以规定该宿舍楼里的电梯在相邻的两层之间是不会连续停下(即,如果在第2层停下就不能在第3层停下。).所以,如果有学生在相
2016-02-02 12:10:30
605
原创 Vawio Sequence (NYOJ 763 LIS变形)
题意:n个数的序列,求长度为奇数的最大序列,这个序列满足前n+1个数单调递增,后n+1个数单调递减,且每个数各不相同。思路:正反求两次LIS即可,要用二分法。
2016-01-31 13:53:39
474
原创 Most Powerful (zoj 3471 状压dp 点集配对)
题意:n中元素,现在两种不同的元素之间可以发生反应并且放出能量,其中一种元素随之消失,现在给出每两种元素之间发生反应产生的能量值关系,求使得这n种元素反应完后能得到的最大能量值。思路:n的范围比较小,可以想到状态压缩,dp[s]表示元素集合s反应后能得到的最大能量值,那么状态转移方程为dp[s]=max(dp[s],dp[s^(1<<j)]+a[i][j])。
2016-01-26 20:20:17
395
原创 点集配对问题 状压DP
大白P61,空间里有n个点P0,P1,...,Pn-1,把它们两两配对,要求所有的点对距离之和最小。其中n分析:dp[s]表示集合s配对后的最小距离之和,状态转移方程为dp[s]=min(dp[s],dp[s^(1注意这里i是不需要枚举的,因为i最后都是要配对的,无须枚举。代码:#include #include #include #include #include #i
2016-01-26 17:52:25
700
原创 Mondriaan's Dream (zoj 1100 状压dp)
题意:一个n*m的方格,要求用1*2的砖把它铺满,问有多少种铺法。思路:dp[i][j]表示第i行在状态j下所有合法的铺法总数。第i行的状态可以由第i-1行推得,且易知第i-1行的空缺只能由第i行对应位置用竖着的砖来补上。
2015-11-21 19:31:55
599
原创 Monkey and Banana (zoj 1093 动态规划)
题意:有n种长方体,数量不限,把它们堆起来,下面的底要严格大于上面的,问最高能堆多高。思路:每种长方体可以预处理成三种长方体,然后按照底面从大到小排个序,然后的操作感觉就有点想LIS了,dp[i]表示到第i个长方体的最高高度。
2015-11-21 15:51:30
473
原创 light oj 1251 - Forming the Council (2-SAT + 输出任意解)
题意:n个公民m个议员,n个公民对m个公民进行投票,+i表示希望i号议员留下,-i希望i号议员离开,问是否存在一组解满足全部的n个投票,有的话输出任意一组解。思路:每个公民的投票a||b建图,!a->b , !b->a。
2015-10-10 17:29:24
627
原创 Ants (poj 3565 最小权匹配)
题意:告诉n个蚂蚁和n棵苹果树,问每只蚂蚁去哪个苹果树使得所有路径不相交。思路:最小权匹配能保证路径不相交。
2015-10-08 21:38:54
418
原创 light oj 1029 - Civil and Evil Engineer (最大生成树+最小生成树)
题意:求最大生成树与最小生成树的平均值。思路:求最大生成树时把边的权值取相反数即可。
2015-10-02 20:31:28
529
原创 light oj 1384 - Stream My Contest (最小树形图+二分)
题意:n个点,m条有向边,每条边有一个传输数据的最大容量b和修建该条边的费用cost,现在总服务器在点0位置,要修若干条边使得每个点都能接收到点0的信息,并且总的修建费用不超过C,求满足条件的数据传输容量最小值的最大值是多少。思路:二分+最小树形图。
2015-10-02 17:32:06
501
原创 light oj 1254 - Prison Break (Dijkstra 汽车加油行驶最优问题 最短路)
题意:n个点m条边的有向图,q次询问c,s,t,表示汽车邮箱容量为c,求从起点s到终点t的最小费用。汽车在每个点可以加任意的油,每个点的油价为a[i]。思路:优先队列的Dij,每个节点保存还剩下的油量fuel和到当前为止所用的花费,dis[i][j]表示在i点油量还剩下j的费用最小值。注意,每次入队列不要一次性把所有符合的油量全部入队列,比如u->v,距离为w,那么油量区间w~c之间的油量都是可以满足从u走到v的,但不要一次性把w~c全部入队列,这样会超时:应该这样:对于队列中的每个点u先看它当前的油量能
2015-10-01 23:20:57
1188
原创 light oj 1379 - Toll Management(两次最短路)
题意:n个点m条边,求s到t长度不超过p的最短路中最长边的最小值。思路:分别从源和汇做两次Dij,最后判断一下求最大值。
2015-09-29 23:28:20
760
原创 light oj 1281 - New Traffic System (最短路+dp思想)
题意:n个点,m条旧有向边,k条新有向边,现在求0到n-1的最短路,且最短路径上用到的新边数量不超过d。思路:dis数组开二维,dis[i][j]表示到节点j用i条新边的最短路。
2015-09-29 22:14:46
525
原创 D. Three Logos (CF Round #322 (Div.2) 瞎搞 分情况)
题意:三个logo,给出他们的长宽,问他们能不能无缝放在一个正方形内。思路:5种情况在纸上画一下就知道了。
2015-09-28 23:06:02
592
原创 C. Developing Skills (CF Round #322 (Div.2) 贪心)
题意:给出n个数,还有一个数k,用k去补这n个数,使得ai/10之和最大。思路:贪心。先把n个数按照x值从小到大排序,其中x等于 把ai变为10的倍数所需要要添加的最小值;然后用k尽量去把每个数按照x值填为10的倍数,如果k还有剩余尽量填就行了。具体看代码。
2015-09-28 23:00:22
458
原创 Minimum Cut (hdu 5452 离线LCA)
题意:n个点m条边,前n-1条边构成这个图的生成树,现在删除一些边使得图不联通,且要求删除的边中有且仅有一条生成树上的边,问最小要删除多少条边。思路:若要删除生成树上节点u的子树,那么就要删除u的子树中所有和另外一个树相连的边,还有减去u子树内部相连的边就是要删除的边数了。内部相连的边用LCA处理。
2015-09-21 23:08:52
600
原创 Network (hdu 3078 在线LCA)
题意:n个点n-1条边,每个点有一个权值value[i],q次询问(k,u,v),若k==0,令value[u]=v;若k>0,输出u到v路径上第k大的权值。思路:在线LCA算法,LCA转RMQ,添加一个pre数组记录路径。
2015-09-18 21:34:17
604
原创 Connections between cities (hdu 2874 LCA)
题意:n个点m条边c次询问,每次询问(u,v)之间的最短距离,若不联通,输出“Not connected”,否则输出最短距离,没有环。思路:LCA,但是给的图是一个森林,每次找到子树Tarjan,还有一种方法就是添加根root,把所有树连成一棵树再一次LCA。数组开小了它却返回TLE,郁闷我半天。。。
2015-09-18 16:22:14
559
原创 Destroying The Graph (poj 2125 最小点权覆盖)
题意:有一张有向图n个点m有向边,现在每次删除一个点的所有入边费用为W+,或者删除一个点的所有的出边费用为W-,问删除所有的边最小费用是多少。思路:最小点权覆盖问题,具体贴上《最小割模型在信息学竞赛中的应用》中的阐述:回顾与此模型相关的模型。简化权的条件后,可以借鉴的是二分图匹配的大流解法。 它加入了额外的源s和汇t,将匹配以一条条s->u->v->t形式的流路径“串联”起来。匹配的 限制是在点上,恰当地利用了流的容量限制。而点覆盖集的限制在边上,小割是大流的对偶问题,对偶往往是将问题的性质从点转边,从
2015-09-17 21:07:29
633
原创 Friendship (poj 1815 最小点割集+枚举)
题意:给出N个人之间的通讯关系,给出S和T,问切断S到T的联系最小要删去的点是多少,输出最小字典序解。思路:拆点,从1~N枚举删掉i后看最大流是否减少,若减少则i属于最小点割集。
2015-09-15 16:10:59
740
1
原创 How far away ? (hdu 2586 LCA)
题意:给出一棵n个节点的树及n-1条边,m次询问,每次询问求a,b之间的最短距离。思路:LCA模板题。具体算法思想:http://www.cppblog.com/keroro/archive/2013/05/17/200341.html
2015-09-14 23:39:23
506
原创 The Bonus Salary! (poj 3762 离散化+最小费用流)
题意:有n个任务要在k天时间内选部分完成,每个任务在每天有一个规定的时间,必须要在这个时间内做这个任务,完成一个任务会得到相应的分数,问能得到的最大分数是多少。思路:离散化+最小费用流,这一题和poj3680是一样的,先对时间离散化,然后添加源点S和汇点T,1->2,2->3,3->4.......T-1->T这样连边,容量为k,费用为0,对于每个任务起始时间u->v连边,容量为1,费用为-w。
2015-09-14 15:19:40
580
原创 The Windy's (poj 3686 最小费用最大流 建图经典)
题意:n个订单m个工作车间,每个订单只能在同一个车间全部完成,每个订单在每个车间完成的费用以矩阵给出,问完成所有订单的最低平均费用为多少。这题建图确实想不出来,看了别人的讲解,感觉太巧了!http://blog.youkuaiyun.com/weiguang_123/article/details/7881799
2015-09-14 12:58:38
564
原创 Intervals (poj 3680 离散化+最小费用最大流)
题意:有N个整数区间,每个区间有一个权值,从中取一些区间,使得任意整数点的重叠数不大于K,并且这些区间的总权值最大。思路:首先区间比较大,线段比较少,考虑到离散化操作。建图比较巧妙,S->1,1->2,2->3......T-1->T这样连边,容量为k,费用为0,然后对于每条线段u->v连边,费用为-w,容量为1.
2015-09-11 17:27:03
654
原创 Minimum Cost (poj 2516 求K次最小费用流)
题意:有n个客户,m个供应商,k种商品,给出n个客户对这k种商品的需求 和 这k种商品m个供应商的供给量,以及每种商品ki从供应商j运到客户i的费用,求最小费用。思路:如果只有一种商品那就是最普通的费用流问题了,现在变成了k种商品,那我们就求k次费用流相加就可以了。
2015-09-08 16:27:03
665
原创 Evacuation Plan (poj 2175 SPFA费用流消圈)
题意:n个办公楼和m个防空洞,每个大楼里有一定人数,每个防空洞有一个最大容量,现在告诉每个大楼的人数和每个防空洞的容量,还告诉一个撤离方案,问是否是最优方案,否则输出更优方案。思路:很容易想到是最小费用流,但是会超时。这是一个费用流消圈的问题,有这样一个定理:一个费用流是最小费用流的充要条件是这个费用流的残留网络中没有负费用圈。负圈是指费用总和是负数,且每条边的剩余流量大于0的圈。我们先根据已知条件构造出残留网络,在残留网络中从汇点出发用spfa找负圈。我是按照原图建边的,网上好多是简化了的。
2015-09-08 15:07:12
476
原创 Firing (poj 2987 最大权闭合图)
题意:公司有n个员工和m个从属关系,现在要辞退一些人,每辞退一个人 i 会到一个价值wi(正或者负),辞退一个人也要连同他的下属一起辞退,问能得到的最大收益是多少且最少的辞退人数是多少。思路:最大权闭合图,关键是求最少的辞退人数,这里就为最小割的取点数,具体证明看这位大神吧点击打开链接另外注意要用long long
2015-09-07 20:24:54
745
原创 Black And White (hdu 5113 dfs+剪枝)
题意: N*M的格子用K种颜色图,每种颜色有ci个,并且每两个相邻的格子不能图一样的颜色,输出一种可行方案。思路:dfs+剪枝,若某种颜色的数量大于剩下未图格子数量的一半则一定无解。
2015-09-02 10:02:57
504
原创 Crazy Circuits (hdu 3157 流量有上下限的最小流)
题意:有两个正负极n个节点和m个元件,每个元件告诉端点是接在哪个节点上的,并且每个元件有工作的最小电流限制,问使所有元件工作的满足条件的最小电流是多少。思路:题目中已经有了源点S和汇点T,再添加附加源点SS和汇点TT,原图中的边的容量为INF(因为没有上限),若in[i]>0则SS向i连边容量为in[i],若in[i]<0则i向TT连边容量为-in[i],跑一次最大流,然后T向S连容量为INF的边,再跑一次最大流,判断SS的出边是否满流,若不满流则无解,否则有解输出边(T,S)的流量。另外这类题看这里详
2015-08-26 16:58:15
1219
原创 Instrction Arrangement (hdu 4109 差分约束)
题意:安排n个任务在CPU上工作,告诉m个限制,u,v,z表示v必须在u指令之后执行,并且u和v之间要间隔z秒,问把所有的任务完成最少时间为多少。思路:差分约束系统,由题意:dist[v]-dist[u]>=z,变形得:dist[u]<=dist[v]-z,根据这个建图v->u权为-z,源点到i权为0,i到汇点权为-1,然后求最短路,答案为 -dist[n+1].
2015-08-25 23:17:12
1073
原创 Columbus’s bargain (hdu 3268 最短路)
题意:n个物品,每个物品价值为pi,可以用一个玻璃珠和pi-1个金币换的,也可以由其他便宜的物品加上一定量的金币换得,相同价格的物品可以互换。问每个物品通过这样交换若干次后最少要花的金币数是多少。并且有多少物品的actual price等于其他两个物品actual price之和,注意每个物品如果有多个组合形式也只算作一种。
2015-08-25 22:51:59
759
原创 There is a war (hdu 2435 最小割+枚举)
题意:n个国家,m条有向边,国家1要去攻打国家n,n想切断1到n的道路来防御,切断每条道路有一定费用,国家1有一个NB魔法,可以建一条新边或者加固一条已有的边,这条边不能被n破坏,现在求 最大化n国花费之和的最小值。思路:可知就是求最小割边集,先建图,跑一遍最大流得ans,然后从S集到T集枚举割边使容量为INF,在残留网络中再跑网络流并记录最大值Max,那么最后答案就是ans+Max。在枚举的时候也可以直接重新建图,这样应该好理解一些。
2015-08-25 21:31:14
669
原创 A Dicey Problem (Uva 810 & poj 1872 bfs)
题意:n*m的地图,每个格子上有数字,骰子起始在(sx,sy),并告诉骰子上面的数字和正对你的数字,现在骰子在图上滚动,骰子能滚动当且仅当要滚到的格子上的数与滚之前骰子上面一面的数字相同或者为-1,问骰子是否能够滚一圈回到原点,输出路径,每9个一行。思路:骰子两个面就可以确定状态,开一个四维数组标记状态。注意以下代码死活在poj交C++过不了,G++可过,Uva也可过。写得很难看。。
2015-08-19 16:43:37
690
原创 Bloxorz I (poj 3322 水bfs)
题意就不具体说了,去这里玩一下就知道了戳我玩游戏,还是很好玩的~思路:Move函数写得很蛋疼,我是硬来的,一定要细心。
2015-08-19 09:46:31
1168
原创 Travelling Salesman Problem (hdu 5402 模拟)
题意:n*m的格子,每个格子上有权值,求从(1,1)走到(n,m)所经过的格子权值之和最大为多少,并输出路径。思路:直接贴上题解,但是想的和它一样,就是bug得蛋疼。首先如果nn为奇数或者mm为奇数,那么显然可以遍历整个棋盘。如果n,mn,m都为偶数,那么讲棋盘黑白染色,假设(1,1)(1,1)和(n,m)(n,m)都为黑色,那么这条路径中黑格个数比白格个数多11,而棋盘中黑白格子个数相同,所以必然有一个白格不会被经过,所以选择白格中权值最小的不经过。构造方法是这样,首先RRRRDLLLLD这样
2015-08-18 19:27:29
719
原创 Finding Nemo (poj 2049 超级蛋疼的bfs)
题意:二位坐标内告诉一些墙和门,儿子被困在里面,父亲在(0,0)处出发去救儿子,要求穿过的门数最少,输出最少门数。思路:我是把它转化成了平常的二维地图,先从(0,0)dfs走遍迷宫外的所有能到达的点并标记,然后从儿子所在地出发bfs,step记录穿过了多少扇门,当走到迷宫外遇到dfs访问过的点就表示出来了。今天做的几个poj上的题怎么都这么蛋疼,实在无语了,实际测试数据有大于199的!!!具体去看discuss吧,我也是看了里面的才过。。。
2015-08-17 21:25:36
880
数据结构课程设计通讯录管理系统
2015-09-11
数值计算实验代码
2015-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人