标签:os 使用 io for ar 代码 amp sp on
本题一看就知道是最长不减序列了,一想就以为是使用dp解决了。不过那是个错误的思路。
我就动了半天没动出来。然后看了看别人是可以使用dp的,不过那个比较难证明其正确性,而其速度也不快。故此并不是很好的解决方法。
所以我就直接硬算,硬模拟选择出非减子序列,选完就出答案了。
思路:
1 按照长度排序
2 按照不减原则选择重量,选一个,消灭一个。
最后消灭完了,就处理完毕,答案就自然出来了。
原来是一道披着dp的外套的模拟题啊!一道伪装成难题的简单题。
代码也可以写的非常简洁:
#include <stdio.h> #include <vector> #include <string.h> #include <algorithm> #include <iostream> #include <string> #include <limits.h> #include <stack> #include <queue> #include <set> #include <map> using namespace std; const int MAX_N = 5001; pair<int, int> arr[MAX_N]; int calIncrese() { int ans = 0; sort(arr, arr+N); for (int i = 0; i < N; i++) { if (arr[i].second == INT_MIN) continue; int wei = arr[i].second; ans++; for (int j = i+1; j < N; j++) { if (arr[j].second >= wei) wei = arr[j].second, arr[j].second = INT_MIN; } } return ans; } int main() { int T; scanf("%d", &T); while (T--) { scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d %d", &arr[i].first, &arr[i].second); } printf("%d\n", calIncrese()); } return 0; }
标签:os 使用 io for ar 代码 amp sp on
原文地址:http://blog.csdn.net/kenden23/article/details/38794095