首页 > 其他分享 >hey_left 11 Codeforces Round 859 (Div. 4)

hey_left 11 Codeforces Round 859 (Div. 4)

时间:2024-01-21 14:34:13浏览次数:31  
标签:11 pre int hey 859 -- solve left

题目链接

A.

直接判断输出

#include <bits/stdc++.h>
using namespace std;

void solve(){
    int a,b,c;cin>>a>>b>>c;
    if(a+b==c)cout<<'+'<<'\n';
    else if(a-b==c)cout<<"-"<<'\n';
}

signed main(){
    int hey_left=1;
    cin>>hey_left;
    while(hey_left--){
        solve();
    }
}

B.

把偶数全部放前面
再维护偶数和与奇数和
遍历所有数,是偶数就+到偶数和,是奇数就加到奇数和,若某一个时刻奇数和大等于偶数和了,就是no

#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n;cin>>n;
    vector<int>a(n+1);
    for(int i=1;i<=n;i++)cin>>a[i];
    vector<int>ou,ji;
    for(int i=1;i<=n;i++){
        if(a[i]%2==0)ou.push_back(a[i]);
        else ji.push_back(a[i]);
    }
    for(int i=0;i<ji.size();i++){
        ou.push_back(ji[i]);
    }
    int sum_ou=0,sum_ji=0;
    bool f=0;
    for(int i=0;i<ou.size();i++){
        if(ou[i]%2==0)sum_ou+=ou[i];
        else sum_ji+=ou[i];
        if(sum_ji>=sum_ou){
            f=1;break;
        }
    }
    if(f)cout<<"NO"<<'\n';
    else cout<<"YES"<<'\n';
}

signed main(){
    int hey_left=1;
    cin>>hey_left;
    while(hey_left--){
        solve();
    }
}

C.

直接按题意模拟
需要注意的是,mp[]=0相当于没标记
这里换成1和2即可

#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n;cin>>n;
    string s;cin>>s;
    map<char,int>mp;
    mp[s[0]]=1;
   // cout<<"s[0]="<<s[0]<<' '<<"mp[]="<<mp[s[0]]<<'\n';
    bool f=0;
    for(int i=1;i<s.size();i++){
        if(s[i]==s[i-1]){
            f=1;
            break;
        }
        if(mp[s[i]]){
            if(mp[s[i-1]]==mp[s[i]]){
                f=1;
                break;
            }
        }else {
            if(mp[s[i-1]]==1)mp[s[i]]=2;
            else if(mp[s[i-1]]==2)mp[s[i]]=1;
        }
        //cout<<"s[i]="<<s[i]<<' '<<"mp[]="<<mp[s[i]]<<'\n';
    }
    if(f)cout<<"NO"<<'\n';
    else cout<<"YES"<<'\n';
}

signed main(){
    int hey_left=1;
    cin>>hey_left;
    while(hey_left--){
        solve();
    }
}

D.

记录下前缀和与后缀和,再加上改变的和
判奇偶性

#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n,q;cin>>n>>q;
    vector<int>a(n+1),pre(n+5),post(n+5);
    for(int i=1;i<=n;i++){
        cin>>a[i];
        pre[i]=pre[i-1]+a[i];
    }
    for(int i=n;i>=1;i--)post[i]=post[i+1]+a[i];
    while(q--){
        int l,r,k;cin>>l>>r>>k;
        int sum=0;
        sum+=pre[l-1]+post[r+1]+(r-l+1)*k;
        if(sum&1){
            cout<<"YES"<<'\n';
        }else cout<<"NO"<<'\n';
    }
}

signed main(){
    int hey_left=1;
    cin>>hey_left;
    while(hey_left--){
        solve();
    }
}

E.

二分特殊石头所在的区间
注意要特判边界,详情见代码

#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n;cin>>n;
    vector<int>a(n+1),pre(n+1);
    for(int i=1;i<=n;i++){
        cin>>a[i];
        pre[i]=pre[i-1]+a[i];
    }
    int l=1,r=n,mid;
    while(l<=r){
        mid=(l+r)/2;
        cout<<"? "<<(mid-l+1)<<' ';
        for(int i=l;i<=mid;i++){
            cout<<i;
            if(i==mid)cout<<endl;
            else cout<<' ';
        }
        int x;cin>>x;
        if(x==pre[mid]-pre[l-1])l=mid+1;
        else {
            cout<<"? "<<1<<' '<<mid<<endl;
            cin>>x;
            if(x==a[mid])r=mid-1;
            else {
                cout<<"! "<<mid<<endl;
                return ;
            }
        }
    }
    cout<<"! "<<r<<endl;
}

