首页 > 其他分享 >CF1750A Indirect Sort 题解

CF1750A Indirect Sort 题解

时间:2022-12-25 07:45:19浏览次数:60  
标签:Sort int 题解 CF1750A isdigit getchar

题目传送门

题目大意

有 \(T\) 组长度为 \(n\) 的排列;

每组进行若干次操作(每次操作选择三个数 \(i\),\(j\),\(k\)):

若 \(a_i>a_k\) 将 \(a_i\) 加上 \(a_j\),否则就交换 \(a_j,a_k\);

问是否能使排列经过操作变成一个单调递增的序列。

解题思路

可以用一些小技巧:

由题意可知:

当 \(a_1=1\) 时,从 \(a_2\) 到 \(a_n\) 进行排序操作,最终就可以变成一个单调递增的序列。

当 \(a_1\) 不等于 \(1\) 时,它只能被增加,永远不能变成 \(1\)。

所以要满足的条件就是 \(a_1=1\),是输出 \(Yes\),否输出 \(No\) 即可。

代码

#include<bits/stdc++.h>
#define ri register int
using namespace std;
template <class T> void r(T&x){
	x = 0; int w = 0; char g = getchar();
	while(!isdigit(g)) {
		w = (g == '-'); g = getchar();
	} while(isdigit(g)) {
		x = (x << 3) + (x << 1) + (g xor 48); g = getchar();
	} x = w?-x:x; return;
}
int n;
int main(){
    r(n);
    while(n--){
        int x,y,s;
       	r(x),r(y);
        for(ri i=2;i<=x;i++)
			r(s);
        if(y==1)
			cout<<"Yes"<<'\n';
        else 
			cout<<"No"<<'\n';
    }
    return 0;
}

由于加了快读,代码可能显得比较冗长,但其实还是比较简单的。

标签:Sort,int,题解,CF1750A,isdigit,getchar
From: https://www.cnblogs.com/zzyblog0619/p/17003639.html

相关文章

  • AT_abc279_a [ABC279A] wwwvvvvvv 题解
    题目传送门题目大意给定仅由v和w构成的字符串\(S\),输出\(S\)中有几处向下凸出的部分。解题思路v有一处向下凸出的部分,w有两处向下凸出的部分,所以如果\(S_i\)......
  • P8813 [CSP-J 2022] 乘方 题解
    题目传送门题目大意给定\(a\)和\(b\),如果\(a^b\)的值不超过\({10}^9\),则输出\(a^b\)的值,否则输出-1;解题思路特判即可:如果\(a^b\)的值不超过\({10}^9\),用......
  • AT_pakencamp_2019_day3_a パ研合宿2103 题解
    题目传送门题目大意从\(12\)月\(A\)日早上开始,到\(12\)月\(B\)日傍晚一共有几天?解题思路要求多少天,就将他们相减,但是用\(B-A\)得到的是\(A\)到\(B-1\)这......
  • AT_past202010_a 中央値 题解
    题目传送门题目大意输入三个数,输出他们的中第二大的数的编号(这三个数的编号分别用ABC来表示)。解题思路将这三个数赋给另外三个数,再将这三个数按冒泡的思想排好序(so......
  • AT_iroha2019_day1_c Halcyon 题解
    题目传送门题目大意输入\(N\),表示\(12\)月\(N\)日,输出它的前七天与它。解题思路因为$8\\leq\N\\leq\31$:可以直接输出\(N\)减\(7\)到\(1\)。还......
  • AT_iroha2019_day1_a 一問目 题解
    题目传送门题目大意输入字符串\(S\),找出\(S\)的第一个字符。解题思路输入一串字符串,输出字符串的第一个字符。s=input()print(s[0])......
  • go的sort包
    基础方法调用packagemainimport("fmt""sort")funcmain(){intList:=[]int{2,4,3,5,7,6,9,8,1,0}float8List:=[]float64{4......
  • CF1735A Working Week 题解
    题目传送门题目大意一周有\(n\)天,有三天休息日,其中第\(n\)天一定休息。现需要安排剩下的两个休息日,要求:不能使得休息日相邻。这两个休息日将\(n-1\)天分成三......
  • C++ sort函数中利用lambda进行自定义排序规则
    在c++中,由于sort()函数默认提供的是由小到大的排序方式,因此有时候我们需要自定义排序规则来实现由大到小的排序。一维vector<>排序#include<bits/stdc++.h>usingnam......
  • CF1666K Kingdom Partition 题解
    题意给定\(n\)个点\(m\)条边的无向图,边有边权\(l\)。需要将点划分成\(A,B,C\)三个集合。\(A\)或\(B\)内部的边有\(2l\)的贡献,\(AC\)或\(BC\)之间的边有......