栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Codeforces Round #746 (Div. 2 A/B)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Codeforces Round #746 (Div. 2 A/B)

A-Gamer Hemose

传送门

题目描述

输入描述

输出描述

输入样例

3
2 4
3 7
2 6
4 2
3 11
2 1 7

输出样例

1
2
3

样例解释


签到题,轮换使用两把伤害最高的武器即可,为方便计算,可先将两把武器的伤害叠加取模。

特判余数与伤害最高的武器之间的关系即可。

参考代码

#include  
using namespace std;
typedef long long ll;

const int N=1010;

int main(){
	int t;
	cin>>t;
	while(t--){
		ll n,h;
		ll a[N];
		cin>>n>>h;
		for(int i=1;i<=n;i++)
			cin>>a[i];
		
		sort(a+1,a+n+1);
		if(a[n]>=h)
			cout<<"1"<=h)
				cout<<2*ans+1< 
B-Hemose Shopping 

传送门

题目描述

输入描述

输出描述

输入样例

4
3 3
3 2 1
4 3
1 2 3 4
5 2
5 1 2 3 4
5 4
1 2 3 4 4

输出样例

NO
YES
YES
YES

样例解释


题目大意: 对于一个数组(下标从 1 开始),可以任意交换两个下标之差不小于 x 的元素,问该数组是否可以通过有限次交换形成非下降序列。

对于所有样例,易得当 x = 1 时一定可以,而对于样例 1,可以模拟出若 x = 2,能够通过交换 1 和 3 满足题意,此时的 2 虽然不可移动(原因是它最近必须与下标为 0 或 4的元素互换,而该数组的有效下标为 1 - 3 ),但由于其恰好符合非下降序列时该位的值,因此符合要求。

可取样例 n = 5,x = 2,[ 5,1,2,3,4 ] 模拟,不难发现其中的任何一个数都能通过多次变换移动到任何位置,例 2 -> 4 -> 5 -> 3 -> 1 (此处均以原序列中的数字代替其下标)。而当 x = 3 时,2 将不可进行移动,5,1,3,4 仍可移动到这四个数字中的任何位置。当 x = 4 时,1,2,3 将不可进行移动。即对于每个数组,其不可移动区间为[ n - x + 1 , x ] 。

若某数组想满足非下降序列,则需其不可移动区间内的各个数字均与该数组 sort 后对应下标的值相同。

参考代码

#include 
using namespace std;

typedef long long ll;
const int N=1e5+10;

int main(){
	int t;
	cin>>t;
	while(t--){
		int n,x,flag=1;
		int a[N],b[N];
		cin>>n>>x;
		int y;
		for(int i=1;i<=n;i++){
			cin>>y;
			a[i]=b[i]=y;
		}
		sort(b+1,b+n+1);
		for(int l=n-x+1;l<=x;l++){
			if(a[l]==b[l]){
				continue;
			}
			else{
				cout<<"NO"<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296264.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号