您的位置:首页 > 其它

codeforces 525C Ilya and Sticks(简单贪心)

2015-03-28 02:15 351 查看
题意:

n个木棍,想拼成若干矩形,使得面积最大。

附加条件:每根棍子可以把长度最多减1

思路:

容易得出一个贪心思路。

按长度从大到小排序后,依次拿。

但是我的写法有一个bug。。

因为先做了一次统计,然后从1e6到2遍历。。

比如其中一段(X = O + 1) O O O O X

忽略 X

O O 配对

O O 配对

这样就使得可行解空间变小了, 应该这样

O X 配对

O O 配对

这样剩下的O就可能再配一对

贪心需谨慎 t_t

LL a[Maxn+5], n;

LL solve() {
LL ret = 0;
vector<LL> v;
urep(i, Maxn, 2) {
if (a[i]) a[i] += a[i+1], a[i+1] = 0;
while (a[i] >= 2) {
v.push_back(i);
a[i] -= 2;
}
if (a[i] && a[i+1]) {
v.push_back(i);
a[i] = 0;
}
}
int sz = v.size();
for (int i=0;i<sz-1;i+=2) {
ret += v[i]*v[i+1];
}
return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: