Codeforces Round 896 (Div. 2)题解

news2024/12/23 18:06:41

前言:

3 solved of 7 A、B、C,太菜了,写B题的时候,常数设成1e5了,一直卡在Test 4,没想到一直提示我TLE,没有提示RE,导致我浪费了很多时间在B题上,最后时间太晚了交了TLE了一发睡觉去了

A-Make It Zero 

A - Make It Zero

题目分析:选取l,和r,并将l~r当中所有值转化为他们异或和

只需要知道2个相同的数异或和为0,这题就已经解决了

偶数:1~n两次操作必为0

奇数:1~2两次操作保证1位上为0,2~n两次操作,保证2~n为零,至此整个数列s全为0

代码:

#include<bits/stdc++.h>
using namespace std;
const int N =1e5;
int a[N];
int main()
{ios::sync_with_stdio(0);cin.tie(0);

int t;cin>>t;int tmp;
while(t--)
{
    int n;cin>>n;int x;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
    }
    if(n%2==0)
    {
        
        
            cout<<"2"<<endl;
            cout<<"1 "<<n<<endl;
            cout<<"1 "<<n<<endl;
    }
    else
    {
        cout<<"4"<<endl;
        cout<<n-1<<" "<<n<<endl;
        cout<<n-1<<" "<<n<<endl;
        cout<<"1 "<<n-1<<endl;
        cout<<"1 "<<n-1<<endl;
    }



}
}

B - 2D Traveling 

B - 2D Traveling 

 

 

题目分析:

a到b城市,费用为二者坐标x,y之差的绝对值,同时前k个城市为maincity,也就是图中标红的点,miancity到maincity是不需要任何费用的,求最优解

1.a,b均为主要城市此时费用为0

2.a or b 为主要城市,并且图上还有至少一个主要城市 此时a~mainc or b~mainc 的费用为零,计算另一个城市到该mainc的费用并和直接a~b取min求解

3. a,b不为mainc ,图上至少有两个mainc, 这时候可以直接统计a,b两个局部最优解,也即 a~距离a最近的mainc+ b~距离b最近的mainc 和直接a~b取min求解

4.无mainc,直接输出 a~b费用

代码:

#include<bits/stdc++.h>
using namespace std;
const int N =2e5+7;
typedef long long ll;
int a,b;
struct ss 
{
    int xi,yi;
}s[N],mainc[N];
bool cmp1(ss s1 ,ss s2)
{
    ll xii=s[a].xi;
    ll yii=s[a].yi;
    return abs(xii-s1.xi)+abs(yii-s1.yi)<abs(xii-s2.xi)+abs(yii-s2.yi);
}
bool cmp2(ss s1 ,ss s2)
{
    ll xii=s[b].xi;
    ll yii=s[b].yi;
    return (abs(xii-s1.xi)+abs(yii-s1.yi))<(abs(xii-s2.xi)+abs(yii-s2.yi));
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);

int t;cin>>t;
while(t--)
{
   int n,k;cin>>n>>k>>a>>b;
   ll o=1;
    for(ll i=1;i<=n;i++)
    {
        cin>>s[i].xi>>s[i].yi;
        if(i<=k)
        {
            mainc[o].xi=s[i].xi;
            mainc[o++].yi=s[i].yi;
        }
    }
    if(a<=k&&b<=k)cout<<"0"<<endl;
   else{
       ll ans=(ll)abs(s[a].xi-s[b].xi)+abs(s[a].yi-s[b].yi);
    if(o==2&&(a>k&&b>k))cout<<ans<<endl;
    else if(o>=1)
    {
        sort(mainc+1,mainc+o,cmp1);
        ll ans2=0;
        if(a>k)ans2+=(ll)abs(s[a].xi-mainc[1].xi)+(ll)abs(s[a].yi-mainc[1].yi);
        sort(mainc+1,mainc+o,cmp2);
        if(b>k)ans2+=(ll)abs(s[b].xi-mainc[1].xi)+(ll)abs(s[b].yi-mainc[1].yi);
        cout<<min(ans,ans2)<<endl;
    }
       
       
   }
}
}

C - Fill in the Matrix 

C - Fill in the Matrix 

题目分析:

n*m的矩阵M每一行 都必须由 0~m-1的数组成

并且每一列都会进行一个MEX函数操作,即得到不存在于整个数组当中的最小非负整数

接着对每一列求出的MEX值再进行一次MEX操作,最终得到ans,目标使得ans最大

