Codeforces Round 908 (Div. 2)

news2024/9/21 4:28:00

一个教训:做题的时候一定要自己模拟一遍所有样例,这样思路出来的很快!!!

C. Anonymous Informant

Example

input

Copy

 

6

5 3

4 3 3 2 3

3 100

7 2 1

5 5

6 1 1 1 1

1 1000000000

1

8 48

9 10 11 12 13 14 15 8

2 1

1 42

output

Copy

Yes
Yes
No
Yes
Yes
No

大意:给一个数组a,看能不能有一个数组b能经过k次操作转换成a。有k次操作机会,每次操作选一个b[i] = i的数(i从1开始),然后整个数组向左移i位

思路:主要是要找到一个规律,经过一次操作后,选中的b[i]会到数组的最后一个元素

例如:1,4,3,5,6.。选i = 3的a[3] = 3,左移后变成,5,6,1,4,3

经过若干次操作后就变成了a。因此可以从a逆推b。

当然了,如果选中的数 a[i] > n(n是数组的大小),那么就跟操作的原则相矛盾,无法转换成a,输出-1.

还有一个要点,如果k太大,这样一遍遍模拟一定会超时,所以我们会发现,这是有周期T的,如果能模拟过了一个周期T,那么b一定可以转换成a。在能转换成a的情况下,模拟到一定次数就会选中先前选过的数,因此要用到vis数组

总结:

1.找规律

2.逆推

2.周期T,vis数组

#include<cstdio>
#include<set>
#include<list>
#include<queue>
#include<math.h>
#include<stdlib.h>
#include<string>
#include<string.h>
#include <stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<sstream>
#include<stack>
#include <utility>
#include<map>
#include <vector>

#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define inf 0x3f3f3f3f
//2147483647

#define int long long
//#include <bits/stdc++.h>
typedef long long ll;
#include<iostream>
using namespace std;

const int N = 2e5 + 10;
//long long MAX(long long a, long long b) { return a < b ? b : a; }

int a[N];
int vis[N];
signed main() {
	int t; cin >> t;
	while (t--) {
		memset(vis, 0, sizeof vis);
		int n, k; cin >> n >> k;
		for (int i = 1; i <= n; i++) cin >> a[i];
		int pa = n;
		int f = 1;

		while (k--) {
			//如果pa即将访问之前访问过的结点
			//那么一个周期已经结束,要开始下一个周期
			//如果在第一个周期没有问题,下一个周期也不会有问题
			//因为下一个周期是重复上一个周期的步骤
			

			int temp = a[pa];
			if (temp > n) {
				f = 0;
				break;
			}

			if (vis[pa] == 1) break;
			
			vis[pa] = 1;
			pa = (pa - temp + n) % n;

		}

		if (f) cout << "Yes" << endl;
		else cout << "No" << endl;

	}



	return 0;
}

D. Neutral Tonality

Example

input

Copy

 

7

2 1

6 4

5

5 5

1 7 2 4 5

5 4 1 2 7

1 9

7

1 2 3 4 5 6 7 8 9

3 2

1 3 5

2 4

10 5

1 9 2 3 8 1 4 7 2 9

7 8 5 4 6

2 1

2 2

1

6 1

1 1 1 1 1 1

777

output

Copy

6 5 4
1 1 7 7 2 2 4 4 5 5
9 8 7 7 6 5 4 3 2 1
1 3 5 2 4
1 9 2 3 8 8 1 4 4 7 7 2 9 6 5
2 2 1
777 1 1 1 1 1 1

大意:给出数组a和数组b,在a数组中插入b的所有元素,问怎么插能使最后的数组的最长上升子序列最小

分析:双指针

1.首先要明白一点,答案的下界是a本身的LIS(即b不会增加LIS的长度)。

2.为了让数组b不贡献长度,要对b排降序后再插入

3.接下来考虑,怎么插入才能不增加LIS长度。结论是,如果ai<bj,那么将bj插到ai前面就不会贡献长度,如图(红色是b,黑色是a)

