那里可以做网站的吗,做物流网站有哪些功能,工业设计东莞网站建设,wordpress地方信息主题2143: 迷瘴
时间限制: 1 Sec 内存限制: 32 MB 提交: 666 解决: 201 [提交][状态][讨论版][命题人:外部导入]
题目描述 小明正在玩游戏#xff0c;他控制的角色正面临着幽谷的考验—— 幽谷周围瘴气弥漫#xff0c;静的可怕#xff0c;隐约可见地上堆满了骷髅。由于此处长…2143: 迷瘴
时间限制: 1 Sec 内存限制: 32 MB 提交: 666 解决: 201 [提交][状态][讨论版][命题人:外部导入]
题目描述 小明正在玩游戏他控制的角色正面临着幽谷的考验—— 幽谷周围瘴气弥漫静的可怕隐约可见地上堆满了骷髅。由于此处长年不见天日导致空气中布满了毒素一旦吸入体内便会全身溃烂而死。 幸好小明早有防备提前备好了解药材料各种浓度的万能药水。现在只需按照配置成不同比例的浓度。 现已知小明随身携带有n种浓度的万能药水体积V都相同浓度则分别为Pi%。并且知道针对当时幽谷的瘴气情况只需选择部分或者全部的万能药水然后配置出浓度不大于 W%的药水即可解毒。 现在的问题是如何配置此药能得到最大体积的当前可用的解药呢 特别说明由于幽谷内设备的限制,只允许把一种已有的药全部混入另一种之中即不能出现对一种药只取它的一部分这样的操作。 输入 输入数据的第一行是一个整数C表示测试数据的组数 每组测试数据包含2行首先一行给出三个正整数n,V,W(1n,V,W100) 接着一行是n个整数表示n种药水的浓度Pi%(1Pi100)。 输出 对于每组测试数据请输出一个整数和一个浮点数 其中整数表示解药的最大体积浮点数表示解药的浓度(四舍五入保留2位小数) 如果不能配出满足要求的的解药则请输出0 0.00。 样例输入
2
1 35 68
1
2 79 25
59 63 样例输出
35 0.01
0 0.00 题意就是混合多个体积相同的浓度不同的药水 要求混合后浓度不超过W%的最大体积下和最大体积下的浓度
分析开始想复杂了 每次混合都是整个体积的药水进行混合 所以必定是全部混合起来 不必考虑部分体积
那么为了使浓度尽可能小 体积尽可能大 我们不妨贪心 按照浓度排序 从小到大 把药水混合起来 浓度也随之更新
如果药水中浓度最小的就大于那个W那么直接输出“0 0.00”
否则我们就贪心混合 然后输出结果
需要注意的就是浮点数百分比下的溶质数和非百分比下的溶质数要区分清楚
#includecstdio
#includecstring
#includeiostream
#includemap
#includecmath
#includealgorithm
#includeset
#includevector
#includeclimits
#define Morethan(a,b) ((a)((b)eps))
using namespace std;
typedef long long ll;
const double eps 1e-5;
const ll mod 1000000007;
const int maxn 100010;
int p[110];
int main(){int n;scanf(%d,n);while(n--){int n,v,w;scanf(%d%d%d,n,v,w);int Min 110;for(int i1;in;i){scanf(%d,p[i]);Min min(Min,p[i]);}if(Minw){printf(0 0.00\n);continue;}sort(p1,p1n,lessint());double ansz0.01*v*p[1];int anstv,cnt1;for(int i2;in;i){double rz 0.01*v*p[i];//计算当前药水溶质double nowW ((rzansz))/(anstv);//计算混合后药水浓度无%号if(Morethan(nowW*100.0,w))break;//如果浓度超标 就不混合了anstv;//体积增大ansz nowW*anst;//溶质容量更新cnt;}double W ansz/anst*100.0;//浓度要输出百分比的值才行
、printf(%d %.2f\n,anst,round(W)/100.0);}return 0;
}