zoukankan      html  css  js  c++  java
  • 2019HDU多校第7场——构造

    题意

    假设现在你在准备考试,明天的考试有 $n$ 道题目,对于分值为 $i$ 的题目至少复习 $i+1$ 小时才能做对,已知总分为$m$,求确保完成 $k$ 道题的最少时间。

    分析

    手动尝试一下,发现答案都是 $aabbbb$ 这样的形式。例如,

    $5 18 3 Rightarrow 6 6 7 7 7,$

    $5 19 3 Rightarrow 6 7 7 7 7,$

    $5 20 3 Rightarrow 7 7 7 7 7,$

    即用前面小的去消耗 $m$,剩下的 $k$ 确保能做对。

    构造:先使前 $n-k+1$ 消耗 $m+1$,取前面的最大值填充后 $k-1$ 个。

    注意开long long!!!

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    ll n, m ,k;
    
    int main()
    {
        int T;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%lld%lld%lld", &n, &m, &k);
            int tmp = (m+1) / (n-k+1);
            if((m+1 - tmp * (n-k+1))) tmp++;
            printf("%lld
    ", (m+1) + tmp*(k-1));
        }
        return 0;
    }
  • 相关阅读:
    java 多线程4: java线程的优先级
    Thread.currentThread().getName() ,对象实例.getName() 和 this.getName()区别
    go http
    go redis
    go tcp
    go 单元测试
    go 定时器
    go channel
    go goroutine
    go 错误处理
  • 原文地址:https://www.cnblogs.com/lfri/p/11343348.html
Copyright © 2011-2022 走看看