4.如果a已经遍历完最后一个,b却还没插入完,就把b剩下的(bn-i,bn-i+1,bn-i+2......bn)全部放到an后面。如果bn-i > an,那么b就会贡献一个长度,否则就不贡献长度。由此还可以得出一个小结论,LIS是a(LIS)或者a(LIS)+1

 

#include<cstdio>
#include<set>
#include<list>
#include<queue>
#include<math.h>
#include<stdlib.h>
#include<string>
#include<string.h>
#include <stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<sstream>
#include<stack>
#include <utility>
#include<map>
#include <vector>

#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define inf 0x3f3f3f3f
//2147483647

#define int long long
//#include <bits/stdc++.h>
typedef long long ll;
#include<iostream>
using namespace std;

const int N = 1e6 + 10;
//long long MAX(long long a, long long b) { return a < b ? b : a; }

int a[N];
int b[N];
bool cmp(int e1, int e2) {
	return e1 > e2;
}
signed main() {
	int t; cin >> t;
	while (t--) {
		int n, m; cin >> n >> m;
		for (int i = 1; i <= n; i++) cin >> a[i];
		for (int i = 1; i <= m; i++) cin >> b[i];
		sort(b + 1, b + 1 + m, cmp);
		vector<int> ans;

		int pb = 1;
		for (int i = 1; i <= n; i++) {
			if (pb <= m && b[pb] >= a[i]) {
				ans.push_back(b[pb]);
				pb++;
				i -= 1;
			}
			else ans.push_back(a[i]);
			
		}
		for (int i = pb; i <= m; i++) ans.push_back(b[i]);


		//cout << "答案:";
		cout << ans[0];
		for (int i = 1; i < ans.size(); i++) {
			cout << " " << ans[i];
		}
		cout << endl;
	}



	return 0;
}

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

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

相关文章

C++设计模式——单例模式

单例设计模式 应用场景特点设计模式分类懒汉设计模式饿汉设计模式使用编写的测试代码运行结果 应用场景 当多个类都需要调用某一个类的一些公共接口&#xff0c;同时不想创建多个该类的对象&#xff0c;可以考虑将该类封装为一个单例模式。 特点 单例模式的特点&#xff1a;…

python -opencv 边缘检测

python -opencv 边缘检测 边缘检测步骤: 第一步&#xff1a;读取图像为灰度图 第二步&#xff1a;进行二值化处理 第三步&#xff1a;使用cv2.findContours对二值化图像提取轮廓 第三步&#xff1a;将轮廓绘制到图中 代码如下&#xff1a; from ctypes.wintypes import SIZ…

基于Vue+SpringBoot的医院门诊预约挂号系统 开源项目

项目编号&#xff1a; S 033 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S033&#xff0c;文末获取源码。} 项目编号&#xff1a;S033&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…

使用cli批量下载GitHub仓库中所有的release

文章目录 1\. 引言2\. 工具官网3\. 官方教程4\. 测试用的网址5\. 安装5.1. 使用winget安装5.2. 查看gh是否安装成功了 6\. 使用6.1. 进行GitHub授权6.1.1. 授权6.1.2. 授权成功6.2 查看指定仓库中的所有版本的release6.2.1. 默认的30个版本6.2.2. 自定义的100个版本6.3 下载特定…

华为数通HCIP 821BGP 知识点整理

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

《数据:挖掘价值,洞察未来

大数据&#xff1a;挖掘价值&#xff0c;洞察未来 我们正身处一个数据驱动的时代&#xff0c;大数据已经成为企业和个人决策的重要依据。本文将深入探讨大数据的魅力&#xff0c;挖掘其价值&#xff0c;并洞察未来发展趋势&#xff0c;让我们一起领略大数据的无穷奥秘。 一、大…

js-WebApi笔记之BOM

目录 window对象 定时器-延迟函数 location对象 navigator对象 histroy对象 本地存储 localStorage sessionStorage localStorage 存储复杂数据类型 window对象 BOM (Browser Object Model ) 是浏览器对象模型 window对象是一个全局对象&#xff0c;也可以说是JavaScr…

Redis字典实现

