2023 (ICPC) Jiangxi Provincial Contest -- Official Contest

news2024/11/29 10:53:08

A. Drill Wood to Make Fire

 输出S*V\geq N即可

#include<bits/stdc++.h>
#define int long long
#define x first
#define y second
using namespace std;
const int N=1100;
typedef pair<int,int>pii;

int m,n;
int a[N][N];

void solve()
{
    int s,v,n;
    cin>>n>>s>>v;
    if(s*v>=n)
    cout<<1<<endl;
    else cout<<0<<endl;
}
signed main()
{
    ios::sync_with_stdio(false);
    int t=1;cin>>t;
    while(t--)solve();
    return 0;
}

I. Tree

题意:给你一颗有N个节点的树,你有两个操作

第一个操作:将xy之间的边权w\bigoplus z

第二个操作输出与x直接相连的边的异或和

思路:因为异或是不进位加法,所以我们可以直接将树上每一条直接相连的边的异或值保存下来

然后需要修改的时候就可以直接修改

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
typedef pair<int,int>pii;
int n,q;

void solve()
{
    int a[N];
    scanf("%d%d",&n,&q);
    for(int i=1;i<=n;i++)a[i]=0;
    for(int i=1;i<n;i++)
    {
        int x,y,w;
        scanf("%d%d%d",&x,&y,&w);
        a[x]^=w;
        a[y]^=w;
    }
    while(q--)
    {
        int op;
        scanf("%d",&op);
        if(op==1)
        {
            int x,y,z;
            scanf("%d%d%d",&x,&y,&z);
            a[x]^=z;
            a[y]^=z;
        }
        else
        {
            int x;
            scanf("%d",&x);
            printf("%d\n",a[x]);
        }
    }

}

int main()
{
    int t=1;
    while(t--)solve();
    return 0;
}

J. Function

题意:给你n形如(x-i)^2+b{_{i}}的二次函数,有两个操作

一个操作是增加一个二次函数(x-a)^2+b

另一个是查询当x=a的时候函数值最小是多少

思路:因为是二次函数我们假设b{_{i}}是固定的我们就可以观察出,只要让(x-i)^2=n

就可以发现最小值就可能在^{\sqrt{n}}附近,所以我们只要查询^{\sqrt{n}}附近的函数值即可

代码:

#include<bits/stdc++.h>
#define int long long
#define x first
#define y second
using namespace std;
const int N=110000;
typedef pair<int,int>pii;

int m,n;
int v[N];
void solve()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    cin>>m;
    int t=  ::sqrt(1.0*n);
    while(m--)
    {
        int op;
        cin>>op;
        if(op)
        {
            int a;
            cin>>a;
            int minv=0x3f3f3f3f;
           for(int i=a-sqrt(n);i<=a+sqrt(n)+1;i++)
           {
               if(i>=0&&i<=n&&v[i])minv=min(minv,(i-a)*(i-a)+v[i]);
           }
            cout<<minv<<endl;
        }
        else
        {
            int a,b;
            cin>>a>>b;
            if(v[a])
            v[a]=min(v[a],b);
            else v[a]=b;
        }
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    int t=1;//cin>>t;
    while(t--)solve();
    return 0;
}

K. Split

题意:给你一个非递增加序列a,有两种操作

第一个操作,给你一个1<x<n,使得a{_{x}}=a{_{x-1}}+a{_{x+1}}-a{_{x}}

第二个操作,将序列分成k个小块,其中每个小块的最大值-最小值之和要最小,并且输出每个小块中最大值-最小值之和最小值

思路:

首先看操作2,由于是递减序列每个块中的最小值都是分界线的左边,而分界线的右边就是下一个块中最大值,换句话说,如果有k个块那么我们可以写成a{_{1}}-a{_{i}}+a{_{i+1}}-a{_{j}}+a{_{j+1}} +\dots-a{_{k-1}}+a{_{k}}-a{_{n}}

将公式转化一下变成, a{_{1}}-a{_{n}}+a{_{i+1}}-a{_{i}}+a{_{j+1}}-a{_{j}} +\dots+a{_{k}}-a{_{k-1}}

后面的刚好构成了差分数组,而因为序列是递减的我们可以保证a{_{1}}-a{_{n}}一定是正的,而后面差分数我们要保证尽可能的小,这样答案才会小,所以我们将对他进行排序然后依次枚举即可。

然后再看修改操作a{_{x}}=a{_{x-1}}+a{_{x+1}}-a{_{x}}

