51nod - 1420 - 数袋鼠好有趣 - 贪心 - 二分
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);
}
}
51nod - 1420 - 数袋鼠好有趣 - 贪心 - 二分的更多相关文章
- 51nod 1420 数袋鼠好有趣【贪心】
1420 数袋鼠好有趣 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 有n只袋鼠.每只袋鼠的大小用一个整数表示. ...
- 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II
题目传送门 /* 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 当然有可能两个数和超过p,那么an的值最优,每 ...
- poj 2782 Bin Packing (贪心+二分)
F - 贪心+ 二分 Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Description ...
- Card Game Cheater(贪心+二分匹配)
Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 51nod 1770 数数字
1770 数数字 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 难度:3级算法题 收藏 关注 统计一下 aaa ⋯ aaan个a × b 的结果里面 ...
- BZOJ2796[Poi2012]Fibonacci Representation——贪心+二分查找
题目描述 给出一个正整数x,问x最少能由多少个Fibonacci数加减算出. 例如1070=987+89-5-1,因此x=1070时答案是4. 输入 第一行一个正整数q (q<=10),表示有q ...
- The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - F 贪心+二分
Heap Partition Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge A sequence S = { ...
- Codeforces Round #768 (Div. 2) D. Range and Partition // 思维 + 贪心 + 二分查找
The link to problem:Problem - D - Codeforces D. Range and Partition time limit per test: 2 second ...
- CodeForces - 1251D (贪心+二分)
题意 https://vjudge.net/problem/CodeForces-1251D 您是一个大型企业的负责人.在您的企业当中共有n位员工为您工作,而且非常有趣的事是这个n是一个奇数(n不能被 ...
随机推荐
- bb=Discuz与 Discuz! X ,Discuz!NT区别
没加x的,仅仅是单独的论坛. 加了x的,模块加了很多了,门户,家园,排行榜,群组,都是Discuz! X上的,而Discuz!上没有,所以说Discuz! X更加适用于建设门户网 Discuz! X ...
- 计算机鼻祖-Donald Knuth(高纳德) 的传奇
李开复说,练内功,不要仅仅花功夫学习各种流行的编程语言和工具,以及一些公司招聘广告上要求的科目.要把数据结构.算法.数据库.操作系统原理.计算机体系结构.计算机网络,离散数学等基础课程学好.最好还是试 ...
- 【BZOJ4953】lydsy七月月赛 F DP
[BZOJ4953]lydsy七月月赛 F 题面 题解:设f[i][j]表示第i个强度取为j时的最小误差.那么每次转移时,我们只计算j'和j之间的像素点带来的误差,于是有: $f[i][j]=min( ...
- EasyHLS直播在Linux非root用户运行时出现无法写文件的问题解决mkdir 0777
今天在Github上收到一个用户反馈的EasyHLS在linux上非root用户调用时,无法写目录的问题:https://github.com/EasyDarwin/EasyHLS/issues/3, ...
- 配置hadoop用户SSH无密码登陆 的2种方式 落脚点是 可以ssh免密进入的主机名写入动作发出主机的 known_hosts,而被无密进入主机的authorized_keys文件 免密登录
cat /proc/versionLinux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version ...
- 【智能无线小车系列九】在树莓派上使用USB摄像头
材料准备: 1.树莓派 2.AS 4WD小车 3.WebCam 4.小米移动电源 5.TP—LINK 高增益150MUSB无线网卡 操作流程: 1.将WebCam插上树莓派后,首先要确认树莓派是否支持 ...
- Handler向子线程发送数据
public class MainActivity extends AppCompatActivity { private static final String TAG = "MainAc ...
- Protocol_ISIS
集成ISIS协议 作者:Danbo 2015-7-5 ISIS的意思是表示中间系统,并且是为OSI无连接网络协议(OSI Conectionless Network Protocol,CLNP)设计的 ...
- php memcache知识点总结
$memcache = new Memcache; $memcache->connect('localhost',11211) or die('Could not connect'); //me ...
- LightOJ - 1027 A Dangerous Maze —— 期望
题目链接:https://vjudge.net/problem/LightOJ-1027 1027 - A Dangerous Maze PDF (English) Statistics For ...