标签:sizeof pst pre ISE nes 大于 connect com max
Description
Input
Output
Sample Input
4 11 8.02 7.43 4.57 5.39
Sample Output
2.00
题意:给定n、k,n是n和木棍,问你能不能从这n个棍中截取出k个等长的木棍,输出最大的木棍长度,保留二位小数。
思路:二分来做,题目中木棍最长为100000.故可以二分0~100000.1,找出满足条件的最大长度,小数二分需要注意精度,
就用while循环重复一千次,得到满足条件的解,具体的看代码中的解释。
1 #include <map> 2 #include <set> 3 #include <list> 4 #include <stack> 5 #include <queue> 6 #include <deque> 7 #include <cmath> 8 #include <ctime> 9 #include <string> 10 #include <limits> 11 #include <cstdio> 12 #include <vector> 13 #include <iomanip> 14 #include <cstdlib> 15 #include <cstring> 16 #include <istream> 17 #include <iostream> 18 #include <algorithm> 19 #define ci cin 20 #define co cout 21 #define el endl 22 #define Scc(c) scanf("%c",&c) 23 #define Scs(s) scanf("%s",s) 24 #define Sci(x) scanf("%d",&x) 25 #define Sci2(x, y) scanf("%d%d",&x,&y) 26 #define Sci3(x, y, z) scanf("%d%d%d",&x,&y,&z) 27 #define Scl(x) scanf("%I64d",&x) 28 #define Scl2(x, y) scanf("%I64d%I64d",&x,&y) 29 #define Scl3(x, y, z) scanf("%I64d%I64d%I64d",&x,&y,&z) 30 #define Pri(x) printf("%d\n",x) 31 #define Prl(x) printf("%I64d\n",x) 32 #define Prc(c) printf("%c\n",c) 33 #define Prs(s) printf("%s\n",s) 34 #define For(i,x,y) for(int i=x;i<y;i++) 35 #define For_(i,x,y) for(int i=x;i<=y;i++) 36 #define FFor(i,x,y) for(int i=x;i>y;i--) 37 #define FFor_(i,x,y) for(int i=x;i>=y;i--) 38 #define Mem(f, x) memset(f,x,sizeof(f)) 39 #define LL long long 40 #define ULL unsigned long long 41 #define MAXSIZE 10006 42 #define INF 0x3f3f3f3f 43 44 const int mod=1e9+7; 45 const double PI = acos(-1.0); 46 47 using namespace std; 48 49 double a[MAXSIZE]; 50 int n,k; 51 52 int ccount(double x) 53 { 54 int sum=0; 55 For(i,0,n) 56 sum+=(int)(a[i]/x);//这里计算满足条件的根数总数、向下取整 57 return sum>=k;//只要总数大于等于k即可 58 } 59 int main() 60 { 61 while(~Sci2(n,k)) 62 { 63 For(i,0,n) 64 scanf("%lf",&a[i]); 65 double l=0,r=100000.1; 66 int cnt=1000; 67 while(cnt--)//重复一千次,是的l~r之间无限小,满足之间的所有数都可以满足题目条件 68 { 69 double mid=(l+r)/2; 70 if(ccount(mid)) 71 l=mid; 72 else 73 r=mid; 74 } 75 printf("%.2f\n",floor(r*100)/100);//注意这里,%.2f是自动四舍五入到的,所以这里先乘100在向下取整,再除以一百保证截取前三位 76 } 77 return 0; 78 }
标签:sizeof pst pre ISE nes 大于 connect com max
原文地址:https://www.cnblogs.com/hbhdhd/p/12184602.html