signed main(){
    int hey_left=1;
    cin>>hey_left;
    while(hey_left--){
        solve();
    }
}

标签:11,pre,int,hey,859,--,solve,left
From: https://www.cnblogs.com/wwww-/p/17976476

相关文章

  • 寒假学习(11)
    今天我计划学习一些基本函数的功能及它们的使用方法,由于网上大多没有汇总,碰巧又赶上最近学的数据处理,所以我根据需要自己整理了几个可能会用到的关于数据的函数。Python内置函数:len():用于获取对象的长度或元素个数。string="hello"length=len(string)print(length)......
  • AI Weekly『1月15-21日』: OpenAI筹集资金建造AI芯片工厂;马斯克加码AI投资,共投入110亿
    AI领域本周『1月15-21日』要闻速览OpenAI首席执行官SamAltman计划筹集数十亿美元建立全球性AI芯片工厂网络,应对未来AI相关芯片的需求激增。埃隆·马斯克和SamAltman共投入110亿美元加码AI投资,展现对AI领域的重视和竞争态势。微软推出CopilotPro及Copilot移动应用,扩展至各规模企......
  • floyd 算法——P1119 灾后重建
    floyd算法是图论中较为简单的最短路算法,但在某些方面远超最短路范围。算法思路定义\(f[x][y]\)为\(x\)到\(y\)节点的最短路径。初始化:若存在边\((x,y)\)则\(f[x][y]\)等于边长度;若不存在,为\(+\infty\)。特别的,\(f[x][x]=0\)。我们考虑一下,\(x,y\)这两个节点通......
  • (坚持每天写算法)算法复习与学习part1基础算法part1-11——差分
    差分和前缀和是有联系的。首先给定一个原数组a:a[1],a[2],a[3],,,,,,a[n];然后我们构造一个数组b:b[1],b[2],b[3],,,,,,b[i];使得a[i]=b[1]+b[2]+b[3]+,,,,,,+b[i]也就是说,a数组是b数组的前缀和数组,反过来我们把b数组叫做a数组的差分数......
  • 《Java 核心技术·卷 II(原书第 11 版):高级特性》PDF
    内容简介本书针对Java11进行了修订,涵盖了完整的对高级UI特性、企业编程、网络、安全和Java强大的模块系统等内容的讨论。书中对Java复杂的新特性进行了深入而全面的研究,展示了如何使用它们来构建具有专业品质的应用程序,作者所设计的经过全面完整测试的示例反映了当今的Ja......
  • P7114 [NOIP2020] 字符串匹配
    Link:https://www.luogu.com.cn/problem/P7114知识点:枚举,结论,Z函数,哈希唉,三年了,三年!!!简述\(T\)组数据,每组数据给定仅由小写字母组成的字符串\(s\),求\(t={(AB)}^iC\)的方案数,其中\(F(A)\leF(C)\),其中\(F(t)\)表示字符串\(t\)中出现奇数次的字符的数量。两种方案不......
  • 11-Linux用户组管理相关
    cat/etc/group:查看创建了哪些组[root@192home]#cat/etc/group...atguigu:x:1000:atguiguxiaoming:x:1001:#之前添加的没有指定组的用户,默认都创建了一个组,这个组里只有这一个用户groupadd:添加一个用户组 [root@192home]#groupaddtester#创建一个tester组[......
  • 大三寒假学习进度笔记11
    今日对之前学习的pyspark内容进行了梳理,同时尝试了通过SparkSQL的JDBC方式从mysql读取数据和写入数据#coding:utf8frompyspark.sqlimportSparkSessionfrompyspark.sql.typesimportStructType,StringType,IntegerTypeimportpandasaspdif__name__=='__main__......
  • 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.0版已发布
    关于MobileIMSDKMobileIMSDK是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、小程序、Uniapp、标准Java平台,服务端基于Netty编写。工程开源地址是:1)Gitee码云地址:https://gitee.com/ja......
  • 1.20寒假每日总结11
    学习执行计划。简单的解释为:explainquery;一个简单的例子为:explainselectsum(id)fromtest1;该语句的执行计划为:STAGEDEPENDENCIES:Stage-1isarootstageStage-0dependsonstages:Stage-1STAGEPLANS:Stage:Stage-1MapReduceMap......