我们枚举出第x-1,x,x+1项,a{_{x-1}},a{_{x}},a{_{x+1}}

修改后,a{_{x-1}},a{_{x-1}}+a{_{x+1}}-a{_{x}},a{_{x+1}}

然后对他进行差分a{_{x-1}}-a{_{x-1}}+a{_{x+1}}-a{_{x}},a{_{x-1}}-a{_{x+1}}+a{_{x+1}}-a{_{x}}

得到 a{_{x+1}}-a{_{x}},a{_{x-1}}-a{_{x}}差分数组仅仅只是交换了个位置,并不会对答案有变化。

所以时间复杂度是O(Nlogn)

代码:

#include<bits/stdc++.h>
#define int long long
#define x first
#define y second
using namespace std;
const int N=1100000;
typedef pair<int,int>pii;

int k,m,n;
int a[N];
int d[N];

void solve()
{
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    for(int i=1;i<n;i++)
        d[i]=a[i]-a[i-1];
    sort(d+1,d+n);
    for(int i=1;i<n;i++)
        d[i]=d[i-1]+d[i];

    cin>>m;
    while(m--)
    {
        int op,x;
        cin>>op>>x;
        if(op==1)
        {
            cout<<a[0]-a[n-1]+d[x-1]<<endl;
        }
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    int t=1;//cin>>t;
    while(t--)solve();
    return 0;
}

L. Zhang Fei Threading Needles - Thick with Fine

输出N-1即可 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/576436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kali-linux Arpspoof工具

Arpspoof是一个非常好的ARP欺骗的源代码程序。它的运行不会影响整个网络的通信&#xff0c;该工具通过替换传输中的数据从而达到对目标的欺骗。本节将介绍Arpspoof工具的 使用。 9.8.1 URL流量操纵攻击 URL流量操作非常类似于中间人攻击&#xff0c;通过目标主机将路由流量注…

腾讯T4大牛整理的SpringBoot文档,覆盖你认知中的所有操作

SpringBoot目前的使用已经很普遍了&#xff0c;实际的项目中&#xff0c;我们需要集成各种的插件支持&#xff0c;不仅如此&#xff0c;还有很多可能我们平时不知道&#xff0c;但是很方便的操作。pdf里面的东西还是比较全面的。 1、关于文档 2、获得帮助 3、第一 步 4、使…

【Docker】Docker最近这么火,它到底是什么

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…

RMP软件管理、YUM源、磁盘管理。

1、RPM软件管理 1> 通过rpm安装vsftpd软件。 去官网找到xsftpdx86的链接。 2> 查询vsftpd软件包的信息。 3> 卸载软件包vsftpd。 2、YUM软件管理 1> 挂载本地光盘&#xff0c;配置yum源为rhel.repo。 2> 通过yum来安装traceroute。 3> 使用yum查询ifconfig命…

详解如何使用LAMP架构搭建论坛

文章目录 1.LAMP概述2.编译安装Apache httpd服务1.关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下2.安装环境依赖包 3.配置软件模块4.编译及安装5.优化配置文件路径&#xff0c;并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别6.添加httpd系…

位图,布隆过滤器,哈希分割

文章目录 &#x1f680;位图&#x1f4a1;概念&#x1f4a1;接口操作 &#x1f680;布隆过滤器&#x1f4a1;思想&#x1f4a1;实现代码&#x1f4a1;实际应用 &#x1f680;哈希分割 &#x1f680;位图 学习位图前&#xff0c;我们先来看一道题 用哈希表存储每个整数&#…

github在线编程

github在线编程 文章目录 github在线编程两种区别演示项目 Ruoyi-VueGitHub Codespaces 演示github 访问项目使用 GitHubCodeSpace 打开该项目查看运行环境安装运行环境初始化myql数据安装 redis运行前端运行后端前后端运行成功测试安装相关插件 GitPod 演示 说明: 目前总结 gi…

路径规划算法:基于果蝇优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于果蝇优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于果蝇优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法果蝇…

聚类算法学习笔记(一)

聚类算法学习笔记&#xff08;一&#xff09; 方法Euclidean Cluster [ 1 ] ^{[1]} [1]SuperVoxel [ 1 ] ^{[1]} [1]Depth Cluster [ 1 ] ^{[1]} [1]SLR: Scan-line Run [ 1 ] ^{[1]} [1]Range Image-based [ 2 ] ^{[2]} [2] 实验对比其他概念Cluster ToleranceKD-Tree Referce…

95后阿里P7晒出工资单:狠补了这个,真香....

最近一哥们跟我聊天装逼&#xff0c;说他最近从阿里跳槽了&#xff0c;我问他跳出来拿了多少&#xff1f;哥们表示很得意&#xff0c;说跳槽到新公司一个月后发了工资&#xff0c;月入5万多&#xff0c;表示很满足&#xff01;这样的高薪资着实让人羡慕&#xff0c;我猜这是税后…

Oracle Linux 9.2 发布 - Oracle 提供支持 RHEL 兼容发行版

Oracle Linux 9.2 发布 - Oracle 提供支持 RHEL 兼容发行版 Oracle Linux with Unbreakable Enterprise Kernel (UEK) & Red Hat compatible kernel (RHCK) 请访问原文链接&#xff1a;https://sysin.org/blog/oracle-linux-9/&#xff0c;查看最新版。原创作品&#xff…

数学建模的初阶-快速上手

目录 第一步&#xff1a;明确问题 第二步&#xff1a;选择建模方法 第三步&#xff1a;收集数据 第四步&#xff1a;构建数学模型 第五步&#xff1a;模型验证与评估 数学建模软件推荐 统计模型 (1) 线性回归模型 (2) 逻辑回归模型 (3) 时间序列模型 优化模型 (1) …

cuda编程学习——运行错误检测(四)

前言 参考资料&#xff1a; 高升博客 《CUDA C编程权威指南》 以及 CUDA官方文档 CUDA编程&#xff1a;基础与实践 樊哲勇 文章、讲解视频同步更新公众《AI知识物语》&#xff0c;B站&#xff1a;出门吃三碗饭 1:编写头文件erro.cuh 编写一个头文件&#xff08;error.cuh&…

LabVIEWCompactRIO 开发指南第六章38

LabVIEWCompactRIO 开发指南第六章38 了解数据如何在模块硬件组件和LabVIEW FPGA框图之间传输&#xff0c;可以帮助开发更好的程序并更快地进行调试。本节介绍不同的硬件体系结构&#xff0c;模拟和数字C系列I/O模块以及如何与每个模块通信。这些模块通常用于测量或控制信号&a…

10. python字典

文章目录 一、什么是字典二、访问键-值对三、添加、修改键-值对四、删除键-值对4.1 语句del4.2 方法pop() 五、创建空字典六、遍历字典6.1方法items()6.2方法keys()6.3方法values() 七、嵌套7.1 字典列表7.2 在字典中存储列表7.3 在字典中存储字典 一、什么是字典 #创建一个字…

canal server 标准化集群搭建(一)

1.背景 随这业务增加&#xff0c;数据同步服务 canal server 需求与日俱增&#xff0c;以往私搭乱建的 canal server 不符合运维标准化。 2.目的 规范 canal server 的部署&#xff0c;形成固定操作流程及文档 3. 环境版本 canal server&#xff1a; canal.deployer-1.1.…

电装光庭汽车电子(武汉)有限公司

电装光庭汽车电子&#xff08;武汉&#xff09;有限公司 &#xff08;汽车座舱显示系统&#xff0c;汽车电子产品及其材料和组件的开发&#xff0c;设计&#xff0c;制造&#xff0c;销售&#xff0c;批发&#xff0c;进出口&#xff09; 一、公司介绍 电装光庭汽车电子是一…

Android中使用kotlin进行xutils数据库版本升级

Android中使用kotlin进行xutils数据库版本升级 前言 最近的项目是一个很老的项目&#xff0c;数据库采用的是xutils中的数据库&#xff0c;之前的业务没有关于版本变更和数据库修改的业务&#xff0c;这次新需求数据库需要新加一张表&#xff0c;之前的表也需要修改字段&…

2022机器学习阶段性复盘

2022机器学习阶段性复盘 文章目录 2022机器学习阶段性复盘一、业务洞察1.1 业务调研1.2 采样策略 一、特征工程1.1 特征筛选之iv_psi1.2 特征筛选之启发式搜索1.3 时间特征的曲率变换1.4 多重共线性特征的剔除1.5 什么样的特征适合树模型或LR模型1.5 什么样的特征是稳定可泛化特…

cuda编程学习——GPU加速/时间计时Clock 干货向(五)

前言 参考资料&#xff1a; 高升博客 《CUDA C编程权威指南》 以及 CUDA官方文档 CUDA编程&#xff1a;基础与实践 樊哲勇 文章所有代码可在我的GitHub获得&#xff0c;后续会慢慢更新 文章、讲解视频同步更新公众《AI知识物语》&#xff0c;B站&#xff1a;出门吃三碗饭 …