随笔分类 -  算法:分治

【洛谷P1083】借教室
摘要:显然线段树可以搞…… 不过常数需要优化的很小 另一种做法, 我们可以考虑二分答案 每次对于1--mid天维护前缀和判断即可 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=1000010; 5 i 阅读全文
posted @ 2016-10-31 15:18 Absolutezero 阅读(921) 评论(0) 推荐(0)
【洛谷P1462】通往奥格瑞玛的道路
摘要:意思就是费用的最大值最小 那么我们对最大费用进行二分,按此跑最短路,累计扣减血量进行比较即可 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=10010,M=100010; 5 long long 阅读全文
posted @ 2016-10-31 13:56 Absolutezero 阅读(240) 评论(0) 推荐(0)
【洛谷P1966】火柴排队
摘要:两列排序后将编号一一对应 归并排序求逆序对 (每一次交换就去掉一个逆序对) 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define ll long long 5 using namespace std; 6 con 阅读全文
posted @ 2016-10-30 20:09 Absolutezero 阅读(232) 评论(0) 推荐(1)
【洛谷P2759】奇怪的函数
摘要:x^x>=10^(n-1) lg x^x>=n-1 x*lg x>=n-1 x*(log2 x/log2 10)>=n-1 左边单调递增,二分x即可 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 using namespace 阅读全文
posted @ 2016-10-29 22:26 Absolutezero 阅读(361) 评论(0) 推荐(0)
【洛谷P1485】火枪打怪
摘要:本题二分显然 关键是怎么O(n)check 我们很容易想到应该从右往左打起 我们设对于二分出的伤害值为 p,射到从左到右第s个怪物身上的子弹数为kk[s]。对于p-(i-j)*(i-j)我们将它拆开,变成-j^2+2ij-i^2+p。对于第j个怪,它受到的溅射伤害应为-(kk[j+1]+...+kk 阅读全文
posted @ 2016-10-24 16:44 Absolutezero 阅读(261) 评论(0) 推荐(0)