ICPC题解
曾英俊
这个作者很懒,什么都没留下…
展开
-
HDU 6223 Infinite Fraction Path(bfs+剪枝)
题解: 对前部有相同数值进行bfs,就相当于一起走。 剪枝: 1.如果下一步是你已经走过,并且比现在的步数要高则可以去掉; 2.如果数值小于当前这步最大值也可以去掉; 3.把状态按照步数小,数值大排序可以节省时间。 #include <algorithm> #include <iostream> #include <cstdlib> #inc...原创 2018-10-01 01:01:02 · 197 阅读 · 0 评论 -
HDU 4803 Poor Warehouse Keeper(贪心+精度)
题解: 先求出最后的单价,我们每一步都于逼近单价。 因为只有总价部分可以优化成加一个整数,所以每一步去就加上目标总价与当前总价差多少即可。 #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cs...原创 2018-10-06 15:56:32 · 176 阅读 · 0 评论 -
HDU 4811 Ball(思维)
题解: 先放头和尾依次左右开始塞满,找规律。 #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <string> #include ...原创 2018-10-06 12:01:51 · 153 阅读 · 0 评论 -
HDU 5135 Little Zu Chongzhi's Triangles(贪心)
题解: 贪心从大到小排序加遍历,三个一起遍历从大到小,如果满足三角形条件都可以加上答案。 #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <s...原创 2018-10-04 10:41:05 · 141 阅读 · 1 评论 -
HDU 5137 How Many Maos Does the Guanxi Worth(最短路+枚举)
题解: 首先先跑一遍最短路,用pre数组记录最短路路径,枚举路径上的所有点(不包括 1 和 n),标记这些点再来跑最短路记录其中最大的最短路。 #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <c...原创 2018-10-04 10:31:48 · 175 阅读 · 0 评论 -
ACM-ICPC 2018 徐州赛区网络预赛 A.Hard to prepare(数论+递归)
题意: 有 2^k 个数字[0~2^k-1],将其围成一个圈(可以多次使用),在任何位置的数字其左右两边都不可以是它的补码。问一共有多少种情况。 题解: 我们可以通过对每一个位置进行选择处理,如第一个可以放 2^k 种,则下一个一定是 2^k-1 种,直到最后一个是 2^k-2。但是我们发现还有一种情况就是最后第二个和第一个相同则最后一个的选择只有 2^k-1 种,所以我们假设 n-1 和 ...原创 2018-10-03 01:20:47 · 142 阅读 · 0 评论 -
ACM-ICPC2018北京网络赛 Saving Tang Monk II(bfs+剪枝)
题意: S是起点,T是终点,B是加氧气点并花费一分钟,. 是任何条件都可以走并花费一分钟,#是要有氧气的情况下可以走但是要花费两分钟,P是可以少一分钟。 最多可以带5个氧气瓶,问从起点到终点最小花费时间。 题解: 每一点有6个状态,即 0氧气 到 5氧气,跑BFS维护每个点的每个状态只跑一次,用优先队列来控制先走时间花费最少的状态即可。 #include <algorithm&g...原创 2018-09-26 16:58:02 · 172 阅读 · 0 评论 -
HDU 6219 Empty Convex Polygons(最大空凸包)
#include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <string> #include <vector> #include原创 2018-10-01 16:16:50 · 339 阅读 · 0 评论 -
2018中国大学生程序设计竞赛 - 网络选拔赛--HDU 6438 Buy and Resell(贪心)
题意: 有 n 个城市,每个城市可以买一个价值为 ai 的东西或者卖一个价值为 ai 的东西,假设你一开始有无数的钱,问你经过这些城市最多可以赚多少利润。 题解: 有利润就要当前的值大于你买进去的值,比如第一个样例:(10-2,9-1) 和 (10-1,9-2)是一样的。 如果我们只是这样去求答案是不对的,因为在第一个样例中 2 是大于 1的,这样就很亏,但是我们可以发现先 2-1 再10...原创 2018-08-31 23:07:13 · 184 阅读 · 0 评论 -
2018中国大学生程序设计竞赛 - 网络选拔赛--HDU 6446 Tree and Permutation(思维)
题意: 有 n 个点标为 1 ... n,对其全排列,按排列后顺序走,求其路径总和。 题解: 通过对样例全排列发现答案就是边的使用次数乘上权值的求和。 如果我们考虑一个边,除去这个边的两点,对其 n-1 个点全排列(把边想象成一个点),正反 2 次,所以就有 (n-1)!*2 的方法数,再乘上权值和边的两边数量。 #include <algorithm> #include ...原创 2018-09-01 00:04:46 · 139 阅读 · 0 评论 -
2018中国大学生程序设计竞赛 - 网络选拔赛--HDU 6447 YJJ's Salesman(dp+线段树)
题意: 一个人要从(0,0)的村庄走到(1e9,1e9)的村庄,有些村庄有 w 值。他只能斜着走才能获得那些值,问你他最多可以获得多少值。 题解: 如题我们可以得到 dp 公式 :dp[i][j] = max(dp[i-1][j-1]+w, dp[i-1][j], dp[i][j-1], w)。 但是我们直接离散化后去跑整个图是不行的,因为图太大了。其实我们可以发现 dp[i][j] = ...原创 2018-09-05 23:11:19 · 196 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛--J Sum(数论)
题意: 6 = 1*6 = 2*3 = 3*2 = 6*1,12 = 2*6 = 6*2(12可以被2^2整除),这样 f(6) = 4,f(12) = 2,求 f(1) ... f(n) 的和。 题解: 其实我们把数字拆成质数相乘就会发现只要这个质数的个数不超过2个就有值,比如 6 的有 2,3,即 6 = 1 * 2^1 * 3^1, 24 = 1 * 2^3 * 3^1。 而且我们可...原创 2018-09-06 00:12:22 · 330 阅读 · 0 评论 -
HDU 6229 Wandering Robots(思维)
题解: 假设所有的点都没有障碍,则设分子 a = 3*3+(n-2)*2*4+(n-2)*(n-1)/2*5,分母 b = 3*4+(n-2)*4*4+(n-2)*(n-2)*5。 在(x,y)上加入障碍,则总和的分母要减去当前的点即 b -= v(x,y),如果这个点是 x+y >= n-1,则 a-= v(x,y)。 然后在遍历障碍可以走的路,如果下一步还是障碍则不走,否则 b--...原创 2018-10-01 09:55:55 · 222 阅读 · 0 评论 -
HDU 6228 Tree(思维)
题解: 我们只要知道一条边的左右点数都大于 k 则说明这一条边是可以走的。 我们通过对度为0的点放进队列中,一层一层加点去度就可以做到每一个点前面所承载的点数(包括自己)。 #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #...原创 2018-09-30 21:51:22 · 228 阅读 · 0 评论 -
CodeForces - 883K(贪心)
题解: 中间可能存在的最大值是于两边值+1有关,所以我们从左和从右开始维护该点可以最多的路即可。 #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include &...原创 2018-10-21 00:42:28 · 238 阅读 · 0 评论