Codeforces Round 896 (Div. 2)

news2025/1/23 12:59:24

A.Make It Zero

思维题

当n为偶数时,对1到n异或使得1到n全部变成一样的数,再对1到n异或,使得全部变成0

当n为奇数时,对1到2异或使得1到2全部变成一样的,再对1到2异或,使得1到2都变成0,然后再两次对2到n

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#define endl '\n'
//#define int long long
using namespace std;
const int N=110;
int a[N];
int n;
void solve() {
    cin>>n;
    for(int i=1; i<=n; i++) {
        cin>>a[i];
    }
    if(n%2==0) {
        cout<<2<<endl;
        cout<<1<<' '<<n<<endl;
        cout<<1<<' '<<n<<endl;
    }
    else{
        cout<<4<<endl;
        cout<<1<<' '<<2<<endl;
        cout<<1<<' '<<2<<endl;
        cout<<2<<' '<<n<<endl;
        cout<<2<<' '<<n<<endl;
    }
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

B.2D Traveling

分三种情况,当起始点都为主要城市,为0,当起始点其中一个为主要城市,就找主要城市中离另一个起始点距离最近,并和起始点本身两点线段距离取min,当起始点都不是主要城市,就找离起点最近的主要城市和离终点最近的主要城市,然后两者距离加起来,和起始点本身两点线段距离取min

当时问题出在第三种情况想错了,想的是在起始点形成的矩形里面找离起点最近的主要城市和离终点最近的主要城市,然后两者距离加起来,和起始点本身两点线段距离取min,实际上错的离谱了

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#define endl '\n'
#define int long long
using namespace std;
const int N=2e5+10;
int xx[N],yy[N];
int n,k,a,b;
void solve() {
    cin>>n>>k>>a>>b;
    int min1=4e9,min2=4e9;
    int min1x,min1y,min2x,min2y;
    for(int i=1; i<=n; i++) cin>>xx[i]>>yy[i];
    int x1=xx[a],y1=yy[a],x2=xx[b],y2=yy[b];
    int d=abs(x1-x2)+abs(y1-y2);
    if(a<=k&&b<=k) {
        cout<<0<<endl;
        return;
    }
    if(a<=k||b<=k) {
        if(a<=k) {
            for(int i=1; i<=k; i++) {
                int dist=abs(xx[i]-xx[b])+abs(yy[i]-yy[b]);
                d=min(d,dist);
            }
            cout<<d<<endl;
            return;
        } else {
            for(int i=1; i<=k; i++) {
                int dist=abs(xx[i]-xx[a])+abs(yy[i]-yy[a]);
                d=min(d,dist);
            }
            cout<<d<<endl;
            return;
        }
    }
//    bool ok=false;
//    for(int i=1; i<=k; i++) {
//        if(xx[i]<min(x1,x2)||xx[i]>max(x1,x2)||yy[i]<min(y1,y2)||yy[i]>max(y1,y2)) continue;
//        ok=true;
//        int d1=abs(xx[i]-x1)+abs(yy[i]-y1);
//        int d2=abs(xx[i]-x2)+abs(yy[i]-y2);
//        if(min1>d1) min1=d1;
//        if(min2>d2) min2=d2;
//    }
//    if(ok) d=min(d,min1+min2);
//    cout<<d<<endl;
    for(int i=1; i<=k; i++) {
        int d1=abs(xx[i]-x1)+abs(yy[i]-y1);
        int d2=abs(xx[i]-x2)+abs(yy[i]-y2);
        if(min1>d1) min1=d1;
        if(min2>d2) min2=d2;
    }
    d=min(d,min1+min2);
    cout<<d<<endl;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

C.Fill in the Matrix

构造题

我们第一行构造为0,1,...m-1

然后第二行为1,2,...m-1,0

依次循环右移

循环右移x次能得到x+1

我们如果循环n次,则能得到n+1,如果循环右移m-1次,则能得到m

我们取min(n+1,m)

如果循环右移了m次,那么每列都得到m,所以我们最多循环右移m-1次,然后如果n小于m-1的话,那么连m-1次都移不了

最后剩下的行就全部补成之前的数就行了,补成1,2,...m-1,0

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<set>
#define endl '\n'
#define int long long
using namespace std;
int n,m;
void solve() {
    cin>>n>>m;
    if(m==1) cout<<0<<endl;
    else cout<<min(m,n+1)<<endl;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(i<=m-1) cout<<((i+j-1)%m+m)%m<<' ';
            else cout<<(j%m+m)%m<<' ';
        }
        cout<<endl;
    }
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

D1.Candy Party (Easy Version)

this version everyone must give candies to exactly one person and receive candies from exactly one person.每个人都必须分出去一个2的幂次,也必须接收一个2的幂次,也就是减一个2的次幂,加一个2的幂次

有一个结论:任何一个数分解成两个2的幂次的形式是唯一的

如图:

一个数n分解成两个二次幂的差,小的那个1的位置和n的最低位的1同,大的那个1的位置比n的最高位的1的位高1

但是不一定所有的n都可以分解成功,要求是它的二进制表示中1是连续的

由于总数一定,所以平均数一定,那么对于每个数都是一个2的次幂出去,一个2的次幂进来,最后统计是否减去的2的次幂和加上的2的次幂是否相同

注意,每次都要初始化

 AC代码:

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N=2e5+10;
int a[N];
int n;
bool check(int n){
    if(n>0&&(n&(n-1))==0) return true;
    return false;
}
int lowbit(int x){
    return x & (-x);
}
void solve() {
    cin>>n;
    int sum=0;
    vector<int> bit(31, 0);//bit每次要初始化
    for(int i=1;i<=n;i++) {
        cin>>a[i];
        sum+=a[i];
    }
    if(sum%n){
        cout<<"No"<<endl;
        return;
    }
    int d=sum/n;
    for(int i=1;i<=n;i++){
        if(a[i]==d) continue;
        int diff=abs(a[i]-d);
        int p=lowbit(diff);//小
        int q=diff+p;//大
        if(!check(q)){
            cout<<"No"<<endl;
            return;
        }
        //接受大的,减去小的
        if(a[i]<d){
            bit[log2(q)]++;
            bit[log2(p)]--;
        }
        //接受小的,减去大的
        else{
            bit[log2(p)]++;
            bit[log2(q)]--;
        }
    }
    for(int i=0;i<31;i++){
        if(bit[i]){
            cout<<"No"<<endl;
            return;
        }
    }
    cout<<"Yes"<<endl;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

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

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

相关文章

建筑模板国家标准GB/T 17656-2018

建筑模板国家标准GB/T 17656-2018《混凝土模板用胶合板》的重要性与应用 GB/T 17656-2018《混凝土模板用胶合板》国家标准是建筑模板行业的重要指导性文件&#xff0c;旨在确保混凝土模板的质量、安全和可靠性&#xff0c;促进建筑施工的高效进行。该标准详细规定了混凝土模板用…

DuDuTalk:4G语音工牌,如何实现家庭上门维修服务过程的智能化管理?

随着上门按摩、上门养老、上门买菜、上门维修等互联网上门服务的兴起&#xff0c;越来越多的居民开始采用线上下单&#xff0c;享受企业安排人员上门到家的服务。而家庭维修作为到家服务里面典型的一个场景&#xff0c;已成为许多人不可或缺的一部分。然而&#xff0c;与此同时…

【校招VIP】排序算法之高级排序

考点介绍&#xff1a; 在校招面试中,排序算法是经常被问到的。排序算法又比较多,很容易遗忘和混淆。有相当同学校招卡在排序的实现上,要么是核心代码实现不了,要么是实现方法串台。大厂的考察重点在快速排序等高级排序上。 排序算法之高级排序-相关题目及解析内容可点击文章末…

高级感满满的巡课效果怎么做?一招搞定!

学校是培养未来一代领袖和知识传承的地方&#xff0c;因此&#xff0c;确保学校内的教育质量和管理效率至关重要。在这个信息时代&#xff0c;技术正在不断演进&#xff0c;为学校管理和监督提供了更多的工具和方法。 在线巡课系统可以帮助学校管理人员更好地监督教学活动、评估…

【操作系统】进程的状态

进程的五种状态 创建&#xff0c;就绪&#xff08;等待分配处理机CPU资源&#xff09;&#xff0c;执行&#xff0c;阻塞&#xff08;叫阻塞因为相对CPU来说它很慢&#xff0c;等待除CPU以外的资源&#xff0c;如I/O&#xff09;&#xff0c;终止。 创建好的进程放入就绪队列等…

基于永磁同步发电机的风力发电系统研究(Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MS SQL Server问题汇总

1.报SQL Server Agent连接不上的错误 15:38:57.991 [debezium-sqlserverconnector-sqlserver_transaction_log_source-change-event-source-coordinator] WARN i.d.connector.sqlserver.SqlServerStreamingChangeEventSource - No maximum LSN recorded in the database; pl…

mysql中left join时join和on的先后顺序

1.mysql中在内连接时,on的效果无论是对驱动表还是非驱动表和where的效果是一样的 ,on的顺序在join的前面 2.在外连接中 on 中添加筛选条件,只会对非驱动表生效,对驱动表是没有作用的,所以只有对非驱动表时,on的顺序是在join前面

pytorch代码实现之分布偏移卷积DSConv

DSConv卷积模块 DSConv&#xff08;分布偏移卷积&#xff09;可以容易地替换进标准神经网络体系结构并且实现较低的存储器使用和较高的计算速度。 DSConv将传统的卷积内核分解为两个组件&#xff1a;可变量化内核&#xff08;VQK&#xff09;和分布偏移。 通过在VQK中仅存储整…

天津Java培训班 Java的就业方向有那哪些?

Java具有独特的卓越通用性、效率性、安全性和平台可移植性等优点&#xff0c;近年来得到了众多学生的支持&#xff0c;它可以应用于跨平台的不同领域&#xff0c;工作需求量非常大&#xff0c;并且在业务应用程序的发展中扮演着重要的角色。因此有许多人想要转行成为Java工程师…

达梦数据库之 PERCENT_RANK()over()函数和 PERCENTILE_CONT() WITHIN GROUP()OVER()函数详解

排列百分比 PERCENT_RANK 例 求图书的现价排列百分比。 SELECT NAME, PERCENT_RANK() OVER(ORDER BY NOWPRICE) AS NTILE FROM PRODUCTION.PRODUCT; 查询结果如下&#xff1a; NAMENTILE老人与海0.000000000000000E000突破英文基础词汇1.111111111111111E-001工作中无小事2.2…

换行符转换

将\t\n、\n、多个\n\n\n...转换为\n\n。 import pandas as pd import re # 创建一个示例DataFrame data {msgText: [这是示例文本1&#xff0c;包含\t\n换行符,这是示例文本2&#xff0c;包含\n\n多个\n换行符,这是示例文本3&#xff0c;没有换行符]} df pd.DataFrame(data)…

通过命令设置ECS密码,无需重启

1、在阿里云找到服务器实例&#xff1b; 2、定时与自动化任务-->单击“发送命令”&#xff1b;---------------------------------------- # linux echo "root:<yourPassword>"|chpasswd # windows net user "Administrator" "<yourPassw…

element+vue table上移+下移 拖拽

//安装 npm install sortablejs --save<el-table :data"statisticsChexkboxs" border max-height"300px" width"740px" row-key"id"ref"projectTable"><el-table-column v-for"item in confirmHead" :ke…

产品经理有必要考pmp证书吗?

随着产品经理职位的日益重要和受欢迎&#xff0c;越来越多的人开始考虑是否有必要考取项目管理专业&#xff08;Project Management Professional&#xff0c;简称PMP&#xff09;证书。对于产品经理而言&#xff0c;是否需要考取PMP证书是一个有争议的问题。本文将探讨产品经理…

pyarmor 加密许可证的使用

一 pyarmor 许可证的用处 文档&#xff1a;5. 许可模式和许可证 — Pyarmor 8.3.6 文档 试用版本有如下的限制&#xff1a; 加密功能对脚本大小有限制&#xff0c;不能加密超过限制的大脚本。 混淆字符串功能在试用版中无法使用。 RFT 加密模式&#xff0c;BCC 加密模式在试…

Ubuntu20.04 开机卡在[OK] Started ****,无法正常开机

本人使用Ubuntu20.04版本&#xff0c;因显卡驱动问题无法使用外接显示器&#xff0c;安装对应版本的NVIDIA驱动之后&#xff0c;开机卡在如下界面&#xff08;Ubuntu和NVIDIA驱动冲突实属家常便饭&#xff0c;有的还会出现循环登录的情况&#xff09; 解放方法 禁用NVIDIA驱动…

遥遥领先的内存函数

目录 ​编辑 函数介绍 1.1 strlen 1.2 strcpy 1.3 strcmp 1.4 strcat 1.5 strstr 2.1 memcpy 2.2 memmove 2.3 memcmp 函数实现 1.1 strlen 1.2 strcpy 1.3 strcmp 1.4 strcat 1.5 strstr 2.1 memcpy 2.3 memcmp 函数介绍 1.1 strlen size_t strlen ( const char *…

【Spring面试】七、AOP相关

文章目录 Q1、什么是AOP&#xff1f;能做什么&#xff1f;Q2、解释下Spring AOP中常见的概念名词Q3、Spring AOP的通知有哪些类型&#xff1f;Q4、Spring AOP和AspectJ AOP有什么区别&#xff1f;Q5、JDK动态代理和CGLIB动态代理的区别是什么&#xff1f;Q6、JavaConfig方式如何…

本地docker注册证书docker login连接到harbor仓库、利用shell脚本将大量镜像pull、tag、push到私有harbor仓库

1. 本地docker注册证书docker login连接到harbor仓库&#xff1a; 我们使用docker login/push/pull去与Harbor打交道&#xff0c;上传下载镜像等。 但是可能会出现x509: certificate signed by unknown authority之类的错误。 [roottest01 harbor.dev]# docker login harbor.d…