51nod1548-枚举&技巧&数学证明-欧姆诺姆和糖果
来源:互联网 发布:天眼通软件下载 编辑:程序博客网 时间:2024/06/04 20:04
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1548
开始搜了一下,wa了一半a了一半,得不到正确的结果。我是每次尽可能的拿比例大的,但是结果不一定,可能比例大的并不一定拿的尽可能的多。。
比例的意思是 价值比重量
证明,较少的糖果的数目一定小于sqrt(c)的就行(只是说取的数目,没说比例大小)。
证明如下。
假设比例小的的数目大于等于sqrt(c),那么他的质量肯定小于等于sqrt(c)。
存在两种情况
① 比例大的单个质量大于sqrt(c)
② 比例大的单个质量也小于sqrt(c)。
①的时候当第一种的时候,比例大的取的数目小于qsrt(c) 符合证明。
②的时候,这时俩的质量都小于sqrt(c),可能他们的数目都大于sqrt(c)啊。对吧??
不对呢,因为如果质量都小于qsrt(c),那么他们的lcm肯定小于c(最大的lcm也不过二者相乘。),这时候我们就可以再lcm的范围内进行 两个糖果的无限转换了。
我们可以 找一个 lcm的倍数,令其大于sqrt(c)并且小于c。
这时候,我们把比例小的都换成比例大的。这时候剩下的质量一定是
小于等于sqrt(c)
所以剩下的质量一定小于sqrt(c)了,那么质量比较小的一定小于sqrt(c)了
#include <bits/stdc++.h>using namespace std;/* 枚举,这个证明挺好的。 还看见别人瞎搞的a了。 就是看他们的数目是不是小于10000.*/typedef long long ll;ll c,c1,c2,a1,a2;int main(){ while(~scanf("%lld%lld%lld%lld%lld",&c,&c1,&c2,&a1,&a2)){ ll num=sqrt(c); ll ans=-1; for(ll i=0;i<=num;i++){ if(i*a1<=c){ ans=max(ans,(c-a1*i)/a2*c2+i*c1); } if(i*a2<=c){ ans=max(ans,(c-a2*i)/a1*c1+i*c2); } } printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- 51nod1548-枚举&技巧&数学证明-欧姆诺姆和糖果
- 51nod 1548 欧姆诺姆和糖果 (思维 枚举)
- 515nod 1548 欧姆诺姆和糖果 【枚举】
- 欧姆诺姆和糖果
- 51nod 1548欧姆诺姆和糖果(枚举优化)
- 51NOD 1548 欧姆诺姆和糖果
- 51nod 1548 欧姆诺姆和糖果
- 【51nod】1548 欧姆诺姆和糖果
- 51Nod-1548-欧姆诺姆和糖果
- 51nod-1548:欧姆诺姆和糖果
- 1548 欧姆诺姆和糖果 51NOD
- 51nod 1548 欧姆诺姆和糖果
- 51nod 1548 欧姆诺姆和糖果【思维+分类讨论】
- 51 nod 1548 欧姆诺姆和糖果(背包思维暴力写)@
- 51Nod-1554-欧姆诺姆和项链
- 51NOD 1554 欧姆诺姆和项链 【kmp】
- Dijkstra和Prim算法 【含数学证明】
- [枚举]糖果采购
- IDA*
- 洛谷八连测R4
- 关键字register:
- 解决iframe框架onload方法不加载的问题
- 为什么公司用weblogic而不用tomcat?
- 51nod1548-枚举&技巧&数学证明-欧姆诺姆和糖果
- zookeeper
- JavaWeb学习心得之自定义传统标签
- Spark Streaming通过Socket检测空气质量
- 【学习笔记】计算机网络-利用TELNET进行SMTP的邮件发送
- 大数阶乘
- 编译原理——3.2 输入缓冲
- 利用Java求最大公约数与最小公倍数的算法
- 【Django】ImproperlyConfigured at / Empty static prefix not permitted