CF-956(A-D)

news/2024/10/6 20:16:20/文章来源:https://www.cnblogs.com/mono-4/p/18290848

CF-956(A-D)

期末以来第一场CF (っ °Д °;)っ

Problem - A - Codeforces

1~n的升序排列就满足条件

void solve(){int n;cin>>n;rep(i,1,n) cout<<i<<" ";cout<<endl;
}

Problem - B - Codeforces

两种操作:

+1 +2	+2 +1
+2 +1	+1 +2

在模3的情况下显然都一定不会改变每一行或每一列的和,由此可判断

const int N=505,M=2e5+5;
int a[N][N],b[N][N],sum[N*N+1];
void solve(){int n,m;cin>>n>>m;char x;rep(i,1,n) sum[i]=0;rep(j,1,m) sum[1+j*N]=0;rep(i,1,n){rep(j,1,m){cin>>x;a[i][j]=(x-'0');sum[i]=(sum[i]+a[i][j])%3;sum[1+j*N]=(sum[1+j*N]+a[i][j])%3;}}int res=0,f=1;rep(i,1,n){res=0;rep(j,1,m){cin>>x;b[i][j]=x-'0';res=(res+b[i][j])%3;}if(res!=sum[i]) f=0;}rep(j,1,m){res=0;rep(i,1,n){res=(res+b[i][j])%3;}if(res!=sum[1+j*N]){f=0;break;}}if(f) cout<<"YES";else cout<<"NO";cout<<endl;
}

Problem - C - Codeforces

要在三个数组中找到三个不重叠的连续区域,每个区域之和都要>=(sum+2)/3。我们可以暴力枚举第一部分的分界点,因为未知三个数组哪个取第一部分,哪个取中间部分,哪个取最后部分,所以要考虑六种情况

void solve(){int n;cin>>n;vector<int>a(n+1),b(n+1),c(n+1);int x;rep(i,1,n){cin>>x;a[i]=a[i-1]+x;}rep(i,1,n){cin>>x;b[i]=b[i-1]+x;}rep(i,1,n){cin>>x;c[i]=c[i-1]+x;}int sum=(c[n]+2)/3;int j=1;rep(i,1,n){while(b[j]-b[i]<sum&&j<n) j++;if(a[i]>=sum&&c[n]-c[j]>=sum){cout<<"1 "<<i<<" "<<i+1<<" "<<j<<" "<<j+1<<" "<<n<<endl;return;}}	j=1;	rep(i,1,n){while(c[j]-c[i]<sum&&j<n) j++;if(a[i]>=sum&&b[n]-b[j]>=sum){cout<<"1 "<<i<<" "<<j+1<<" "<<n<<" "<<i+1<<" "<<j<<endl;return;}}j=1;rep(i,1,n){while(a[j]-a[i]<sum&&j<n) j++;if(b[i]>=sum&&c[n]-c[j]>=sum){cout<<i+1<<" "<<j<<" "<<"1 "<<i<<" "<<j+1<<" "<<n<<endl;return;}}j=1;rep(i,1,n){while(c[j]-c[i]<sum&&j<n) j++;if(b[i]>=sum&&a[n]-a[j]>=sum){cout<<j+1<<" "<<n<<" 1 "<<i<<" "<<i+1<<" "<<j<<endl;return;}}j=1;rep(i,1,n){while(a[j]-a[i]<sum&&j<n) j++;if(c[i]>=sum&&b[n]-b[j]>=sum){cout<<i+1<<" "<<j<<" "<<j+1<<" "<<n<<" 1 "<<i<<endl;return;}}j=1;rep(i,1,n){while(b[j]-b[i]<sum&&j<n) j++;if(c[i]>=sum&&a[n]-a[j]>=sum){cout<<j+1<<" "<<n<<" "<<i+1<<" "<<j<<" 1 "<<i<<endl;return;}}cout<<"-1"<<endl;
}

Problem - D - Codeforces

思路

因为等距交换,所以可以都进行相邻交换,这样如果两数组操作数相差为偶数并且两数组元素都相同才是合法的

操作

处理操作数:相邻排序的话就是冒泡排序,也就是求冒泡排序的交换次数,而它就等于序列中的逆序对个数,可以用树状数组求得,又序列中会有重复元素,所以可以按权值降序、权值相同的按位置逆序排序,用树状数组点修区查求得

树状数组求逆序对个数还可以直接顺序的点修区查求,对当前数x,对树上x点加1,它对逆序对个数的贡献是[x+1,n]的和,不过这种方法当x的值域很大时需要离散化处理

判断两数组元素是否都相同:排序判断

代码

