首页 > 其他分享 >Educational Codeforces Round 125 D

Educational Codeforces Round 125 D

时间:2022-08-28 19:55:17浏览次数:57  
标签:Educational const Gamers int Codeforces 125 define

D. For Gamers. By Gamers.

最近又生病了 然后就休息了两天 人还真是休息不得 直接寄掉了 不管是手速还是思维啥的
看到这道题 很简单的一个变形都没看出来 只看出了二分 一直找单调性 就是想不到变形一下就可以了
我们可以发现这个式子是这样子的 H/d<h/D 然后这样显然没有单调性 我当时好像想假了 想了个六边形战士一定是最强的 就要用差来排序做
然后把分母分别乘过来 就发现都是自家人了 就很好做了 又有单调性
说实话我们观察一下C发现也挺小的 比1e9哪些 显然可以预处理(当时这个也没观察出来 挺失败的今天
预处理也是蛮好处理的 这里有个级数 c+c/2+c/3+...+c/c 我们把c提出来就是个级数了 是clogc的
然后对于m个询问 每次二分即可 O((m+c)logc)

#include <bits/stdc++.h>
using namespace std;
const int N =3e5+10;
const int M = 998244353;
const int mod = 998244353;
#define int long long
#define endl '\n'
#define Endl '\n'
#define YES cout<<"YES"<<endl;
#define NO cout<<"NO"<<endl;
#define _ 0
#define inf 0x3f3f3f3f3f3f3f3f
#define fast ios::sync_with_stdio(false);cin.tie(nullptr);

void solve() {
    int n,C;cin>>n>>C;
    int f[C+1];
    memset(f,0,sizeof f);
    for(int i=1;i<=n;i++){
        int c,d,h;cin>>c>>d>>h;
        f[c]=max(f[c],d*h);
    }
    for(int i=1;i<=C;i++)
        for(int j=2*i;j<=C;j+=i)
            f[j]=max(f[j],f[i]*(j/i));
    for(int i=1;i<=C;i++)f[i]=max(f[i],f[i-1]);
    int m;cin>>m;
    while(m--){
        int D,H;cin>>D>>H;
        if(D*H>=f[C])cout<<-1<<Endl;
        else cout<<upper_bound(f,f+C,D*H)-f<<" ";
    }
}
signed main(){
    fast
    int T;T=1;
    while(T--) {
        solve();
    }
    return ~~(0^_^0);
}

标签:Educational,const,Gamers,int,Codeforces,125,define
From: https://www.cnblogs.com/ycllz/p/16633486.html

相关文章

  • Educational Codeforces Round 134 (Rated for Div. 2) A-C
    2A,C题wa2不知道为什么。B题少判一个条件:左上角A:题意有点不懂,到最后才知道是有多少种数,就输出这个种数-1即可intn,m;voidsolve(){//cin>>n>>m;chars[......
  • Educational Codeforces Round 134 (Rated for Div. 2)
    EducationalCodeforcesRound134(RatedforDiv.2)D.MaximumAND题目大意给出序列a,b,b可以任意排列,序列c有\(c_i=a_i\bigoplusb_i\)。c序列的价值为c1&c2&c33...&......
  • Codeforces Round #816 (Div. 2)/CodeForces1715
    CodeForces1715Crossmarket解析:题目大意有一个\(n\timesm\)的空间,Stanley需要从左上角到右下角;Megan则需要从左下角到右上角。两人可以耗费\(1\)能量到达相邻......
  • 学习随笔——codeforces题目Build Permutation解答
    摘要:本题属于构造算法,虽然简单但对思维提升有一定帮助题目原地址如下:https://codeforces.com/problemset/problem/1713/C题目截图如下:  关键词:构造算法,动态规划,*120......
  • Codeforces Round #813 (Div. 2) A - E2
    A:一组长度为n的排列,问交换多少次,能让前m个数变成[1,m]中的数输出前m个数中有多少个比m大的就可以了//-------------------------代码----------------------------......
  • codeforces round #815 (div.2) B. Interesting Sum
    一开始的想法是n^2时间暴力枚举片段的开头和结尾,但是时间肯定不行。所以干脆想办法缩减时间,用个priority_queue呀,甚至尝试着动态规划。但是很显然无论如何这种东西没法dp,完......
  • Codeforces Round #814 (Div. 2) A-D2
    A:ChipGame题意:只能向上走和向右走,走到右上角,最后一步谁操作谁就赢只要判断总步数的奇偶性就可以了//-------------------------代码----------------------------......
  • Codeforces Round #779 D
    D1我们先来看D1啊我最开始理解的就是一个翻转但是只在0开始时才是正确的这里就有一组hack1203他会输出0而不是3为啥???这样一想好像是正确的每次要是01数字不同......
  • Educational Codeforces Round 106 (Rated for Div. 2) | CF1499
    E一个暴力是显然的,\(f(i,j,k)\)表示当前已经使用\(a\)的前\(i\)位,\(b\)的前\(j\)位,最后一位是\(a\)还是\(b\)的。然后\(O(n^2)\)枚举起点跑下去即可。为啥......
  • Codeforces Round #770 (Div. 2)
    CodeforcesRound#770(Div.2)VPABCDE7min30min63min131min+2+2排名:rk485基准分:\(\color{Purple}{1967}\)A\(\color{Gray}{800}\)CF1......