当前位置: 代码迷 >> 综合 >> CF1592B Hemose Shopping
  详细解决方案

CF1592B Hemose Shopping

热度:100   发布时间:2023-10-14 00:35:49.0

原题链接

题意

CF1592B Hemose Shopping

思路

可以交换距离 xxx 的元素,那么就看 xxx 能否覆盖住整个数组,

如果x?2<=nx * 2 <= nx?2<=n说明可以覆盖,否则不能覆盖。
不能覆盖的话就看未被覆盖部分是否符合要求,因为不能移动。
不覆盖的范围是[n?x+1,x][n - x + 1,\ x ][n?x+1, x].

CF1592B Hemose Shopping

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;int a[N];
int b[N];int main()
{
    int t; scanf("%d", &t);while (t -- ){
    int n, x; scanf("%d%d", &n, &x);for (int i = 1; i <= n; i ++ ) {
    scanf("%d", &a[i]);b[i] = a[i];}if (x * 2 <= n) printf("YES\n");else{
    sort(b + 1, b + 1 + n);bool f = 0; for (int i = n - x + 1; i <= x; i ++ ){
    if (a[i] != b[i]){
    f = 1;break;}}if (!f) printf("YES\n");else printf("NO\n");}}return 0;
}

总结

我不理解,为什么会超时。。。
CF1592B Hemose Shopping