首页 > 其他分享 >codeforces div3 935

codeforces div3 935

时间:2024-03-24 18:23:24浏览次数:20  
标签:const int codeforces long ans include div3 935 define

Problem - E - Codeforces

题解:一道二分糖题

首先我们先在原序列跑一遍题目给的二分,然后跑出最后的l点

我们稍微思考一下,这个l这个点一定小于或者等于x

为什么呢一个在这个二分里,如果最后的点是大于x的那么必定被r拿走,因为判断上l只能接收比x小的地点

所以我们知道l以后,要么就是l==x输出0

要么一次把x原先位置换到l位置即可,然后x原先是判断点那么它的结果必定小于等于x。  现在我把l这个小于等于x换过去一样的

#include <bits/stdc++.h>
//#pragma GCC optimize("Ofast")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
//#define double long double
#define int long long
#define endl '\n'
using namespace std;
const int N=2e5+10,M=1e1;
const int INF = 0x3f3f3f3f;
const int mod=1e9+7;
typedef pair<int,int> PII;
int kmp(int a,int k,int p)
{
    int ans=1;
    while (k)
    {
        if(k&1) ans=ans*a%p;
        k>>=1;
        a=a*a;
    }
    return ans;
}

int a[N];
void solve()
{
    int n,x;
    cin>>n>>x;
    int id=0;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(a[i]==x) id=i;
    }
    int ans;
    int l=1,r=n+1;
    while (r-l!=1)
    {
        int mid=(l+r)/2;
        if(a[mid]<=x) l=mid;
        else r=mid;
    }
    ans=l;
    if(a[ans]==x)
    {
        cout<<0<<endl;
    }
    else {
        cout << 1 << endl;
        cout << ans << " " << id << endl;
    }
}
signed main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int T=1;
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}

 

标签:const,int,codeforces,long,ans,include,div3,935,define
From: https://www.cnblogs.com/whatdo/p/18092763

相关文章

  • codeforces div_2 936 题解报告
    codeforcesdiv_2936题解报告比赛链接:https://codeforces.com/contest/1946A.MedianofanArray做法tag:签到题目翻译给定一个长度为\(n\)的数组\(a\),记数组中非降序排列中第\({\lceil\fracn2\rceil}\)个数是数组a的中位数。我们可以以下操作。选择一个数\(i\in[......
  • Codeforces Round 936 (Div. 2) D
    AB没什么好说的C二分答案,写的还是不够快,但是也很好了。D的问题有点大。我好像一直有一个不对的贪心再用,对于二进制的。就是我会觉得一堆树或起来小于一个数字,这种限制是每个数字都小于那个数字就可以了。但是实际上这就是一个很明显错误的贪心。然后另一个反映就是,对于二进......
  • Codeforces Round 936 (Div. 2)
    CodeforcesRound936(Div.2) A.MedianofanArray题意:给一串数字,每次操作可以将一个数字+1,求最少多少次操作使得数组中位数增加思路:分奇偶讨论:1:如果是奇数的话看中间的数字,如果中间的数字只出现过一次,那么次数就是1,否则看从中间位到右边最后出现这个数字的地方看这个数......
  • 每日一题 第二十六期 Codeforces Round 936 (Div. 2)
    A.MedianofanArraytimelimitpertest:1secondmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputYouaregivenanarrayaa......
  • 每日一题 第二十七期 Codeforces Round 936 (Div. 2)
    B.MaximumSumtimelimitpertest:1secondmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputYouhaveanarrayaaaof......
  • Codeforces Round 935 (Div. 3)
    A-SettingupCamp思路:判断c能否填充b让b为3的倍数查看代码voidsolve(){inta,b,c;cin>>a>>b>>c;intans=a+b/3;b%=3;if(b>0&&b+c<3)cout<<-1<<'\n';else{ans+=(b+c+2)/3;c......
  • cfRound935div3--DEFG题解
    ps:这场因为精神状态不佳,又C题题意有点绕,卡题了,头晕找不到错.最后做了两题就溜了.狠狠扣90分..D-SeraphimtheOwl题意:即选一个位置,使得其满足题意。而且在满足题意的基础上,要靠近中心越好,如果满足题意而且靠近中心的距离一样,那么输出前面那个.intcnt0[300005]={0};......
  • CF1920 Codeforces Round 919 (Div. 2)
    B.SummationGame给你\(n\)个数(均大于0),Alice先执行一次删除不超过\(k\)个数,Bob再执行一次把最多\(x\)个数变成相反数.问最后数组的最大和是多少?这题本来是想先让Alice删除\(k\)个数,但显然不太容易得到最优解,因为还有可能撤回Alice的删除操作,再加上Bob的操作.......
  • Codeforces Round 935 (Div. 3)
    A.SettingupCamp#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;voidsolve(){inta,b,c;cin>>a>>b>>c;intres=a+b/3;b%=3;if(b!=0){if(c<3-b){......
  • 1943+1944.Codeforces Round 934 (Div. 1,Div. 2) - sol
    20240321终于差不多把Div1补完了(F当然没补),第一次打Div1,还是出了一些小状况的。唉。没有补Div1F的逆天题,选择放弃。Dashboard-CodeforcesRound934(Div.2)-CodeforcesDashboard-CodeforcesRound934(Div.1)-Codeforces2A.DestroyingBridgesThere......