对于ans的值有三种情况

1.以样例2为例:一行,则这一行必定是0~m-1,那么取出的值就为0 0 ....1 ...0 0 0,其中1的位置是由零决定的,那么我们在此基础上假设n=2的情况,我们可以设计第一行为0的位置,第二行为1,然后将第二行的0放在第一行当中及不为0也不为1的位置,那么第一次MEX的结果为 0 0...1 2 ...0 0,这样最终MEX的值也就是ans为3,我们可以想象出n=3、n=4..的情况了,也就是 ans=n+1。

2.我们知道由于m由0~m-1组成,所以第一次MEX的值最多为{0,1,2,3,4...m-1}第二次MEX为m,这也就说明了ans最大值为ans,如果上面的(n+1)超过了m,这是不合法的,所以我们取min(n+1,m)为最终ans

3.若m==1,那么第一次MEX=1,第二次MEX =0,然后这个矩阵只能由0组成,输出就很方便了

输出:

知道ans,是第一步,最关键的一步是我们怎么设计整个矩阵,除去上面第三种情况,其实我们都可以以这样的形式输出:(以6为例)

代码:

#include<bits/stdc++.h>
using namespace std;
int t,n,m;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);
	cin>>t;
	while(t--){
		cin>>n>>m;
		if(m==1){
			for(int i=0;i<=n;i++)cout<<0<<"\n";
		}else{
			cout<<min(n+1,m)<<"\n";
			for(int i=0;i<n;i++){
				for(int j=0;j<m;j++){
					cout<<(i%(m-1)+j)%m<<" ";
				}
				cout<<"\n";
			}
		}
	}
}

 

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

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

相关文章

SpringCloud:Feign实现微服务之间相互请求

文章目录 &#x1f389;欢迎来到Java学习路线专栏~SpringCloud&#xff1a;Feign实现微服务之间相互请求 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a;Java学习路线&#x1f4dc;其他专栏&#xf…

Sui Move智能合约提供更智能和简单的编程

编写区块链和其他计算环境的代码有很多相似之处&#xff0c;但区块链的重点大部分都集中在构建智能合约上。智能合约部署编译后的代码&#xff0c;本质上是在区块链上自动执行交易的apps。Sui网络本地的Sui虚拟机使用Sui Move编程语言编写智能合约。 术语“智能合约”意味着区…

Python之离线安装第三方库

1、场景介绍 在一些服务器上&#xff0c;我们搭建完Python环境之后&#xff0c;因为服务器的网络限制原因&#xff0c;不能直接通过pip命令下载安装Python的依赖包。 因此&#xff0c;我们需要在可以正常上网的服务器上下载好所需的依赖包文件&#xff0c;然后拷贝到目标服务器…

Screen的详细全面安装教程及Screen的用法

Screen可以大大提高终端使用效率&#xff0c;是Linux系统管理和运维的必备技能。当我们开启Screen后&#xff0c;只要Screen进程没有终止&#xff0c;其内部运行的会话都可以恢复。即使网络连接中断&#xff0c;用户也可以重新进入已开启的Screen中&#xff0c;对中断的会话进行…

Three.js-绘制矩形shader

绘制图中的嵌套矩形框 方法&#xff1a; vec3 drawRect(vec2 st,vec2 center,float width,float height,float thickness,vec3 fillColor, vec3 strokeColor) {vec3 color vec3(0);float halfWidth width * .5;float halfHeight height * .5;float halfTickness thicknes…

《向量数据库指南》——Milvus Cloud当初为什么选择向量数据库这个赛道呢?

我们公司专注于向量数据库大约可以追溯到 2018 年左右。当时&#xff0c;向量数据库的概念并不广泛。我们的 CEO 力排众议&#xff0c;认为这个领域有巨大潜力&#xff0c;因为这与我们的愿景高度契合。我们的公司定位是构建一个能够在云上处理非结构化数据的基础设施产品。经过…

window11wifi图标没了win11wifi图标消失连不上网的三种解决方法

最近win11系统有很多小伙伴都去安装体验,不过有的小伙伴在安装完之后说自己的wifi图标消失连不上网,那么如果遇到这种情况应该怎么办呢?下面就和小编一起来看看win11wifi图标消失连不上网的三种解决方法吧。 笔记本专用Win11娱乐版 V2023 [电脑系统] 笔记本专用Win11娱乐版…

