2018ccpc网络赛
奔跑的蜗new
这个作者很懒,什么都没留下…
展开
-
hdu6447(树状数组+离散化)
商人从(0,0)走到(1e9,1e9)途中有若干村庄,商人可以向(x,y+1)(x+1, y)(x+1, y+1)三个方向前进,当向(x+1,y+1)方向前进时可以获得村庄(x+1, y+1)的利润,问商人途中最多可以挣多少钱 商人到达点(x,y)的最大利润一定是从(0,0)到(x-1,y-1)这个矩形转移而来的,但是如果单纯的用二维来dp会超空间,可以考虑dp的顺序而降低dp维度,dp顺...原创 2018-08-27 15:31:18 · 719 阅读 · 1 评论 -
hdu6441(费马大定理+勾股数)
给出n和a求b, c满足a^n + b^n = c^n 由费马大定理得出n > 2时无解,n = 2时参考勾股数 #include <cstdio> typedef long long ll; int main() { int T; scanf("%d", &T); while (T--) { ll n, a, b, c; scanf("%lld%...原创 2018-08-27 16:28:06 · 850 阅读 · 0 评论 -
hdu6438(优先队列)
有一个物品每天的价格不同,每天可以选择以当天的价格买入或卖出问n天后最多挣多少钱以及最少的交易次数 做法是把每天的价格丢到队列里,如果当天的价格高于队列top就把top弹出,更新总收益,并把当天价格push两次,这里push两次目的是当天的价格可能不是最优比如1 2 10 11第二天卖出同时push两次进去,第三天卖出,第四天又卖出,相当于第二天作为跳板,同时又把第二天买入又卖出了。 处...原创 2018-08-27 21:55:08 · 346 阅读 · 0 评论 -
hdu6446(树上dp)
给出一颗树,n个结点,n个结点有n!种排列组合,假设其中一种是1 3 5 2 4,那么就要求出1-3,3-5,5-2,2-4的路径总和,问所有排列组合的路径总和。 先考虑路径重复的问题,有n!中排列组合,每种组合有(n-1)条路径,不同路径数是n*(n-1)/2,那么每条路径重复次数就是2*(n-1)! 接下来就是求不同路径的长度总和。。。 本着大胆猜想的原则。。我猜测路径长度总和与路径无关...原创 2018-08-29 00:51:42 · 269 阅读 · 0 评论 -
hdu6444(最大子段和+gcd)
给出长度为n的数组,目标快乐值s,体力m,跳跃间隔k a[i]表示i这个点的快乐值,每花费一体力跳到(i+k)%n的位置上可以获得a[(i+k)%n]的快乐值,问要达到目标快乐值s,初始至少需要多少快乐值,实际上就是求花费m体力最多能获得多少快乐值 由于跳跃间隔固定为k,那么所有的循环种数就是gcd(n,k),每个循环节的长度就是n/gcd(n,k) 所以暴力每个循环节,问题转化为最大子段和...原创 2018-08-29 17:57:22 · 843 阅读 · 0 评论