网线切割

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网线切割相关的知识,希望对你有一定的参考价值。

第二道。

原题链接:https://www.luogu.org/problem/show?pid=1297#sub

果然牵扯到浮点数题目就开始变得比较恶心人了啊。。

思路是有一步转化,先把米转换成厘米,转化成整数进行二分然后再转回来,这样好做一些。

和切木头那个题很像,也是要记录一个cnt,判断这个值和k的关系。

有一些细节部分需要好好处理。

参考代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #define maxn 10005
 5 #define maxl 1000000005
 6 using namespace std;
 7 int k,n,cnt;
 8 int a[maxn];
 9 double b,ans;
10 inline int read(){
11     int num = 0;
12     char c;
13     bool flag = false;
14     while ((c = getchar()) ==   || c == \n || c == \r);
15     if (c == -)
16         flag = true;
17     else
18         num = c - 0;
19     while (isdigit(c = getchar()))
20         num = num * 10 + c - 0;
21     return (flag ? -1 : 1) * num;
22 }
23 bool check(int x){
24     cnt=0;
25     for (int i=1;i<=n;i++)
26       cnt+=a[i]/x;
27     if (cnt>=k) 
28         return true;
29     else 
30         return false;
31 }
32 int main(){
33     n = read();k = read();
34     for (int i=1;i<=n;i++){
35       scanf("%lf",&b);
36       a[i] = b * 100;
37     }
38     int l = 0;
39     int r = maxl;
40     int mid;
41     while (l <= r){
42         mid=(l + r + 1) / 2;
43         if (l == r) 
44           break;
45         if (check(mid))
46             l = mid;
47         else 
48             r = mid - 1;
49     }
50     ans = mid * 1.00 / 100;
51     printf("%.2lf",ans);
52     return 0;
53 }

 

以上是关于网线切割的主要内容,如果未能解决你的问题,请参考以下文章

P1297 网线切割

Shell脚本切割日志

Huawei_Netconf_Ncclient

计算棒材的最高总价,用唯一长度值切割

使用ffmpeg视频切片并加密

使用ffmpeg从视频文件中提取音频文件视频抽帧和切割视频