UVALive - 2322 Wooden Sticks
2014-10-28 23:09
302 查看
题目大意:给出要求切的n个小木棍 , 每个小木棍有长度和重量,因为当要切的长度和重量分别大于前面一个的长度和重量的时候可以不用调整大木棍直接切割, 否则要进行调整。现在要求求出一个序列, 使得调整的次数最少, 输出调整的次数。
解题思路:将n个小木棍先按照 长度和重量的大小排序,然后按照顺序将小木棍分堆,可入堆的要求是长度和重量大于当前这个堆的长度和重量,入堆之后, 要将新的木棍的属性赋值个这个堆, 如果当前所有堆都没法放下这个木棍, 就得单独放成一个堆。最后的堆数就是要求的调整次数。
#include <cstdio>
#include <algorithm>
using namespace std;
struct Stick{
int l;
int w;
int vis;
};
int cmp(Stick a, Stick b) {
if (a.l != b.l)
return a.l < b.l;
return a.w < b.w;
}
int main() {
int T, n;
scanf("%d", &T);
while (T--) {
Stick s[5050] = {0};
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d%d", &s[i].l, &s[i].w);
sort(s, s + n, cmp);
int ans = 0;
for (int cnt = 0; cnt < n; ans++)
for (int i = 0, temp = 0; i < n; i++)
if (s[i].vis == 0 && s[i].w >= temp) {
temp = s[i].w;
s[i].vis = 1;
cnt++;
}
printf("%d\n", ans);
}
return 0;
}
解题思路:将n个小木棍先按照 长度和重量的大小排序,然后按照顺序将小木棍分堆,可入堆的要求是长度和重量大于当前这个堆的长度和重量,入堆之后, 要将新的木棍的属性赋值个这个堆, 如果当前所有堆都没法放下这个木棍, 就得单独放成一个堆。最后的堆数就是要求的调整次数。
#include <cstdio>
#include <algorithm>
using namespace std;
struct Stick{
int l;
int w;
int vis;
};
int cmp(Stick a, Stick b) {
if (a.l != b.l)
return a.l < b.l;
return a.w < b.w;
}
int main() {
int T, n;
scanf("%d", &T);
while (T--) {
Stick s[5050] = {0};
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d%d", &s[i].l, &s[i].w);
sort(s, s + n, cmp);
int ans = 0;
for (int cnt = 0; cnt < n; ans++)
for (int i = 0, temp = 0; i < n; i++)
if (s[i].vis == 0 && s[i].w >= temp) {
temp = s[i].w;
s[i].vis = 1;
cnt++;
}
printf("%d\n", ans);
}
return 0;
}
相关文章推荐
- UVALive - 2322 Wooden Sticks
- UVa Live Archive 2322 - Wooden Sticks
- uva live-2322 - Wooden Sticks
- UVA live2322
- uvalive 2322(贪心)
- UVAlive 2322 Wooden Sticks(贪心)
- uvalive 2322 Wooden Sticks(贪心)
- UVALive 2322 Wooden Sticks 截木棍 排序+贪心
- UVALIVE 2322 Wooden Sticks
- UVAlive 2322 Wooden Sticks(贪心)
- uva live-2322 - Wooden Sticks
- UVAlive 2322 (13.08.23)
- uvalive 2322 Wooden Sticks(贪心)
- UVAlive 2322 (13.08.23)
- uvalive 4851
- UVALive 7392 Bundles of Joy【bitset】【类树形DP】【杂题】
- UVALive 3938 一道被我WA了的线段树
- 【01背包】Uvalive4015 Caves && Uvalive3637 The Bookcase
- UVALive-7304 - Queue of Soldiers 【动态规划】【组合函数】【好题】
- UVALive 3938 Ray, Pass me the dishes! (动态最大连续和)