首页 > 其他分享 >Codeforces Round #763 (Div. 2)C

Codeforces Round #763 (Div. 2)C

时间:2023-01-12 20:45:08浏览次数:77  
标签:int 763 Codeforces mid Div check

Codeforces Round #763 (Div. 2)C

这个D实在是不会,只能先补了C

C

C

这个题是我们可以选择从3到n

我们可以选择一个d(d>=0&&d<=ai/3),可以把2d给ai-2,那么ai-2+=2d,把d给ai-1,ai-1+=d,我们要找到实现n-2个操作后这些ai中的最小值的最大

对于最小值的最大化这一类问题,我们可以尝试用二分的方式来求解

对于这一题的check

我们可以通过判断x的情况是否符合条件

对于每一个d,我们可以通过贪心来求

ai的最大的一个d为ai/3,最小的为变化了的bi(加上它前面的对它的影响后的值)还需要预留出x,因为我们要保证最小的那一个数一定是x,所以我们需要从后往前遍历

我们最后来判断,如果存在一个数比此时我们给出的最小值x还要小,那么这一个就不符合条件了,return false

#include <iostream>
#include <vector>
using namespace std;
const int maxn=2e5+10;
#define int long long 
int n,t,k;
vector<int>a;
bool check(int x)
{
    vector<int>b=a;
    for (int i=n;i>=3;i--)
    {
        int d=min(a[i]/3,(b[i]-x)/3);
        b[i-2]+=2*d;
        b[i-1]+=d;
    }
    for (int i=1;i<=n;i++)
    {
        if (b[i]<x) return false;
    }
    return true;
}
void solve()
{
    cin>>n;
    a=vector<int>(n+1,0);
    int l=0,r=1e9+10;
    for (int i=1;i<=n;i++)
    {
        cin>>a[i];
        l=min(l,a[i]);
    }
    int mid,ans;
    while (l<=r)
    {
        mid=(l+r)>>1;
        if (check(mid))
        {
            ans=mid;
            l=mid+1;
        }
        else r=mid-1;
    }
    cout<<ans<<'\n';
    return ;
}
signed main ()
{
    cin>>t;
    while (t--)
    {
        solve();
    }
    system ("pause");
    return 0;
}

标签:int,763,Codeforces,mid,Div,check
From: https://www.cnblogs.com/righting/p/17047878.html

相关文章

  • CodeForces 1733E Conveyor
    洛谷传送门CodeForces传送门考虑差分,如果\(t-1\)时刻经过\((x,y)\)的史莱姆个数等于\(t\)时刻经过\((x,y)\)的史莱姆个数,答案为NO,否则为YES。发现两只史莱姆......
  • UVA10256 The Great Divide
    洛谷传送门UVA传送门考虑对两个点集求出凸包,显然如果这两个凸包相离就合法,然后问题就转化成了这两个凸包是否有交。设红点凸包包围的点集为\(A\),蓝点凸包包围的点集为......
  • 视频直播APP源码,通过css控制div内容展开更多/收起效果
    视频直播APP源码,通过css控制div内容展开更多/收起效果一.实现思路1.需要设置一个变量控制展开/收起效果2.提前写好最高高度的class样式,超出这个高度多余内容会隐藏......
  • Codeforces Round #843 (Div. 2)(B,C,D,E)
    CodeforcesRound#843(Div.2)(B,C,D,E)23年的第一场比赛(现场的),结果还是只是做出了两个题B想起这道题就好笑,我又又又看错题了,这个题里面讲的一直是或,我在比赛全程都以为是......
  • Codeforces Round #843 (Div. 2)ACE 补D
    A.GardenerandtheCapybaras题意:给定一个由ab串,将该字符串拆分成3个部分,使中间部分的字典序最大或者最小。分析:考虑简单的最小情况:中间只有一个a,两边总会\(......
  • Codeforces Edu Round 106 Div2
    解题A.DominoonWindowsill这个题给一个2xn的方格,一个行有k1个白块,第二行有k2个白块,那么现在有w个2x1的白块和b个2x1黑块,白对白,黑对黑,问能不能全放下这个就是判断下白......
  • 818 Div 2.F. Madoka and The First Session
    Problem-F-Codeforces818Div2.F.MadokaandTheFirstSession思路:不妨转化一下题意:将条件转化为:\(b_v+1,b_v+1\),然后使得其中一个-2那么在\(a\)上就是使\(a_......
  • [Codeforces Round #822 (Div. 2)](https://codeforces.com/contest/1734)
    CodeforcesRound#822(Div.2)ProblemF.ZerosandOnes解法定义:\(f(x)\)为在\(S\)串中位置为\(x\)的值。显然\(f(x)\in0,1\)有一重要性质:若\(f(x)\)为1,那么二进制......
  • Codeforces Round #843 (Div. 2)
    Preface难得的7点场CF,结果反而遇上了我最困的时候(吃完晚饭血糖上来就贼困,我一般反而凌晨场比较清醒)但是这场表现还可以,写的题基本都是一发入魂而且速度也比较快比较可惜......
  • 【Codeforces 173B】 B. Chamber of Secrets
    【Codeforces173B】B.ChamberofSecretshttps://codeforces.com/problemset/problem/173/B题意+分析来自\(OI-wiki\)这题主要难度就是读题...还有注意初始方向......