码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 535C Tavas and Karafs(二分)

时间:2015-04-15 17:05:24      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:acm   二分   

题意  有一个等差数列  从A开始  公差为B  然后n个询问  每个询问给定l,t,m   然后要求如果每次可以最多选择m个数   使这m个数-1   那么在t次操作中可以使l为左端点的最长序列中使所有数为0  输出这个最长序列的右端序号

定理  序列h1,h2,...,hn 可以在t次时间内(每次至多让m个元素减少1)  全部减小为0  当且仅当  

max(h1, h2, ..., hn) <= t  &&  h1 + h2 + ... + hn <= m*t   

那么就可以二分右端点来解决了  下限为l  上限为hi不超过t的最大i

#include <bits/stdc++.h>
typedef long long LL;
LL a, b, n, l, t, m;


LL getv(LL p)
{
    return a + (p - 1) * b;
}


LL getsum(LL r)
{
    return (getv(r) + getv(l)) * (r - l + 1) / 2;
}


int main()
{
    scanf("%lld%lld%lld", &a, &b, &n);
    while(n--)
    {
        scanf("%lld%lld%lld", &l, &t, &m);
        if(getv(l) > t) puts("-1");
        else
        {
            LL le = l, ri = (t - a) / b + 1, mid;
            while(le <= ri)
            {
                mid = (ri + le) / 2;
                if(getsum(mid) <= t * m) le = mid + 1;
                else ri = mid - 1;
            }
            printf("%lld\n", le - 1);
        }
    }
    return 0;
}

C. Tavas and Karafs

Karafs is some kind of vegetable in shape of an 1?×?h rectangle. Tavaspolis people love Karafs and they use Karafs in almost any kind of food. Tavas, himself, is crazy about Karafs.

技术分享

Each Karafs has a positive integer height. Tavas has an infinite 1-based sequence of Karafses. The height of the i-th Karafs is si?=?A?+?(i?-?1)?×?B.

For a given m, let‘s define an m-bite operation as decreasing the height of at most m distinct not eaten Karafses by 1. Karafs is considered as eaten when its height becomes zero.

Now SaDDas asks you n queries. In each query he gives you numbers lt and m and you should find the largest number r such that l?≤?rand sequence sl,?sl?+?1,?...,?sr can be eaten by performing m-bite no more than t times or print -1 if there is no such number r.

Input

The first line of input contains three integers AB and n (1?≤?A,?B?≤?1061?≤?n?≤?105).

Next n lines contain information about queries. i-th line contains integers l,?t,?m (1?≤?l,?t,?m?≤?106) for i-th query.

Output

For each query, print its answer in a single line.

Sample test(s)
input
2 1 4
1 5 3
3 3 10
7 10 2
6 4 8
output
4
-1
8
-1
input
1 5 2
1 5 10
2 7 4
output
1
2



Codeforces 535C Tavas and Karafs(二分)

标签:acm   二分   

原文地址:http://blog.csdn.net/acvay/article/details/45061043

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!