题意:已知一条街上有n幢房子,依次的编号为1~n,其中有k幢已经卖出去了但是不知道是哪k幢。当且仅当一幢房子没有卖出去且其两旁至少有一幢房子卖出去了的时候,认为这幢房子是好的。问这n幢房子中好的房子最多、最少可能有多少。

思路:简单的贪心(但是不小心可能错)。首先如果k==n或者k==0,那么显然不可能有任何好的房子。否则,当将所有的卖出去的房子的位置连续地放在街的一端时,好的房子的数量取到最小值1。当n>=k*3时,将n个房子按每三个为一段分开,其中任选k段使中间的那一个房子为卖出去的,那么这k段中每一段就有了一幢卖出去的房子和两幢好的房子,可以使好的房子的数量取到最大值k*2。如果n<k*3,先用n/3幢房子按n>=k*3的方法搞到2*[n/3]幢,剩下n-[n/3]*3套既不是卖出的又不是好的,然后如果n-[n/3]*3为1或2则在这剩下的几套中选出1套,显然分别能使好的房子数量分别增加0、1套,也就是如果n-[n/3]*3=0那么有2*[n/3]好的和k=[n/3]套已卖出的,如果n-[n/3]*3=1那么有2*[n/3]好的和k=[n/3]+1套已卖出的,如果n-[n/3]*3=2那么有2*[n/3]+1好的和k=[n/3]+1套已卖出的,三种情况都满足好的数量等于n-k。

易错点:3*k可能爆int,需要long long

 #include<cstdio>
typedef long long LL;
LL n,k;
int main()
{
scanf("%lld%lld",&n,&k);
if(n==k||k==)
{
printf("0 0");
return ;
}
printf("1 ");
if(n>=k*)
printf("%lld",k*);
else
printf("%lld",n-k);
return ;
}

最新文章

  1. LeetCode-Remove Duplicates from Sorted Array II
  2. Java实现文件复制的四种方式
  3. MySQL数据库能够用随意ip连接訪问的方法
  4. Eclipse问题解决方案,不断更新
  5. 【BZOJ-1901】Dynamic Rankings 带修主席树
  6. Win32消息机制
  7. 【索引】Objective-C基础教程-读书笔记
  8. 获取json对象的长度
  9. php curl 获取 HTTPS
  10. JAVA基础--线程
  11. Android实用代码七段(二)
  12. Python爬虫入门教程 18-100 煎蛋网XXOO图片抓取
  13. 关于js-xlsx的简单使用
  14. node基础(二)_模块以及处理乱码问题
  15. 十三、u-boot 调试-- NOR FLASH 支持
  16. 百度网盘满速下载器:pandownload
  17. 计蒜客 31001 - Magical Girl Haze - [最短路][2018ICPC南京网络预赛L题]
  18. 织梦SQL标签的使用
  19. typescript 不用import?
  20. VS2008:Failed to return new Code Element

热门文章

  1. VUE 之 组件
  2. 通达OA二次开发 工作流表单中关联查询另外一个工作流方法(源代码)
  3. mmwave
  4. RK3399参考设计方案之DC-DC电源芯片RK808D【转】
  5. umask文件屏蔽字的使用【学习笔记】
  6. html5--6-50 动画效果-变形
  7. 一步一步学Silverlight 2系列(25):综合实例之Live Search
  8. select下拉带图片-模拟下拉
  9. June Challenge 2017
  10. LOG.ZS.0001.基于Freetype的游戏字体渲染优化思路