博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces 985C. Liebig's Barrels
阅读量:4485 次
发布时间:2019-06-08

本文共 758 字,大约阅读时间需要 2 分钟。

n表示桶的个数,k表示每个桶的木板数目,l表示任意两个桶中的最短木板的差值的上限。

思路比较明确,找出最短木板的长度记为 m,那么每个桶的最短木板的范围在[ m,m+l]之间。、

在计算和的时候,思路有点混乱,始终没有找到正确的方法。

其实可以这样想:

  • 如果长度小于m+l的木板数目小于n,那么无解
  • 如果正好等于,就是前n个木板的和
  • 如果长度小于m+l的木板数目大于n,就需要跳过一些木板,同时要保证最后的和是最大的

针对第三种情况,枚举n个水桶,每个水桶最多跳过k-1个木块,同时保证剩下的范围在[ m,m+l ]之间的木板的个数可以分给剩下的水桶

int ptr=0;        for(int i=0;i
n-i-1)ptr++; else break; } }

非常简短巧妙的代码

整题的代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define DEBUG(x) cout<<#x<<" = "<
<
n-i-1)ptr++; else break; } } printf("%I64d\n",sum); }}

 

转载于:https://www.cnblogs.com/MalcolmMeng/p/9720275.html

你可能感兴趣的文章
nginx反向代理下没有获取到正确的clientIP问题发散
查看>>
python周报第一周
查看>>
IBM MQ 创建以及常见问题集锦
查看>>
Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(1)
查看>>
SQL Server 服务器磁盘测试之SQLIO篇(一)
查看>>
sun.misc.Unsafe 详解
查看>>
食堂排队问题的一个实现
查看>>
Git 回滚代码的正确姿势
查看>>
构造函数、析构函数、虚析构函数、纯虚析构函数要点
查看>>
Python批量获取京东商品列表信息
查看>>
2017.7.10 C组总结
查看>>
SourceTree下载 及使用
查看>>
MyEclipse下安装FatJar打包工具
查看>>
什么是域名-视频讲解?
查看>>
大道至简第六章-从编程到工程
查看>>
单元测试——隔离神器:mockito
查看>>
[Web Tools] 实用的Web开发工具
查看>>
ContentProvider
查看>>
欢迎来到Attention的博客
查看>>
获取IOS bundle中的文件
查看>>