UG\NX CAM二次开发 设置2D工序部件边界 UF_CAMBND_append_bnd_from_curve

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 设置2D工序部件边界 UF_CAMBND_append_bnd_from_curve 效果: 代码: static int init_proc(UF_UI_selection_p_t select, void* user_data) { int errorCode = 0; int num_triples = 1; …

自动创建设备节点udev机制的实现过程

udev是用户空间的一个应用程序&#xff0c;在内核里面安装一个驱动时&#xff0c;需要给这个驱动创建一个结点&#xff0c;安装驱动时向用户空间提交创建结点的信息&#xff0c;udev可以拿到提交的信息&#xff0c;自动在dev下创建结点。 创建结点的逻辑放在用户空间。内核空间…

每日刷题-5

目录 一、选择题 二、算法题 1、不要二 2、把字符串转换成整数 一、选择题 1、 解析&#xff1a;printf(格式化串&#xff0c;参数1&#xff0c;参数2,.….)&#xff0c;格式化串: printf第一个参数之后的参数要按照什么格式打印&#xff0c;比如%d--->按照整形方式打印&am…

JAVA设计模式6:代理模式,用于控制对目标对象的访问

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;3年JAVA全栈开发经验&#xff0c;专注JAVA技术、系统定制、远程指导&#xff0c;致力于企业数字化转型&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;蓝桥云课讲师。 目录 一、什么是代理模式二、…

c++day5---9.12

实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c; 公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性&#xff1a;半径…

AMD R7 7840HS 核显 780M 性能怎么样

目录 1. 基本数据 2.性能对比 2.1对比一 2.2 对比二 3.综合 1. 基本数据 2.性能对比 2.1对比一 锐龙77840h相当于i几 答&#xff1a;类似于I7-12700H R7 7840H介于13500-13700之间。 R7 7840H是AMD锐龙旗下高性能的一款处理器&#xff0c;主要应用在主流的游戏本中。各…

教育领域数据可视化:点亮知识之路

教育领域一直以来都在不断进步和演变&#xff0c;而数据可视化技术正在为这一领域带来一场革命。在过去的几年里&#xff0c;教育者们越来越意识到&#xff0c;通过将教育数据转化为可视化图表和图形&#xff0c;可以更好地理解学生的表现、需求和趋势&#xff0c;从而提供更好…

03-rnn-由国家名和开始字符生成1个name

一、查漏补缺、熟能生巧&#xff1a; 1.原来没有optimizer.step()的时候&#xff0c;也可以这么做&#xff1a; 二、具体代码&#xff1a; NLP From Scratch: Generating Names with a Character-Level RNN — PyTorch Tutorials 2.0.1cu117 documentation

2023年全国大学生电子设计竞赛-E题国家级二等奖

系列文章目录 文章目录 系列文章目录前言一、又一年电赛过去了二、E题注意事项1.注意事项 总结 前言 一、又一年电赛过去了 比较幸运的是大学生涯作为电子类学生的最后一次电赛&#xff0c;还能拿到国二&#xff0c;跟去年21年也是一样&#xff0c;两年国二&#xff1b;一路来…

【C++】类和对象核心总结

类和对象核心知识目录&#xff1a; 一、面向过程和面向对象初步认识 二、类的引入定义&#xff08;struct > class&#xff09; 2.1自定义类型 struct 和 class 的区别 2.2类放在内存中的什么存储区&#xff1f; 2.3类中函数定义的方式 2.3.1声明和定义分离&#xff0…

Jmeter+Ant+Git+Jenkins持续集成介绍

一 简介 1.什么是ant? ant是构建工具 2.什么是构建 概念到处可查到&#xff0c;形象来说&#xff0c;你要把代码从某个地方拿来&#xff0c;编译&#xff0c;再拷贝到某个地方去等等操作&#xff0c;当然不仅于此&#xff0c;但是主要用来干这个 3.ant的好处 跨平台 -…

投资理财基础知识分享(二)

大家好&#xff0c;我是财富智星&#xff0c;今天跟大家继续分享投资理财基础知识&#xff0c;今天介绍下投资理财都有哪些产品可以购买的问题&#xff1a; 满足收益性的资产 货币基金和保险是直接购买的投资产品&#xff0c;没有太多技巧可言。 然而&#xff0c;其他投资产品的…

springboot集成Logback 日志写入数据库

springboot集成Logback 日志写入数据库 引入maven依赖 <!-- logback日志--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency>&l…