前言 字典又称符号表&#xff0c;关联数组或者映射(map)。是一种保存键值对的抽象数据结构。在字典中一个键和一个值进行关联。这些关联的值被称为键值对。 字典中每一个键都是独一无二的&#xff0c;没有重复的。我们可以通过键来查找值&#xff0c;更新值或者删除整个键值对等…

svn问题集

被锁定&#xff0c;无法拉取提交 解决方法

基于人工水母算法优化概率神经网络PNN的分类预测 - 附代码

基于人工水母算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于人工水母算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于人工水母优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

[OpenAirInterface-01]什么是OAI?OAI在github中源代码的存放结构

文章目录 前言&#xff1a;什么是软件无线电SDR第1章 什么是OAI&#xff08;OpenAirInterface&#xff09;1.1 来自官网的概述1.2 来自github的概述1.3 来自我的解读 第2章 什么是OSA2.1 OSA概述&#xff1a;2.2 OSA联盟职责2.3 OpenAirInterface github成员的角色 第3章 常见的…

【运维篇】5.4 Redis 并发延迟检测

文章目录 0.前言Redis工作原理可能引起并发延迟的常见操作和命令并发延迟检测分析和解读监控数据&#xff1a;优化并发延迟的策略 1. 检查CPU情况2. 检查网络情况3. 检查系统情况4. 检查连接数5. 检查持久化 &#xff1a;6. 检查命令执行情况 0.前言 Redis 6.0版本之前其使用单…

《视觉SLAM十四讲》-- 建图

11 建图 11.1 概述 &#xff08;1&#xff09;地图的几类用处&#xff1a; 定位&#xff1a;导航&#xff1a;机器人在地图中进行路径规划&#xff1b;避障重建交互&#xff1a;人与地图之间的互动 &#xff08;2&#xff09;几类地图 稀疏地图稠密地图语义地图 11.2 单目…

java学习part06数组

62-数组-数组的概述_哔哩哔哩_bilibili 这篇 Java 基础&#xff0c;我吹不动了 - 掘金 (juejin.cn) 1.数组概念 重点 2.数组声明和初始化 new的时候要么给出静态初始化的数据{a,b,c}&#xff0c;要么给出动态初始化指定长度 [4]。 否则报错&#xff0c;初始化必须确定长度…

Positive Technologies 利用 PT Cloud Application Firewall 保护中小型企业的网络资源

云产品按月订购&#xff0c;无需购买硬件资源 PT Cloud Application Firewall 是 Positive Technologies 推出的首个用于保护网络应用程序的商用云产品。Web 应用层防火墙 (web application firewall, WAF) 现在可以通过 技术合作伙伴——授权服务商和云提供商以订购方式提供1…

获取阿里云Docker镜像加速器

1、阿里云官网&#xff08;www.aliyun.com&#xff09;注册账号 2、打开“控制台首页” 控制台首页地址&#xff1a;https://home.console.aliyun.com/home/dashboard/ProductAndService 3、点击“概览->容器镜像服务 ACR” 4、打开“镜像工具->镜像加速器”页面&#x…

FPGA实现双向电平转换

网上搜了一圈&#xff0c;好像没看到的类似的中文资料&#xff0c;不过MicroSemi有个文档AC349上给出了完整的解决方案&#xff0c;还有参考代码。 话不多说&#xff0c;看图&#xff1a; 欲知详情的朋友&#xff0c;请参考 AC349

vue过渡,vue3组合式API详细介绍

7.过渡效果 vue提供了两个内置组件,可以帮助你制作基于状态变化的过渡和动画 Transition会在一个元素或组件进入和离开DOM时应用动画TransitionGroup会在一个v-for列表中的元素或组件被插入,移动,或移除时应用动画 7-1过渡效果 过渡模式 <Transition mode"out-in&q…

测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发

正交实验设计方法 一.方法简介 利用因果图来设计测试用例时, 作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人&#xff0c;给软件测试带来沉重的负担&#xff0c;为了有效…

YOLO目标检测——无人机航拍输电线路绝缘瓷瓶数据集下载分享【对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;电力系统运维、状态监测与故障诊断、智能电网建设等领域数据集说明&#xff1a;无人机航拍输电线路绝缘瓷瓶数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量…