ZOJ 1025 Wooden Sticks
2013-08-14 16:37
302 查看
题目大意:有n个木棍,分别具有长度li和重量wi。对于木棍s1和s2,若l1<=l2且w1<=w2,则s1、s2可构成单调递增序列。求n个木棍中这样序列的个数。
最先的想法是,先排序,然后一遍一遍扫描,直到全部处理完。
View Code
看到网上说可以通过求解最长(严格)递减序列的答案,可是怎么都理解不了,留待以后吧...
最先的想法是,先排序,然后一遍一遍扫描,直到全部处理完。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define MAXN 5000+10 struct Wooden { int l, w; bool operator < (const Wooden& x) const { if (l != x.l) return l < x.l; else return w < x.w; } }; Wooden wooden[MAXN]; bool processed[MAXN]; int main() { #ifdef LOCAL freopen("in", "r", stdin); #endif int T; scanf("%d", &T); while (T--) { int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d%d", &wooden[i].l, &wooden[i].w); sort(wooden, wooden+n); int time = 0; memset(processed, 0, sizeof(processed)); int remain = n; while (remain > 0) { time++; int prel = -1, prew = -1; for (int i = 0; i < n; i++) if (!processed[i] && wooden[i].l >= prel && wooden[i].w >= prew) { processed[i] = true; remain--; prel = wooden[i].l; prew = wooden[i].w; } } printf("%d\n", time); } return 0; }
View Code
看到网上说可以通过求解最长(严格)递减序列的答案,可是怎么都理解不了,留待以后吧...
相关文章推荐
- POJ 1065 Wooden Sticks(zoj 1025) 最长单调子序列
- Zoj 1025 Wooden Sticks
- zoj-1025 Wooden Sticks有关贪心和动态规划
- ZOJ 1025 Wooden Sticks(贪心 基础题)
- zoj 1025Wooden Sticks(贪心)
- zoj 1025 - Wooden Sticks
- 动态规划-ZOJ 1025-WOODEN STICKS
- ZOJ 1025 Wooden Sticks
- ZOJ 1025 Wooden Sticks【非DP做法】
- ZOJ 1025 Wooden Sticks(快排+贪心)
- zoj 1025 Wooden Sticks 贪心 + 动态规划
- ZOJ-1025(POJ-1065、HDU-1051) Wooden Sticks
- zoj 1025 Wooden Sticks (DP子序列)(第100,纪念一下)
- zoj 1025 Wooden Sticks
- zoj 1025 wooden sticks
- ZOJ 1025 Wooden Sticks (DP)
- ZOJ 1025 Wooden Sticks 【思维 + 最长下降子序列 + Dilworth定理】
- POJ 1065 Wooden Sticks(zoj 1025) 最长单调子序列
- ZOJ&nbsp;1025&nbsp;Wooden&nbsp;Sticks
- Poj 1065 Wooden Sticks【贪心+LIS?】