题意:
    现在有n个蛋糕值,要求把n个蛋糕值摞起来,螺成k层,而每一层得蛋糕值至少是上一层蛋糕值得2倍,求最后最多可以螺成几个蛋糕.
    例如第一个样例
     1 2 3 4  要成2层,那么有(1 3) (2 4)所以最多可以形成2个
     思路是二分枚举最多可以成为多少个
     然后看最这个是否满足有k层得这些个
     自己再找是否有k个可以满足得时候,完美的写的超时了,看代码吧

T掉的:

#include<bits/stdc++.h>
#define IO          ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#include <iostream>
#include <cmath>
#include <cstdio>
#include <stdlib.h>
#include <ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int maxn = 1e6 + 5;
int cnt=0;
int cnt1=0;
ll b[maxn];
ll a[maxn];
int vis[maxn];
int k,n;
int work(int m)
{for(int i=0;i<m;++i)a[i]=b[i];for(int p=1; p<k; ++p){for(int i=0; i<m; ++i){// 1、//int pos=lower_bound(b+m*p,b+n,a[i]*2)-b;//cout<<'s'<<pos<<endl;//2、 md,找bug能力,分析能力不行啊,在这儿如果m是1e3,那么现在一个m要向后找1e2个数,那是1e2个1e3得次方啊。/*int pos=0;for(int j=m*p;j<n;++j){if(b[j]>=2*a[i]){pos=j;break;}}*/if(pos==0)return 0;if(vis[pos]==0) vis[pos]=1,a[i]=b[pos];//,cout<<'p'<<pos<<' ';else{int j;for( j=pos+1; j<n; ++j)if(vis[j]==0){vis[j]=1;a[i]=b[j];break;}if(j==n)return 0;}}}return 1;
}
int main()
{IO;int t;scanf("%d",&t);//cin>>t;for(int ca=1; ca<=t; ++ca){scanf("%d%d",&n,&k);//cin>>n>>k;for(int i=0; i<n; ++i) scanf("%lld",&b[i]);sort(b,b+n);int ans=0;int r=n;int l=0;int mid;while(l<=r){mid=l+(r-l)/2;memset(vis,0,sizeof(vis));if(work(mid)){ans=mid;l=mid+1;}elser=mid-1;}printf("Case #%d: %d\n",ca,ans);//cout<<"Case #"<<ca <<": "<<ans<<endl;}return 0;
}

正解:

#include<bits/stdc++.h>
#define IO          ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#include <iostream>
#include <cmath>
#include <cstdio>
#include <stdlib.h>
#include <ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int maxn = 1e6 + 5;
int cnt=0;
int cnt1=0;
ll b[maxn];
ll a[maxn];
int vis[maxn];
int k,n;
//当较小得数不满足得时候,后面较大得那个数对当前得b[i]也是不满足,就缩短时间复杂度了
int work(int m)
{for(int i=0;i<m;++i)a[i]=b[i];int pos=m;for(int i=m;i<m*k;++i){while(b[pos]<a[i-m]*2&&pos<n)pos++;if(pos==n)return 0;a[i]=b[pos];pos++;}return 1;
}
int main()
{// IO;int t;scanf("%d",&t);//cin>>t;for(int ca=1; ca<=t; ++ca){scanf("%d%d",&n,&k);//cin>>n>>k;for(int i=0; i<n; ++i) scanf("%lld",&b[i]);sort(b,b+n);int ans=0;int r=n;int l=0;int mid;while(l<=r){mid=l+(r-l)/2;memset(vis,0,sizeof(vis));if(work(mid)){ans=mid;l=mid+1;}elser=mid-1;}printf("Case #%d: %d\n",ca,ans);//cout<<"Case #"<<ca <<": "<<ans<<endl;}return 0;
}

【2016 Asia China-Final D题】相关推荐

  1. C - Mr. Panda and Strips Gym - 101194C(思维//尺取//2016 icpc china final)

    VJ地址 题意:选择一段or两段连续的区间,合成一段序列,使得选择的序列中没有相同的数字,求序列最长的长度 思路:由于是区间内不能有相同的数字,所以考虑用尺取,可以2*n的时间枚举第一段的长度,然后剩 ...

  2. ACM ICPC China final G Pandaria

    目录 ACM ICPC China final G Pandaria ACM ICPC China final G Pandaria 题意:给一张\(n\)个点\(m\)条边的无向图,\(c[i]\) ...

  3. 计算机四级网络工程题库,2016计算机四级网络工程师题库

    2016计算机四级网络工程师题库 一.选择题 1. 以下关于OSPF协议技术特征的描述中,哪个是错误的? A.OSPF协议使用层次结构的区域划分 B.它将一个自治系统内部划分成若干区域与主干区域(ba ...

  4. 大一计算机考试题库window,2016年计算机考试Windows题库及答案

    2016年计算机考试Windows题库及答案 101 通过Windows Xp中"开始"菜单中的"运行"项_____. A.可以运行DOS的全部命令B.仅可以运 ...

  5. 华为杯数学建模优秀论文_数学建模经典例题(2016年国赛B题与优秀论文)

    数学建模经典例题 (更多往期经典例题可点击文章最后相关推荐哦) 相关推荐 数学建模经典例题(2000年国赛B题与解题思路) 数学建模经典例题(2001年国赛A题与优秀论文) 数学建模经典例题(2001 ...

  6. 考虑单用户计算机上的下列I O操作,操作系统概论自考2016年10月真题

    操作系统概论自考2016年10月真题及答案解析 本试卷为单选题型,多选,填空题,简答题,综合等题型. 一.单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内.错 ...

  7. 第七届蓝桥杯 2016年省赛真题(Java 大学C组)

    蓝桥杯 2016年省赛真题(Java 大学C组) 第一题:有奖猜谜 第二题:煤球数目 第三题:平方怪圈 第四题:骰子游戏 第五题:分小组 第六题:凑算式 第七题:搭积木 第八题:冰雹数 第九题:四平方 ...

  8. 上半年计算机二级试题,2016上半年计算机二级模拟题及答案

    2016上半年计算机二级模拟题及答案 2016上半年计算机等级考试即将来临,为了帮助大家全面备战,下面百分网小编为大家搜索整理了计算机二级模拟题及答案,供大家参考学习,希望对你有所帮助!想了解更多相关 ...

  9. 计算机一级ps操作题大全,2016计算机一级photoshop模拟题及答案

    2016计算机一级photoshop模拟题及答案 3月份计算机等级考试很快就要开始了, 为了帮助大家能顺利通过计算机一级考试,下面百分网小编为大家带来2016计算机一级photoshop模拟题及答案, ...

  10. 计算机二级excal试题,2016年计算机二级excel题库及答案

    2016年计算机二级excel题库及答案 中国的人口发展形势非常严峻,为此国家统计局每10年进行一次全国人口普查,以掌握全国人口的增长速度及规模.按照下列要求完成对第五次.第六次人口普查数据的统计分析 ...

最新文章

  1. Zigbee网络架构+ZigBee的体系结构+理解zigbee节点的实现的案例+“51单片机” 和 “zigbee” 、 “cc2530芯片” 之间的关系+芯片cc2530
  2. 红帽linux5.6,Redhat Enterpris linux 5.6 安装
  3. python中的位置怎么看_如何获得字符在Python中的位置?
  4. nodejs中字符串和json转换
  5. python二级题库刷题训练
  6. 中国农业大学2020计算机院线,2020年中国农业大学考研分数线公布
  7. 前端弹出对话框 js实现 ajax交互
  8. can例程 ecu_ECU程序及CAN总线实现
  9. 计算机考试190,计算机考试题库:计算机考试模拟练习题(190)
  10. 阿里天池比赛——食物声音识别
  11. ios状态栏,导航栏,工具栏,tab栏的位置,附图
  12. 2019年北航计算机夏令营
  13. colorkey唇釉是否安全_colorkey唇釉成分安全吗
  14. 德州仪器计算器 C语言编程,德州仪器因取消对计算器编程的支持而激怒业余爱好者...
  15. 用C语言编写一个申请内存的程序
  16. 清零实验,拆字实验,8255并行口实验(硬件),继电器控制实验(硬件)
  17. 大家来找茬的部分代码
  18. 数图互通房产管理系统优势
  19. idea2018.2.4破解教程
  20. MATLAB神经网络语音去噪-学习笔记

热门文章

  1. QCopChannel的用法
  2. python用os模块自动打开软件_Python实现自动打开电脑应用的示例代码
  3. (四)Java B2B2C o2o多用户商城 springcloud架构-断路器(Hystrix)
  4. Mato的文件管理 (莫队)题解
  5. #我要10000+# 计划启动啦!让文章拥有更多曝光~
  6. Word 2010中利用尾注添加参考文献(论文必备)
  7. 一起谈.NET技术,初识Silverlight 4及其架构
  8. SQL Update 语句中使用别名
  9. VMware Workstation安装64位操作系统遇到的小问题
  10. 数据结构(C语言实现)勘误