二分...
2019第一篇qwqqq(希望明天出分不要死的太惨烈....
话说今天gg没给我们上课感觉真好....终于不用面对读遍ppt就过的窘境了23333
洛谷P1577 切绳子
题目描述
有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的
绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位。
输入格式:
第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li。
输出格式:
切割后每条绳子的最大长度。
其实感觉这道题吧...对于小数点后两位比较坑....
具体思路qwq:从中间二分一个值,如果可以切k次的话,就左端加一,否则右端减一。
(其实我感觉学长讲的真的比gg好多了....我要是听gg讲估计是不会辽。。。
然后关于小数,查了一下,大家都建议先扩大一百倍,然后除一百(妙啊
#include<iostream> #include<cstdio> using namespace std; int n,k; double a[10010]; bool msort(int x) { int cnt = 0; for(int i = 0; i < n; ++i){ cnt += a[i]/x; } if(cnt>=k)return true; else return false; } int main() { cin>>n>>k; for(int i = 0; i < n; ++i){ cin>>a[i]; a[i] *= 100; } int l = 0, r = 100000000; while(l <= r){ int mid = (l + r) / 2; if(mid == 0) break; if(msort(mid)) l = mid+1; else r = mid-1; } printf("%.2f ",1.0*r/100); return 0; }
高分喷雾我要高分喷雾....
(数学不要看过程不要看。。。。
疯狂祈祷(哭了