首页 > 其他分享 >[Codeforces] CF1717C Madoka and Formal Statement

[Codeforces] CF1717C Madoka and Formal Statement

时间:2023-11-24 21:13:17浏览次数:37  
标签:Madoka 数列 NO int Codeforces leq flag CF1717C YES

时间限制 \(1s\) | 空间限制 \(250M\)

题目大意

题目描述

给定一个数列 \(a_{1…n}\), 如果满足下面条件, 你可以使 \(a_i = a_i + 1\):

  • \(i < n\) 且 \(a_i \leq a_{i+1}\)
  • \(i = n\) 且 \(a_i \leq a_{1}\)

再给定一个数列 \(b_{1…n}\), 问 \(a\) 是否可以通过上述操作变为 \(b\).

输入格式

本题多测.

第一行为 \(t\), 表示 \(t\) 组数据.

接下来 \(t\) 组数据,每组第一行为一个正整数 \(n\),

第二行为 \(n\) 个整数, 代表数列 \(a\);

第三行为 \(n\) 个整数, 代表数列 \(b\).

保证 \(\Sigma n \le 2×10^5\).

输出格式

对于每组数据,输出 "YES""NO".

输入数据 输出数据
5
3
1 2 5
1 2 5
2
2 2
1 3
4
3 4 1 2
6 4 2 5
3
2 4 1
4 5 3
5
1 2 3 4 5
6 5 6 7 6
YES
NO
NO
NO
YES

(感谢kjc提供的思路

思路

由如下两个条件:

  • \(i < n\) 且 \(a_i \leq a_{i+1}\)
  • \(i = n\) 且 \(a_i \leq a_{1}\)

可以推出,如果\(a\)可以通过若干次操作形成\(b\),那么他们一定满足:

  • 很明显,\(a_i \leq b_i\)

  • 那么,根据第二个条件,可以发现每个\(a_{i}\)最大只能变成\(a_{i+1}+1\),所以同理到数组\(b\)也应满足:\(b_{i}\leq b_{i+1}+1\space (a_i \neq b_i)\)

代码

#include<bits/stdc++.h>
using namespace std;
const int Maxn=2e5+10;
int a[Maxn],b[Maxn];
int n,flag;
void run()
{
	cin>>n;flag=1;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++)
	{
		cin>>b[i];
		if(b[i]<a[i]) flag=0;
	}
	for(int i=1;i<n&&flag;i++)
	{
		if(a[i]!=b[i] && b[i]>b[i+1]+1) flag=0;
	}
	if(b[n]>b[1]+1 && a[n]!=b[n]) flag=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]!=b[i])
		{
			cout<<(flag?"YES":"NO")<<endl;
			return;
		}		
	}
	cout<<"YES"<<endl;
}
int main()
{
	int t;
	cin>>t;
	while(t--) run();
	system("pause");
}

标签:Madoka,数列,NO,int,Codeforces,leq,flag,CF1717C,YES
From: https://www.cnblogs.com/lyk2010/p/17854770.html

相关文章

  • [Codeforces] CF1703F Yet Another Problem About Pairs Satisfying an Inequality
    时间限制\(2s\)|空间限制\(250M\)题目描述给你一个序列$a_1,a_2,\dotsa_n$。请计算出满足下面条件的$(i,j)(1\leqi,j\leqn)$个数。$a_i<i<a_j<j$.输入格式第一行包含一个整数$t$($1\leqt\leq1000$)—测试数据的个数每一个......
  • [Codeforces] CF1857D Strong Vertices
    StrongVertices-洛谷题解是个好东西题意给定两个数组 \(a\) 和 \(b\),对此构造一张有向图:若 \(a_u−a_v≥b_u−b_v\),则 \(u\) 向 \(v\) 连边。求所有向其他所有顶点连边的顶点个数,并按从小到大顺序输出它们。思路先对原式进行转换:\(a_u-b_u\geqa_v-b_v\)接着......
  • [Codeforces] CF1714E Add Modulo 10
    题目传送门代码一遍AC真的很爽,样例都是一遍过题意每个测试点含多组测试数据。对于每组测试数据第1行一个整数\(n\),表示该数据个数第2行\(n\)个整数,你需要判断是否符合题意的数据对每组数据,你可以对其作若干次(可以为零)如下操作:选取数据中的一个数\(a_i\)将其替换......
  • [Codeforces] CF1719C Fighting Tournament
    题目传送门另:多测不清空,WA两行泪题意Burenka正准备去观看一年中最有趣的体育活动——她朋友Tonya组织的格斗锦标赛。有n名运动员参加了大赛,标号分别为为1,2,...,n。第i名运动员的实力是\(a_i(1\lea_i\len)\)。每个运动员的实力是不同的,也就是说,数组a是n的一种......
  • [Codeforces] CF1728C Digital Logarithm
    题目传送门很奇妙的一道题,我想到了正解,但是又没有完全想到题意我们定义\(f(x)\)表示取出\(x\)在十进制下的位数。(如\(f(114514)=6,\;f(998244353)=9\))。形式化讲,就是\(f(x)=\lfloor\log_{10}x\rfloor+1\)。给定两个数组\(a\)和\(b\),求执行若干次以......
  • [Codeforces] CF1475C Ball in Berland
    BallinBerland-洛谷题意在毕业典礼上,有\(a\)个男孩和\(b\)个女孩准备跳舞,不是所有的男孩和女孩都准备结伴跳舞。现在你知道\(k\)个可能的舞伴,你需要选择其中的两对,以便使没有人重复地出现在舞伴里,求可能的数量。思路暴力最朴素,也是简单的方法,就是通过暴力组合进行配对。......
  • [Codeforces] CF1506C Epic Transformation
    EpicTransformation-洛谷算是今天的题目里边思维难度最高的一道了,但是代码真的简单的要死题意你有一个长度为 \(n\) 的序列 \(a\),你可以对其进行下列操作:选择 \(i,j\) 满足 \(*a_i\neqa_j*\) 然后删除 \(*a_i,a_j*\) 两个数。求序列 a 经过若干次操作后最少......
  • [Codeforces] CF1705C Mark and His Unfinished Essay
    题目传送门题意给定长度为\(n\)的字符串\(s\),进行\(c\)次操作,每次操作将\(s_l\)到\(s_r\)复制到字符串尾。全部操作结束后有\(q\)次询问,每次询问字符串\(s\)的第\(k\)位。数据保证\(r\)不超过当前字符串长度,\(k\)不超过最终字符串长度。思路及分析通过数......
  • [Codeforces] CF1858C Yet Another Permutation Problem
    YetAnotherPermutationProblem-洛谷这题本来很简单,思路我也想到了,但是代码一直没写对,思路也一直换来换去(悲然而发现最开始的思路是对的题意Alex收到了一个名为"GCD排列"的游戏作为生日礼物。这个游戏的每一轮进行如下操作:首先,Alex选择一个整数序列\(a_1,a_2,…,a_......
  • Codeforces Round 905 (Div. 3)
    CodeforcesRound905(Div.3)A.Morning题意:操作:显示,向前走都为一次操作;目标:显示这四个数思路:0->10,然后依次作差就行#include<bits/stdc++.h>usingnamespacestd;voidsolve(){chara[4];intmi=100,sum=4,b[4];for(inti=0;i<4;i++){cin>>a[i]......