zoukankan      html  css  js  c++  java
  • http://codeforces.com/contest/535/problem/C

    C. Tavas and Karafs
    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    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 issi = 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 thatl ≤ r and 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 ≤ 106, 1 ≤ 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.

    Examples
    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

     题意:给一个等差数列,基为a,差为b,每次能对m个值减一,给出范围l,m,和次数t,求最能是得有边为0的最大值;

    题解:二分找到符合的位置;

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<fstream> 
    #include<cmath> 
    #include<string> 
    #include<vector> 
    #include<algorithm>
    #include<string> 
    #define ll long long
    using namespace std;
    ll a,b,n,m,l,t;
    ll slove(ll x)
    {
        ll ans=(a*2+(l+x-2)*b)*(x-l+1)/2;
        return ans;
    }
    bool judge(ll x)
    {
        if(a+(x-1)*b>t)return true;
        if(slove(x)>t*m)return true;
        return false;
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin>>a>>b>>n;
        while(n--)
        {
            cin>>l>>t>>m;
            if(a+(l-1)*b>t)
            {
                cout<<-1<<endl;continue;
            }
            ll L=l,R=1e9;
            while(R-L>=0)
            {
                ll mid=(R+L)>>1;
                if(judge(mid))
                {
                    R=mid-1;
                }
                else
                {
                    L=mid+1; 
                }
            } 
             cout<<L-1<<endl;
        }
        return 0;
    }
  • 相关阅读:
    (C#) 设定时间格式
    (WPF) MVVM: 动态添加控件及绑定。
    (WPF) MVVM: DataGrid Binding
    (WPF) MVVM: ComboBox Binding, XML 序列化
    (C#) 判断相等?
    ASP.NET MVC过滤器中权限过滤器ValidateAntiForgeryToken的用法(Post-Only)
    根据2个经纬度点,计算这2个经纬度点之间的距离
    ASP.NET导出Excel(利用NPOI和EPPlus库,无需安装Office)
    nopcommerce 二次开发
    SQL效率低下原因主要有
  • 原文地址:https://www.cnblogs.com/lhclqslove/p/7367433.html
Copyright © 2011-2022 走看看