51nod——1548 欧姆诺姆和糖果
一开始以为是贪心,然后发现没法贪。暴力枚举肯定T,于是用约束关系优化:
假设wr >= wb,
第一种情况:wr >= sqrt (c), 则此时最多吃c / wr个r,且c / wr <= sqrt (c),这样从0到c / wr枚举r的数量即可。为什么不枚举b的数量,因为c/wr更小。这样就获得了一个n <= sqrt (1e9) 的O (n)解法。
第二种情况:wr < sqrt (c),设的wr >= wb自然 wb < sqrt (c),此时如果像上面那样枚举仍然会T,还能想办法再优化吗?比较一下两种糖的快乐重量比,保持r糖更快落(不然就互换值),即hr / wr >= hb / wb,则hr * wb >= hb * wr,这个式子说明了如果吃wr及以上个b,不如吃wb个r,所以从0到wr枚举b的数量即可。此时同样是n < sqrt (1e9) 的O (n)解法。
#include <bits/stdc++.h>
using namespace std;
#define ll long long int main() {
std::ios::sync_with_stdio ();
cin.tie ();
ll c, hr, hb, wr, wb, ans = ;
cin >> c >> hr >> hb >> wr >> wb;
if (wr < wb)
swap (wr, wb), swap (hr, hb); if (wr >= sqrt (c)) { //r最多取c/wr个
for (int i = ; i * wr <= c; i++)
ans = max (ans, i * hr + (c - i * wr) / wb * hb);
} else { //wr、wb都小于sqrt(c)
if (1.0 * hr / wr < 1.0 * hb / wb) //保持r更优
swap (wr, wb), swap (hr, hb); for (int i = ; i < wr; i++)
ans = max (ans, i * hb + (c - i * wb) / wr * hr);
}
cout << ans << endl;
return ;
}
51nod——1548 欧姆诺姆和糖果的更多相关文章
- 51nod 1548 欧姆诺姆和糖果 (制约关系优化枚举)
1548 欧姆诺姆和糖果 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 一天,欧姆诺诺姆来到了朋友家里,他发现了 ...
- 51nod 1554 欧姆诺姆和项链
有一天,欧姆诺姆发现了一串长度为n的宝石串,上面有五颜六色的宝石.他决定摘取前面若干个宝石来做成一个漂亮的项链. 他对漂亮的项链是这样定义的,现在有一条项链S,当S=A+B+A+B+A+...+A+B ...
- 51nod1548 欧姆诺姆和糖果
思路: 只有兩種糖果,枚舉其中一種糖果的數量就可以得到一個可行解: 但總有一種糖果的數量是較少的,並且該數量小於sqrt(C): 簡單證明: 1.若有任一糖果的質量大於sqrt(C),則必定有一糖果的 ...
- 51Nod 1554 欧姆诺姆和项链 (KMP)
题意:中文题. 析:首先要使用KMP的失配函数 f ,对于长度为 i 的串,如果存在循环节那么 i % (i-f[i]) == 0,循环节的长度就是 i - f[i] ,当然次数就是 i / (i- ...
- [codeforces] 526D [51nod] 1554 欧姆诺姆和项链
原题 KMP 方法一: 听说是ex-kmp--来自学姐 ex-kmp是处理两个串s和t之间,t的每一个后缀在s中的最长前缀的长度的一个算法. 它很像manacher(至少我和学姐这么认为),记录了一个 ...
- 51NOD 1554 欧姆诺姆和项链 巧妙利用KMP
请戳这里! #include<cstdio> #define N 1000100 char s[N]; int n,k,nxt[N],ans[N]; int main() { scanf( ...
- 51nod 1554:欧姆诺姆和项链——题解
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1554 题目: 有一天,欧姆诺姆发现了一串长度为n的宝石串,上面有五颜六色 ...
- 51NOD欧姆诺姆和项链——KMP算法(非水题)
>>点击进入原题测试<< 思路:好久不见,今天要开始真正写题了.这个题之前我的理解有点问题,导致写了很久最终都是一直都只能过样例.需要注意的是输出中每一个“1”都是和别的输出相 ...
- KMP、扩展KMP、Manacher习题
照着这篇博客刷一下. 自己也做一下笔记 对于KMP算法,可以看我之前总结的这篇博客 hdu 3613 Best Reward 给一个字符串,字符由a~z构成,每个字符有一个权值.在某一点将字符串切成2 ...
随机推荐
- HTTPRunner实践二——数据驱动
基于文档http://cn.httprunner.org/advanced/data-driven/ 场景一:用例集+独立参数+参数列表 1.原始用例文件savePatient_01.yml - co ...
- Linux服务器上的禅道迁移及升级方法(Linux to Linux)
由于阿里云服务器(Linux系统)到期停用,故需要将部署在该服务器上的禅道迁移到新的Linux服务器上.另外,借此机会,正好可以对旧版禅道进行一次升级.下面总结此次迁移和升级的具体操作方法. 一.禅道 ...
- sublime text 3 的emmet 添加自定义 html 片段
比如想在html写 jquery 直接添加jquery地址,打开 ‘首选项->Package Setting->Emmet->Settings - User’, css也可以如法炮制 ...
- jquery扩展方法详解
http://www.jb51.net/article/51079.htm https://www.cnblogs.com/xuxiuyu/p/5989743.html ---更详细
- NetCore上传多文件
.NetCore上传多文件的几种示例 本章和大家分享的是.NetCore的MVC框架上传文件的示例,主要讲的内容有:form方式提交上传,ajax上传,ajax提交+上传进度效果,Task并行处理 ...
- SpringBoot---Web开发---SSL配置
1.[生成证书] 2.[SpringBoot配置SSL] 3.[http转向https]
- [PHP] – 性能优化 – Fcgi进程及PHP解析优化
https://www.abcdocker.com/abcdocker/808------[PHP] – 性能优化 – Fcgi进程及PHP解析优化
- Eclipse Debug时出现Source not found错误
今天在Debug Java代码时报出了Source not found这个错误,如下图所示,经过查询资料得知这是由于缺少Hadoop源程序代码所导致的错误. 在此我建议了两种方法,可以先采用方法一,这 ...
- clickhouse源码Redhat系列机单机版安装踩坑笔记
前情概要 由于工作需要用到clickhouse, 这里暂不介绍概念,应用场景,谷歌,百度一大把. 将安装过程踩下的坑记录下来备用 ClickHouse源码 git clone安装(直接下载源码包安装失 ...
- C#字符串变量使用
string由于是引用类型,所以,声明的字符串变量会存储到堆上,而且该变量是不可变的,一旦初始化了该变量,该内存区域中存储的内容将不能更改.在对字符串操作时,是在堆上创建了一个新的字符串变量,并将新的 ...