hdu1025 Constructing Roads In JGShining's Kingdom(最长递增公共子序列二分法)
2016-02-21 12:08
381 查看
这题其实和1051是一个道理,以前看的别人的代码,现在看其实就是最长递增公共子序列的二分法。。。
5e5的数据量很显然普通方法不能,但是我今天才发现原来这就是二分法。。。
碉堡了。。。
5e5的数据量很显然普通方法不能,但是我今天才发现原来这就是二分法。。。
碉堡了。。。
#include <stdio.h> #include <string.h> #include <cstdio> #include <algorithm> using namespace std; const int N = 500005; const int INF = 1<<27; struct CIT { int r; int p; }cit ; bool cmp(CIT a, CIT b) { if(a.r < b.r) return true; else return false; } int main() { // freopen("in.txt", "r", stdin); int T, n, i, k, Case = 1, ans; int dp ; while(~scanf("%d", &n)) { for(int i = 1; i <= n; i ++) { scanf("%d%d", &cit[i].p, &cit[i].r); dp[i] = INF; } sort(cit + 1, cit + n + 1, cmp); ans = 0; for(i = 1; i <= n; i ++) { k = lower_bound(dp + 1, dp + n + 1, cit[i].p) - dp; // printf("%d ", k); ans = max(ans, k); // printf("%d ", ans); dp[k] = cit[i].p; // printf("%d\n", dp[k]); } if(ans == 1) printf("Case %d:\nMy king, at most %d road can be built.\n\n", Case ++, ans); else printf("Case %d:\nMy king, at most %d roads can be built.\n\n", Case ++, ans); } return 0; }
相关文章推荐
- HDU 1568
- HDU1290
- HDU1568(Fobonacci公式)
- HDU ACM Step 2.2.2 Joseph(约瑟夫环问题)
- HDU 1405
- HDU 1297
- hdu 1205
- hdu 2087
- hdu 1016
- HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
- HDU 5592 ZYB's Premutation 线段树(查找动态区间第K大)
- HDU 5240 Exam (好水的题)
- HDU5237 Base64 大模拟
- HDU 1000
- HDU 1001
- 2015-11-11 hdu新生赛 A题(AC)
- 2015-11-11 hdu新生赛 C题(结束后一发AC)
- 2015-11-11 hdu新生赛 E题(结束后一发AC)
- 2015-11-11 hdu新生赛 F题(结束后一发AC)
- hdu-5385