首页 > 其他分享 >2023 (ICPC) Jiangxi Provincial Contest -- Official Contest

2023 (ICPC) Jiangxi Provincial Contest -- Official Contest

时间:2023-05-24 23:34:39浏览次数:59  
标签:Provincial typedef Contest -- cin long int op

2023 (ICPC) Jiangxi Provincial Contest -- Official Contest

 A - Drill Wood to Make Fire

思路:n>=s*v

B - Wonderful Array

思路:对a进行a%m,不会对结果造成影响,则0<=bi+1-bi<m。可以求bi+1%m<bi%m的个数,等价于bi+1/m>bi/m,整体来看,就是求bn/m

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,Mod=1e9+7;

const double eps=1e-6;
typedef long long ll;
#define int long long


int k,n,m,x,ans=0;
int a[N],b[N],all=0;
void solve(){
    cin>>k;
    for(int i=1;i<=k;++i){
        cin>>a[i];
    }
    cin>>n>>m>>x;x%=m;
    for(int i=1;i<=k;++i){
        a[i]%=m;
        all+=a[i];
    }
    int c=ceil(1.0*n/k)-1,s=n-c*k;
    b[1]=x+c*all+a[1];
    for(int i=2;i<=s;++i){
        b[i]=a[i]+b[i-1];
    }
    ans=n-(b[s]/m);
    cout<<ans;
}
int32_t main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

I - Tree

思路:用f[i]维护所有到i点的边的边权异或和,对于修改操作x→y,可以看出x→y中除了x和y以外的点的f不变,修改x和y点的f即可

#include<bits/stdc++.h>
using namespace std;
int f[500005];
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int n,k;
    cin>>n>>k;
    for (int i = 0; i < n-1; ++i) {
        int x,y,z;
        cin>>x>>y>>z;
        f[x]^=z;
        f[y]^=z;
    }
    while(k--){
        int op;
        cin>>op;
        if(op==2){
            int x;
            cin>>x;
            cout<<f[x]<<'\n';
        }
        else{
            int x,y,z;
            cin>>x>>y>>z;
            f[x]^=z,f[y]^=z;
        }
    }
}
View Code

 

J - Function

