题目分析
-
很容易发现只要烧制所有瓷片的损耗小于总量,就能烧制成项链。
-
不妨设烧制了 \(n\) 片,则总长度为 \(n\times 0.3\sqrt{v-v0}\)。
-
本题数据范围较小,\(n\) 的大小不会超过 \(60000\),因此可用枚举法解决。
-
接下来只需要枚举 \(n\) 的大小,比较项链总长度选出最大值就可以了。
-
需要注意特判最优解不唯一和 \(v<v0\) 的情况,直接输出 \(0\) 。
代码实现
#include<bits/stdc++.h>//万能头
using namespace std;
int main() {
int vz,v0;//总量与损耗
int ans;
double l,maxl=0,li;
cin>>vz>>v0;
if(vz<v0){
cout<<0;
return 0;//判定总量小于损耗的情况
}
for(int i=1;vz>v0*i;i++){//枚举烧制的陶片个数
li=i;
l=0.3*sqrt(vz/li-v0);//计算n=i时项链的长度
if(maxl==l*li) {
cout<<0;
return 0;//判定最优解不唯一的情况
}
else if(maxl<l*li){
maxl=l*li;//更新答案
ans=i;
}
}
cout<<ans;
return 0;//完结撒花
}
标签:瓷片,P5753,烧制,int,题解,li,v0,项链,vz
From: https://www.cnblogs.com/Hushizhi/p/16613840.html