• 二分搜索 Codeforces Round #299 (Div. 2) C. Tavas and Karafs


    题目传送门

     1 /*
     2     题意:给定一个数列,求最大的r使得[l,r]的数字能在t次全变为0,每一次可以在m的长度内减1
     3     二分搜索:搜索r,求出sum <= t * m的最大的r
     4     详细解释:http://blog.csdn.net/libin56842/article/details/45082747
     5 */
     6 #include <cstdio>
     7 #include <algorithm>
     8 #include <cstring>
     9 #include <cmath>
    10 using namespace std;
    11 
    12 typedef long long ll;
    13 
    14 const int MAXN = 1e4 + 10;
    15 const int INF = 0x3f3f3f3f;
    16 ll A, B, n, l, t, m;
    17 
    18 ll cal(ll x)    {return A + (x - 1) * B;}
    19 
    20 ll get_sum(ll l, ll r)
    21 {
    22     return (cal (l) + cal (r)) * (r - l + 1) / 2;
    23 }
    24 
    25 int main(void)        //Codeforces Round #299 (Div. 2) C. Tavas and Karafs
    26 {
    27     while (scanf ("%I64d%I64d%I64d", &A, &B, &n) == 3)
    28     {
    29         for (int i=1; i<=n; ++i)
    30         {
    31             scanf ("%I64d%I64d%I64d", &l, &t, &m);
    32             if (cal (l) > t)    {puts ("-1");    continue;}
    33             ll x = l;    ll r = (t - A) / B + 1;
    34             while (x <= r)
    35             {
    36                 ll mid = (x + r) / 2;
    37                 if (get_sum (l, mid) <= t * m)    x = mid + 1;
    38                 else    r = mid - 1;
    39             }
    40             printf ("%d
    ", r);
    41         }
    42 
    43     }
    44 
    45     return 0;
    46 }
    编译人生,运行世界!
  • 相关阅读:
    ie兼容问题整理
    jQuery Easing 使用方法及其图解
    前端模块化学习
    velocity常用语句速查表
    table插件实现
    表单自动提交问题整理
    移动端开发
    工具的使用及配置
    《TCP/IP详解 卷1:协议》读书笔记
    iOS 内存泄漏
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4547127.html
Copyright © 2020-2023  润新知