思路:由于a,b小于等于n,当询问x=c时,经过x=c的函数f在x=c±√n范围内,枚举每一个范围内的f即可(当y=n,b=1(极限)时,n=(x-a)2+1,可知x在±√n内的函数可达到x=a;对于增加操作,由于询问只求最小的函数值,维护每个a(x)的最小b即可

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,Mod=1e9+7;

const double eps=1e-6;
typedef long long ll;
//#define int long long


int n,c[N];
void solve(){
    cin>>n;
    for(int i=1;i<=n;++i)cin>>c[i];
    int m;
    cin>>m;
    int s= ::sqrt(1.0*n);
    while(m--){
        int op,a,b;
        cin>>op;
        if(op){
            cin>>a;
            int ans=INF;
            for(int i=0;i<=s;++i){
                int l=a-i,r=a+i;
                if(l>0&&c[l])ans=min(ans,(a-l)*(a-l)+c[l]);
                if(r<=n&&c[r])ans=min(ans,(a-r)*(a-r)+c[r]);
            }
            cout<<ans<<'\n';
        }
        else{
            cin>>a>>b;
            c[a]=min(c[a],b);
        }
    }
}
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

K - Split

思路:序列是不递增的,分成k段,每个分段点i对答案的贡献为a[i+1]-a[i],那么求出差分,找出前k-1个即可

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,Mod=1e9+7;

const double eps=1e-6;
typedef long long ll;
//#define int long long


int n,a[N],b[N];
void solve(){

    cin>>n;
    for(int i=0;i<n;++i){
        cin>>a[i];
        if(i)b[i]=a[i]-a[i-1];
    }
    sort(b+1,b+n);
    for(int i=1;i<n;++i){
        b[i]+=b[i-1];//cout<<b[i]<<' ';
    }//cout<<'\n';
    int m;
    cin>>m;
    while(m--){
        int op,x;
        cin>>op>>x;
        if(op==1){
            cout<<a[0]-a[n-1]+b[x-1]<<'\n';
        }
    }
}
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

L - Zhang Fei Threading Needles - Thick with Fine

思路:n-1

标签:Provincial,typedef,Contest,--,cin,long,int,op
From: https://www.cnblogs.com/bible-/p/17428449.html

相关文章

  • 【Java基础】map的遍历方式和map.forEach的使用
    Map的遍历方式常用的有两种,分为传统的map遍历方式和JDK1.8新的遍历方式,下面代码可以明显的看出其中的区别,话不多说,直接上代码,并执行结果,瞬间就能知道使用方式和对比结果了。importjava.util.HashMap;importjava.util.Map;/***<p>TestController此类用于:</p>*<p>@auth......
  • 源代码管理工具:Github的基本使用介绍
    前言:GitHub是目前最受欢迎的代码托管平台之一,它提供了强大的工具和功能,方便开发者进行版本控制、协作开发和项目管理。本篇博客将向大家简单地介绍如何使用GitHub,也许能够帮助你托管代码、协作开发并充分利用GitHub的强大功能。若有介绍不恰当或需要补充的地方,欢迎评论探讨......
  • 【ElasticSearch】关于es跨域的问题
    本文目录一、使用es的head插件二、其他说明一、使用es的head插件在使用es的head插件时,默认的9100,需要访问es的默认端口9200时,会出现跨域问题,此时只需要修改一下es的配置文件即可。在elasticsearch.yml中添加开启跨域的配置:http.cors.enabled:truehttp.cors.allow-origin:"*"说明......
  • 主要功能实现-项目报告
    主要功能基本完成,以下为今日努力成功。一:实现了调用相册,将地址提取二:实现了图片提取加分类三:实现了添加后更新四:结果展示五:项目问题以及可能出现bug一:实现了调用相册,将地址提取具体更改的这个方法:完整代码来自《第一行代码》调用相册和使用相机。更改后调用的相册可以将照......
  • mysql is neither service nor target!?(suse12 sp5)
    今天想在自己的Suse虚拟机上安装mysql,安装好了并且初始化之后,一直无法启动mysql.cp/data/mysql/support-files/mysql.server/etc/init.d/mysqldchmod+x/etc/init.d/mysqldchkconfig--level35mysqldonchkconfig--addmysqldchkconfig--list1.servicemysqlstart;......
  • 方法的重载、构造器,封装、静态非静态方法
    静态非静态方法如果两个都是静态方法可以直接互相调用,否则无法调用非静态(无static关键字)方法如果方法为非静态,调用时无法直接用student.get();要先实例化一个对象在用.方法方法的重载多个方法可以重名,调用时会自动重载,检查方法名以及对应的参数判断具体使用的是哪一个方法......
  • 【异常】Failed to bind properties under ‘logging.level‘ to java.util.Map<java.l
    本文目录一、背景描述二、问题原因原因1:缺少层级原因2:标点符号使用错误三、解决方案方案一:针对原因1方案二:针对原因2一、背景描述项目技术:springboot2.1.5.RELEASE+logback1.2.3项目启动报错:org.springframework.boot.context.properties.bind.BindException:Failedtobindp......
  • webpack-loader打包处理less文件
    打包处理less文件运行npmiless-loaderless-D命令在webpack.config.js的module->rules数组中,添加loader规则如下:module:{rules:[//定义了不同模块对应的loader{test:/\.css$/,use:['style-loader','css-loader']},//处理.less文......
  • 【Redis】自定义RedisTemplate模板,拿来直接使用
    以下是自定义RedisTemplate固定模板,拿来可以直接使用:packagecom.iot.back.message.process.config;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importcom.fasterxml.jackson.annotation.PropertyAccessor;importcom.fasterxml.jackson.databind.ObjectMappe......
  • JDK 安装下载与环境配置
    1.JDK下载地址 https://www.oracle.com/java/technologies/downloads/,下载dmg包到本地,双击安装包进行安装即可。2.打开终端,输入命令: java-version ,若出现下图,说明安装成功了。3.查看jdk安装的路径,输入命令: /usr/libexec/java_home-V查到文件安装路径为:/Library/Ja......