https://www.51nod.com/Challenge/Problem.html#!#problemId=1420

一开始乱搞了一发,每个袋鼠二分找最小的能放它的,然后二分的范围从下一个开始保证不会把两个小袋鼠装在同一个里面,还过了一半的数据……

然后才发现袋鼠并不能嵌套。想打vis标记大袋鼠跳过大袋鼠,然后样例都过不了。

又想了半天网络流,流个鬼鬼流。

看了一下别人的提示,贪心加二分。

好像我误解了别人的贪心加二分,跑得比别人还快快。

明显选的袋鼠一定是最小的那波,这样最优。

然后二分选的袋鼠的数量,套在我第一次交的那个里面,一发就过了,500ms,应该是正解的做法。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll; int n;
int a[500005];
int cpa[500005]; bool check(int m) {
int be=m,en=n;
for(int i=0; i<m; i++) {
int res=lower_bound(a+be,a+en,2*a[i])-a;
if(res==en)
return false;
else {
be=res+1;
}
}
return true;
} int main() {
while(~scanf("%d",&n)) {
for(int i=0; i<n; i++) {
scanf("%d",&a[i]);
}
sort(a,a+n);
for(int i=0;i<m;i++){ } int ans=0;
int l=0,r=n/2;
while(1) {
int m=(l+r)>>1;
if(m==l){
if(check(r)){
ans=n-r;
}
else{
ans=n-l;
}
break;
}
if(check(m)){
l=m;
}
else{
r=m-1;
}
}
printf("%d\n",ans);
}
}

然后看见一个更惊人的,从每个袋鼠开始选最大的能放进它的。好像没什么问题,这个贪心策略是对的。

2,4,5,8

从小的开始贪心,错在假如2用了4,虽然减少了一个,但假如2用了5,4用了8,那就减少两个。因为使用了4会影响4不能选8,所以不能这样贪心。

但是从大的开始贪心就没问题,例如8可以装4,可以装2,那装4一定更好。(对个鬼鬼,假如有3呢?把4吃了2放哪里?)。

其实这个策略的正确性应该在于先分成前后两部分(至于为什么要把奇数多出来的放在后部分,其实特判cnt不能超过n/2也可以,不然就有可能嵌套),前部分从后部分中选最合适的。这样不会有嵌套。但居然也是500ms,感觉被骗了。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll; int n;
int a[500005];
int main() {
while(~scanf("%d",&n)) {
for(int i=0; i<n; i++) {
scanf("%d",&a[i]);
}
sort(a,a+n,greater<int>()); int cnt=0;
for(int i=(n+1)/2;i<n;i++){
if(a[cnt]>=2*a[i])
cnt++;
} printf("%d\n",n-cnt);
}
}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll; int n;
int a[500005];
int main() {
while(~scanf("%d",&n)) {
for(int i=0; i<n; i++) {
scanf("%d",&a[i]);
}
sort(a,a+n,greater<int>()); int cnt=0;
for(int i=0;i<n;i++){
if(a[cnt]>=2*a[i]){
cnt++;
if(cnt==n/2)
break;
}
} printf("%d\n",n-cnt);
}
}

最新文章

  1. ASP.Net MVC 5 in Xamarin Studio 5.2
  2. CSS网页制作常用标签
  3. Weibo SDK WP版本回调参数没有uid的解决方法
  4. stm32f10x .icf文件 可以看懂
  5. poj2642 The Brick Stops Here(DP基础题)
  6. 扩容盘、SD卡扩容
  7. 剑指offier第三题
  8. Learning Cocos2d-x for WP8(7)——让Sprite动起来
  9. 干了这杯Java之LinkedList
  10. 《mysql必知必会》读书笔记--安全管理及数据库维护
  11. SQL-PL/SQL基础
  12. netstat命令总结
  13. jq点击事件不生效,效果只闪现一次又立马消失的原因?
  14. Linux Kernel 4.21已更新:优化AMD 7nm Zen2架构
  15. 漏洞复现-vsftpd-v2.3.4
  16. zabbix监控第一台服务器
  17. 批量部署ssh私钥认证
  18. scrapy框架安装及使用
  19. [LeetCode]Delete and Earn题解(动态规划)
  20. Java基础之基本数据类型的包装类型

热门文章

  1. 字符串转换成js的日期格式
  2. 03 xml封装通信接口
  3. jquery 效果网址分享
  4. SEO大师分析的八条
  5. javascript fetch 跨域请求时 session失效问题
  6. Git 忽略上传文件设置 .gitignore exclude
  7. 解密阿里云Redis助力双十一背后的技术
  8. linux iptables:安全应用,防火墙
  9. java后台获取cookie里面值得方法
  10. FFMPEG more samples than frame size (avcodec_encode_audio2) 的解决方案