上一页 1 ··· 6 7 8 9 10 11 12 13 14 下一页
摘要: 先吐槽下这两天无限卡题,已经积了3道了。一筹莫展,只能先开一道稍微简单点的。题意:这题就是加强版的倒水问题,把三个杯子分别含水量作为状态,已经倒水的值作为距离。构建隐式图,然后利用优先队列宽搜其中记得时刻更新到达终点的最小距离。因为有可能无法到达目标状态需要输出离目标最近的。其实状态还可进一步简化,由于总的水量是一定的,所以只要记录两个杯子的含水量就可推出第三个。我这里没有简化,代码也写得比较长。。。terrible。不过至少1A了代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include... 阅读全文
posted @ 2014-01-09 02:02 张小豪 阅读(367) 评论(1) 推荐(0) 编辑
摘要: 题意:有一个n条竖线m条横线组成的网络,你的任务是开着一辆蒸汽压路机,用最短的时间从一个点到另一个点,其中一些线段上的权值表示压路机全速前进所用的时间,0表示不能通过,由于蒸汽机的惯性较大所以在转弯前和转弯后那条边所走的实际速度都是全速前进速度的两倍。开始后和结束前的边也是两倍。时间加倍的规则是不会叠加的。最后给你两个顶点求最短路。思路:这道题难点就是建图了,显示自己思考想了好多种方法但是最后在实现的时候都发现思路比较乱,写到最后还是放弃了。最后选用了liurujia书上的第二种方法,主要是比较简单又好理解。其中的一个4号定点表示静止点,0-3分别表示四个方向。四个方向的顶点只有和自己同一方向 阅读全文
posted @ 2014-01-07 14:27 张小豪 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 题意:无向图中有n个结点,m条边。需要求出所有结点之间最短路之和(若是两个结点间不能到达那么算成是x)例:n=2时 ans = d(1,1)+d(1,2)+d(2,1)+d(2,2)。然后从图中随机拿去一条边然后在让你计算所有结点之间最短路之和,问你可能得到的最大值是什么?思路:这道题正解是要求出最短路树,但是给出一种更简单的做法就是spfa暴力。当时抱着试一试的思想写了一发,结果没想到就过了,然后速度在2s左右,还算可以。先算出所有点与点之间的最短路,然后在枚举删除边求最短路最大值就可。代码如下: 1 #include 2 #include 3 #include 4 #include ... 阅读全文
posted @ 2014-01-04 16:08 张小豪 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题意:在一个无向图中要寻找编号第一个节点到编号第二个节点的路径个数,路径满足所有(a->b)满足存在一条从b出发去东区的路,比所有从a出发去终点的路都短。最后是输出路径数。最多1000个点。思路:原题中不含重边在,在月赛中的测试数据里我加入了重边所以只能用邻接表作为存储结构。仔细分析一下条件我们可以发现只要满足b的最短路比a短a->b的路径就是可以走的。所以我们需要先对2号结点执行Dijkstra算法算出所有结点到终点的距离。然后就是记忆化搜索,dp[i]表示存在多少条从i到终点的路径。接着输出dp[0]就行了。代码如下: 1 #include 2 #include 3 #incl 阅读全文
posted @ 2014-01-04 16:08 张小豪 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 题意:这道题一开始题目看错了,结果浪费了一上午。这道题是对于每个点可以进行一种操作:所有以v为终点的边权值减小d,所有以v为起点的点权值增加d。最后要让所有边的权值非负(零也不行!!我就坑在这里)且尽量大。思路:解法一:先说一种不标准的解法,稍微思考一下可以发现经过若干次操作后会限制权值的主要是在环上的边。所以我们只要二分答案+SPFA判负环就能得出答案。解法二:接下来说标准解法差分约束系统。由于在一个点上的多次操作是可以合并的,我们可以设sum[i]表示在i上操作的值。这样整个图就构成了若干个不等式sum[b]-sum[a] 2 #include 3 #include 4 #includ.. 阅读全文
posted @ 2014-01-03 10:18 张小豪 阅读(564) 评论(2) 推荐(0) 编辑
摘要: 2013年最后一题,也是最后一篇随笔~祝大家新年快乐!题意:在一张无向图中, 有两种公交线路,快线和慢线。现在有一个人想要从s->e但是他只有一张快线车票。所以快线只能乘坐一次,慢线可以随便乘坐,让你求从s->e的最短路。思路:这道题是liurujia书上的一题。没有按照他的方法做直接暴力出来了。方法就是每次向图中加一条边,然后对其求最短路,判断能不能更新当前最优值,可以的话把路径和答案记录下来即可。最后递归输出。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #inc... 阅读全文
posted @ 2013-12-31 22:47 张小豪 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 第一次能和div1的大神们一起比赛,甚是紧张。只做出来三题,先贴一下吧。Problem ANew Year Candles题意:有若干新蜡烛,用完两个旧蜡烛就能造一个新蜡烛,每个蜡烛能燃烧1小时。问最多能燃烧多少个小时?思路:这道题直接爆,虽然有点傻但是比赛的时候保险。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define ll long long11 #define INF 0x7fffffff12 #... 阅读全文
posted @ 2013-12-31 02:41 张小豪 阅读(250) 评论(0) 推荐(0) 编辑
摘要: Problem APlaying with Dice题意:两个人心中都想一个数字,然后掷骰子。骰子1-6问你有几种方案会靠近a想的数字几种一样近几种靠近b的?思路:大水题一枚直接1-6枚举。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #define MP(a, b) make_pair(a, b)12 #define PB(a) push_back(a)13 14 using name... 阅读全文
posted @ 2013-12-30 02:19 张小豪 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 题意:告诉你数列中的一段数满足大于或小于不等式关系,让你求是不是存在这样一个数列。思路:典型的差分约束的题。主要的步骤是这样的先建图后用SPFA算法判断存不存在负环。SPFA算法的具体实现见我的《最短路算法总结》。下面讲一下如何建图首先需要找到一个小于等于的不等式a-b 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define LEN 101011 #define INF 0x3f3f3f3f12 #define mp(a, b) make_... 阅读全文
posted @ 2013-12-29 19:59 张小豪 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 最近花了大约一个月左右的时间集中刷了一些图论的题目。虽然收获了许多但是还是付出了很多作业没有做的代价0.0。在这里先把自己所做的关于最短路的基础算法来做一个总结,至少把学到的东西记录下来。先说明一下在这里我们暂且认为n为图中顶点个数,m为图中边的个数,INF为极大值(可以是题目计算过程中不会的得到的一个大数字)。然后说一下最近学到了什么吧。最初学习的是dij--O(n^2)的算法。这个在以前数据结构的时候就已经学习过了现在加强了一下,熟练掌握了算法思想然后会裸敲。接着当然就是dij--O(mlogn)的算法。了解算法思想并且明白了是如何优化的,然后会裸敲。接着是floyd算法这个最简单了只有几 阅读全文
posted @ 2013-12-29 01:04 张小豪 阅读(2286) 评论(0) 推荐(2) 编辑
摘要: 题意:有若干个牛每个牛有一个序列每一天这头牛产奶d%tn单位(d当前天数,tn为序列长度)每天产奶最少的会被吃掉,如果有多头产奶一样少则什么也不吃。问最后会留下多少头牛,最后一头被吃掉的牛是在哪一天。思路:水题。纯模拟每天更新牛的产奶数量,然后把它去掉。若是天数超多lcm(1-10)则不会再有牛吃了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define ll long long11 #define IN... 阅读全文
posted @ 2013-12-26 23:28 张小豪 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 题意:卡了一天的一题。有若干个小球当中连着一些绳子(绳子一样长)现在需要你选两个小球, 需要当你尽量分开这些小球的时候绷紧的绳子数最多。思路:其实就是求两点之间所有最短路的边最多的值,首先要用floyd找出所有节点之间的最短路,然后在用搜索找到任意两个节点之间的最短路覆盖多少条边。我是开了一个矩阵标记边有没有被访问过,若是能到达目标状态(最短路)则再回溯的事后标记边。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define LEN... 阅读全文
posted @ 2013-12-26 21:54 张小豪 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题意:在一个无向网络中,告诉你边的容量与费用。现在需要传送d个数据问你你否能传送成功,若成功则最小费用是多少。思路:显然是最小费用最大流问题,这道题的见图比较简单。只需要添加一个原点费用为D指向1就行了。接下来的事情就是套模版了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define LEN 5010 11 #define ll long long 12 13 using names... 阅读全文
posted @ 2013-12-26 00:10 张小豪 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 题意:在一个街道网格中有若干个银行,现在有小偷去偷,在偷完钱后由于不能被警察抓到所有任意两个小偷不能走同一条街道(点和边都不行)逃跑,问你是否能把所有的银行都偷到。思路:这道题就是最大流,先建图后套模版就行了。借这道题用了邝大神的sap模版果断效率很高,对于这道题由于点的容量有限制所以需要拆点,然而一开始我没有读清楚题意所以没有拆点导致怎么也算不对。。。后来一想不对劲改过来立马ac了。首先每个点拆成两个结点(一个专门连出边,一个入边)从出边点连一条边指向入边点流量为1。然后在网格之间建立双向变。最后我们设立一个源点,从原点出发到所有银行流量为1表示有小偷去偷,然后再设立一个汇点使所有边上的结点 阅读全文
posted @ 2013-12-25 22:42 张小豪 阅读(263) 评论(0) 推荐(0) 编辑
摘要: Problem A Lever题意:大概的意思就是一个杠杆'^'表示支点,1-9表示上面的物体的重量,最后要求判断杠杆的倾斜方向。思路:水题。先找到支点,然后遍历一遍求出左边与右边分别的重量,最后比较一下大小即可。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define ll long long11 #define INF 0x7fffffff12 #define eps 1E-613 #define LE 阅读全文
posted @ 2013-12-25 01:05 张小豪 阅读(232) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 下一页