const int N=2e5+5;
int s[N],n;
struct node{int v,p;
}a[N],b[N];
bool cmp(node a,node b){if(a.v==b.v) return a.p>b.p;else return a.v>b.v;
}
int lowbit(int x){return x&-x;
}
void change(int x,int k){while(x<=n){s[x]+=k;x+=lowbit(x);}
}
int query(int x){int res=0;while(x){res+=s[x];x-=lowbit(x);}return res;
}
void solve() {cin>>n;rep(i,1,n){cin>>a[i].v;a[i].p=i;s[i]=0;}rep(i,1,n){cin>>b[i].v;b[i].p=i;}sort(a+1,a+n+1,cmp);sort(b+1,b+n+1,cmp);rep(i,1,n){if(a[i].v!=b[i].v){cout<<"NO\n";return;}}int cnta=0,cntb=0;rep(i,1,n){cnta+=query(a[i].p);change(a[i].p,1);}rep(i,1,n) s[i]=0;rep(i,1,n){cntb+=query(b[i].p);change(b[i].p,1);}if((cnta-cntb)%2==0) cout<<"YES";else cout<<"NO";cout<<endl;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

G64【模板】线性基 贪心法 P3812 最大异或和

视频链接: P3812 【模板】线性基 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)// 线性基 O(63*n) #include <iostream> #include <cstring> #include <algorithm> using namespace std;typedef long long LL; int n; LL p[64];void insert(LL x){ //贪…

相机的标定

Camera-calibration 用于矫正相机的畸变代码部分 #打开摄像头,将读取的视频保存在本地,名字叫output.avi# coding=utf-8 import cv2 as cv cap = cv.VideoCapture(0) # 检查是否成功打开摄像头 if not cap.isOpened():print("Cannot open camera")exit() # 获取摄像…

关于golang函数传参问题

今天在写leetcode的一个简单问题的时候发现golang的切片传递并不是直接 传递地址的,而是一个地址副本。如图所示,当我利用test函数对nums1和nums2数组处理时,并不是对原来的nums1和nums2做处理,而是对他们的副本nums1_temp和nums2_temp做处理,但是nums1_temp和nums1都指向…

PN转Modbus RTU模块连接ACS4QQ变频器通信

巴图自动化PN转Modbus RTU模块(BT-MDPN10)的主要功能是实现Modbus协议和Profinet协议之间的转换和通信。PN转Modbus RTU模块集成了Modbus和Profinet两种协议,支持Modbus RTU主从站,可连接变频器、智能高低压电器、功率测量设备等RS485/232接口设备。一台完整的机器在出厂前由…

RS232转PN协议网关模块连接PLC和霍尼韦尔条码扫描器通信

利用RS232转PN协议网关(BT-PNR20)模块连接PLC与条码扫描器,通过配置RS232转PN协议网关(BT-PNR20)模块连接PLC与条码扫描器参数实现高效通信,提高生产效率,降低人工干预成本。涉及设备准备、硬件连接、配置步骤和监控设置。为了更快地输入信息,许多设备都配备了条码扫描…

vscode 远程连接 Ubuntu (SSH)

vscode ssh Ubuntu 流程及一些常见问题的解决安装对应的拓展包显示所有的命令(Ctrl+Shift+p)获取虚拟机的ip sudo apt install net-tools ifconfig进行连接如果连接的时候报错(管道不存在) 在Ubuntu中打开ssh服务即可如果连接了很久没有连上(Permission denied (publickey…

2024已过半,还没试过在vue3中使用ioc容器吗?

Zova 是一款支持 IOC 容器的 Vue3 框架。有了 IOC 容器的加持,定义响应式状态不再需要ref/reactive,也不再需要ref.valueVue3 已经非常强大和灵活了,为什么还要引入 IOC 容器呢?IOC 容器离不开 Class,那么我们就从 Class 谈起 Class的应用场景 一提起 Class,大家一定会想…

cpp查错误

使用Windows事件查看器调试崩溃 https://www.cnblogs.com/yilang/p/11993912.html1、2、生成.map看函数地址 3、map里找不到0xc0000409 4、 搜 异常代码 0xc0000409 5、堆栈设置

Vue3 如何接入 i18n 实现国际化多语言

如何在现有 Vue 3.0 + Vite 项目中,引入 i18n 实现国际化多语言,可以手动切换,SEO友好,且完整可用的解决方案。1. 基本方法 在 Vue.js 3 中实现网页的国际化多语言,最常用的包是 vue-i18n,通常我们会与 vue-i18n-routing 一起使用。 vue-i18n 负责根据当前页面的语言渲染…

【安全运营】企业钓鱼演练实践

一、 群智集锦 问:请教各位师傅个问题,你们多长时间做一次钓鱼演练?答:全员型的半年一次,小范围的一个季度一次;答:我们内部每月都有做钓鱼演练,主要针对新员工,钓鱼主题一般不改变,针对全员的时候会换一下套路;问:请教个问题,大家进行钓鱼演练统计是怎么统计展示…

植物大战僵尸 杂交版

下载地址:https://download.csdn.net/download/hello_hlqk/89525708?spm=1001.2101.3001.9500 植物大战僵尸杂交版是一款由B站UP主 @潜艇伟伟迷 基于原版植物大战僵尸魔改的塔防类游戏。这款游戏在保留原有游戏精髓的基础上,进行了大胆的创新和尝试。UP主将不同的植物进行了…

Modbus转Profibus模块连SmartPLC接汇川630伺服案例

Modbus转Profibus模块(XD-MDPB100)是一种通讯协议转换器,能够实现Modbus 协议与Profibus-DP协议的信息共享。汇川630伺服作为一种先进的运动控制设备,其平稳性和准确性获得了充分肯定。本文将详细分析怎么使用Profibus转Modbus模块(XD-MDPB100)连接SmartPLC以及配备汇川630…