zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    C#后台解析XML字符串并获取节点值
    table动态添加tr
    时间段检索时间段
    什么是数据结构
    PERSONAL VALUES
    C#接口
    基于ArcEngine与C#的鹰眼地图实现
    ENVI/IDL与ArcGIS集成开发的三种途径
    中国地图投影(实现Lambert投影)
    Git 的下载
  • 原文地址:https://www.cnblogs.com/ls961006/p/6947624.html
Copyright © 2011-2022 走看看