codeforces 785C Anton and Fairy Tale

Posted BadboyQAQ

tags:

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

题目链接:http://codeforces.com/problemset/problem/785/C

题意:仓库容量是n,一开始是满的,然后每天晚上可以往仓库里装m粮食,最多装到n。然后每天白天有鸟来吃粮食,一只鸟吃1单位。第i天有i只鸟。问你多少天鸟可以把粮食吃完。

分析:一开始读错题,导致wa了两发。如果n<=m的话,只有n只鸟的时候一天把他吃完,输出n。如果m<n的话,前m是肯定吃不完的,m天之后,从1开始计数,就是好比每天白天吃i+m,晚上装m,一天好比加了i。所以可以二分天数,但是最后一天不用计算装入的m。因此可以令n=n-m;然后以后每天吃i,i天一共吃i*(1+i)/2,比较与n的大小即可。最后输出二分的天数加上m。

AC代码:

技术分享
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 
 5 int main(){
 6     ios_base::sync_with_stdio(0);
 7     cin.tie(0);
 8     long long n,m;
 9     cin>>n>>m;
10     long long low=0,high=1e10;
11     long long ans;
12     long long num=n-m;
13     while(low<=high){
14         long long mid=(low+high)/2;
15         long long result=num-mid*(mid+1)/2;
16 
17         if(result>0){
18             low=mid+1;
19         }
20         else {
21             high=mid-1;
22             ans=mid;
23         }
24     }
25     if(n<=m){
26         cout<<n<<endl;
27     }
28     else cout<<ans+m<<endl;
29     return 0;
30 }
View Code

 

以上是关于codeforces 785C Anton and Fairy Tale的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces 734B Anton and Digits

CodeForces 785A Anton and Polyhedrons

codeforces785E Anton and Permutation

CodeForces 734F Anton and School

CodeForces 734E Anton and Tree

Codeforces Round #379 (Div. 2) D. Anton and Chess(模拟)