首页 > 其他分享 >[Codeforces] CF1760F Quests

[Codeforces] CF1760F Quests

时间:2023-12-16 18:22:24浏览次数:35  
标签:CF1760F int Codeforces 任务 Maxn Quests now

CF1760F Quests

题意

有 \(n\) 个任务,你每一天都可以选择其中的一个任务完成或不选。当你完成了第 \(i\) 个任务,你将获得 \(a_i\) 元。但是如果你今天完成了一个任务,那么你之后 \(k\) 天内都不能再完成这个任务。

给出两个数 \(c\),\(d\),要求求出满足在 \(d\) 天内可以收集至少 \(c\) 元的最大的 \(k\)。

如果不存在这样的\(k\)或者\(k\)可以无限大,输出ImpossibleInfinity

思路

很明显的二分,二分\(k\)即可

每次都尽量安排获得钱多的任务,以\(k\)为一周期,多余的再从大到小安排

这道题我用了前缀和优化,但是似乎不用也可以

注意,在check时要注意如果当前的枚举到的\(k>n\),那么也只能操作到第\(n\)个任务,而没有更多

而如果将前\(min(d,n)\)大的任务做完一次后,钱已经比\(c\)多,那么就是\(k\)就是无限大

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int Maxn=2e5+10;
int n,c,d,ans;
int a[Maxn],f[Maxn];
bool check(int x)
{
    int now=f[min(x+1,n)]*(d/(x+1));
    now+=f[min(n,d-((d/(x+1))*(x+1)))];
    return now>=c;
}
void run()
{
    cin>>n>>c>>d;ans=-1;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+n+1,greater<int>());
    for(int i=1;i<=n;i++) f[i]=f[i-1]+a[i];
    if(f[min(n,d)]>=c)
    {
        cout<<"Infinity"<<endl;
        return;
    }
    int l,r,mid;
    l=0,r=d;
    while(l<=r)
    {
        mid=(l+r)>>1;
        // cout<<l<<" "<<r<<" "<<mid<<endl;
        if(check(mid)) ans=mid,l=mid+1;
        else r=mid-1;
    }
    if(ans!=-1) cout<<ans<<endl;
    else cout<<"Impossible"<<endl;
}
signed main()
{
    int t;
    cin>>t;
    while(t--) run();
}

标签:CF1760F,int,Codeforces,任务,Maxn,Quests,now
From: https://www.cnblogs.com/lyk2010/p/17905143.html

相关文章

  • [Codeforces] CF1744E1 Divisible Numbers (easy version)
    CF1744E1DivisibleNumbers(easyversion)题意给你四个数\(a,b,c,d\),你需要找出一组\(x,y\)使得\(a<x\leqc,b<y\leqd\)并且\(x\cdoty\)能被\(a\cdotb\)整除,如果没有输出-1-1。思路最暴力的思路肯定是枚举,更肯定的一点是会TLE但是注意到,如果\(x\)一定,那么他......
  • [Codeforces] CF1740D Knowledge Cards
    CF1740DKnowledgeCards题意有一个\(n\timesm\)的棋盘。现在\((1,1)\)中有一个栈,你可以按照一定的顺序进行出栈操作,每次都可以移动一个卡片到一个相邻的空白位置,但是卡片不能重合。问,能否通过若干次操作,将\((1,1)\)中全部的卡片移动到\((n,m)\)的栈中并使得这个栈按照从栈......
  • [Codeforces] CF1722G Even-Odd XOR
    CF1722GEven-OddXOR题意给定一个正整数\(n\),请你找出一个长度为\(n\)数组\(a\),满足数组是由互不相同的非负且小于\(2^{31}\)的整数组成,并且该数组中奇数项上元素的异或值与偶数项上元素的异或值要相等。思路根据异或的交换律,可以发现:奇偶位异或值相等,那么全局异或值位......
  • CodeForces 838D Airplane Arrangements
    洛谷传送门CF传送门考虑加入第\(n+1\)个位置,这样座位构成了一个环。每个位置被覆盖的概率相等,为\(\frac{m}{n+1}\),然后算出概率再乘方案数就行了。code//Problem:D.AirplaneArrangements//Contest:Codeforces-IndiaHacks2ndElimination2017(unofficial,......
  • Codeforces Round 787 (Div. 3)D. Vertical Paths
    题目链接题意:给定一棵树,将这棵树划分成几天互不相交的链,要求最小化链的数量思路:每个叶子节点一定在一条链中,所以链的数量就是叶子节点的数量,从叶子节点往上跳直到根节点,边跳边标记,路径上所有点都属于这条链。坑:数据大时,不要轻易使用memset不然会t到起飞vector不要开太多就比......
  • Codeforces Round 814 (Div. 2)
    基本情况又是过了ABC。A、B思路更多的是从数据上分析出来的,过的很顺。C经典拿评测机来调试,甚至还RE了一次,最后终于过了。C.FightingTournamentProblem-C-Codeforces第一次改错这题我的思路是找到规律后,优先队列加二分查找。但是一直WA第二个点,这是我一开始的代码:......
  • Codeforces Round 812 (Div. 2)
    基本情况第一次赛时做出div2的ABC。然而B题是秒的最快的?A题卡了一段时间经典+4,C题代码实现卡了一段时间。A.TravelingSalesmanProblemProblem-A-Codeforces卡题分析主要原因在少了特判,没有自己多构造几个特殊情况数据。这是一开始的代码voidsolve(){ intn,......
  • Codeforces Round 810 (Div. 2)
    基本情况A题秒了,B、C题死活看不懂题目。B.PartyProblem-B-Codeforces错误分析为啥看不懂题目,一方面是英语水平确实不够,另一方面就是图的意识不行,如果能看出来这题隐含的建图思想,就很有助于理解题目。正确思路题意有\(T\)组数据,每组数据给你一组\(n,m\)表示共......
  • [Codeforces] CF1737C Ela and Crickets
    CF1737CElaandCrickets题意给定一个\(n\timesn\)的棋盘,棋盘上有且仅有三颗排成\(\text{L}\)形的棋子。对于\(\text{L}\)形的定义,有且仅有以下四种情况:棋子的移动规则和跳棋相同。它可以水平、垂直或斜向移动。当且仅当一个棋子的某个方向紧随另一个棋子时,它能跳......
  • 深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现
     网络和Web开发是Python中不可或缺的重要领域,而其核心模块如urllib、requests和http在处理网络请求、HTTP请求和响应以及Web开发中扮演着关键的角色。这些模块为开发者提供了丰富的工具,使其能够灵活处理网络通信、构建Web应用和与远程服务器进行交互。深入了解这些模块的用法和作......