列表

详情


NC16861. [NOI2000]瓷片项链

描述

原始部落用一种稀有的泥土烧制直径相同的圆瓷片并串成项链,串的时候沿瓷片的直径方向顺次连接,瓷片之间没有空隙也不重叠,一条项链至少由一个瓷片构成。

下图示出四片同样大小的瓷片串接所成的项链,其总长为单个瓷片直径的四倍。

 

 

每个烧制的瓷片厚度是一定的,直径D和所用泥土的体积V有以下关系:

其中V0为烧制每一片的损耗,单位与V相同。当用料小于等于V0时,不能烧制成瓷片。

例: V = 10,V0 = 1,若烧制成一片瓷片,V = V= 10,D = 0.9。如果把泥土均分成2份,每份泥土的体积为V = V/2 = 5,单个瓷片的直径为,串起来的总长为1.2。

给定了泥土的总体积和烧制单个瓷片的损耗,烧制的瓷片数不同,能够得到的项链总长度也不相同,请计算烧制多少个瓷片能使所得到的项链最长。

输入描述

仅有两行,每一行仅包含一个整数和一个换行/回车符。第一行的数字为泥土总体积V (0<V<60000),第二行为烧制单个瓷片的损耗V0(0< V0<600)。

输出描述

仅包含一个数字和一个换行/回车符。该数字为能获得最长项链而烧制的瓷片数。如果不能烧制成瓷片或者最优解不唯一(存在两个或者两个以上方案均能获得最长项链),输出数字0。

 

示例1

输入:

10
1

输出:

5

示例2

输入:

10
2

输出:

0

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 5ms, 内存消耗: 480K, 提交时间: 2019-08-05 09:31:48

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int vz,v;
	int x;
	int a;
	double b;
	cin>>vz>>v;
	b=(vz*1.0)/(2.*v);
	a=(int)b;
	if(a<1||b-a==0.5) cout<<0<<'\n';
	else if((ceil(b)-a)>(floor(b)-a)) cout<<floor(b)<<'\n';
	else cout<<ceil(b)<<'\n';
	return 0;
}

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 472K, 提交时间: 2022-10-15 17:43:30

#include<bits/stdc++.h>
using namespace std;
int Vt,V0,ans;
double x,dx;
int main(){
	scanf("%d%d",&Vt,&V0);
	dx=floor(x=(double)Vt/V0/2);
	if(x-dx==0.5) ans=0;
	else ans=dx;
	printf("%d\n",ans);
 } 

上一题