首页 > 其他分享 >Div3

Div3

时间:2024-10-18 11:00:03浏览次数:1  
标签:cout 固定点 int 复杂度 MAXN Solve Div3

CF 1893 A

题目描述

有以下操作:

  • 选择数组 \(A\) 的一个固定点 \(x\)。固定点是指满足 \(A_x=x\) 的点。
  • 令 \(A\) 循环左移 \(x\) 次。

求数组 \(B\) 有没有可能是通过某个 \(A\) 执行 \(k\) 次操作得到的。

思路

可以发现,上次选择的固定点 \(x\) 一定被转到了最后面。按题意模拟即可。

时空复杂度均为 \(O(N)\)。

代码

#include<bits/stdc++.h>
using namespace std;

const int MAXN = 200001;

int t, n, k, a[MAXN];
bool vis[MAXN];

void Solve() {
  cin >> n >> k;
  for(int i = 1; i <= n; ++i) {
    cin >> a[i];
    vis[i] = 0;
  }
  for(int i = 1, p = n; i <= k && !vis[p]; ++i) {
    if(a[p] > n) {
      cout << "No\n";
      return;
    }
    vis[p] = 1;
    p = p + n - a[p] - (p + n - a[p] > n) * n;
  }
  cout << "Yes\n";
}

int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  for(cin >> t; t--; Solve()) {
  }
  return 0;
}

CF 1893 B

题目描述

给定数组 \(A,B\),你要把 \(B\) 中的数字插入到 \(A\) 中使得最终的 \(\text{LIS}(A)\) 尽可能小。

思路

最终肯定是使最终的 \(\text{LIS}\) 与原来相同。很明显有以下构造方法:

  • 从大到小枚举 \(B\) 中的数,找到 \(A\) 中第一个小于它的,并把它插在前面。

空间复杂度 \(O(N+M)\),时间复杂度 \(O(M\log M)\)。

代码

#include<bits/stdc++.h>
using namespace std;

const int MAXN = 200001;

int t, n, m, a[MAXN], b[MAXN];

void Solve() {
  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 + m + 1, greater<int>());
  int i = 1, j = 1;
  for(; i <= n; ++i) {
    for(; j <= m && b[j] >= a[i]; ++j) {
      cout << b[j] << " ";
    }
    cout << a[i] << " ";
  }
  for(; j <= m; ++j) {
    cout << b[j] << " ";
  }
  cout << "\n";
}

int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  for(cin >> t; t--; Solve()) {
  }
  return 0;
}

标签:cout,固定点,int,复杂度,MAXN,Solve,Div3
From: https://www.cnblogs.com/yaosicheng124/p/18473859

相关文章

  • Codeforces Round 970 div3
    CodeforcesRound970div3错过的一场比赛,第二天早晨VP,题目的通过率还挺奇怪A.Sakurako'sExamhttps://codeforces.com/contest/2008/problem/A题意:有a个1和b个2的数组,在1和2前面增添加减号,判断是否能让结果为0思路:1个2需要2个1进行填补,不如先让2自己进行消去,如......
  • CF Round 966 Div3
    A给定一个字符串,判断是不是大于等于10210^2102的形式,例如......
  • HT-018 Div3 构造 题解 [ 黄 ] [ 数学 ] [ 结论 ]
    构造:结论题,gcy数竞大佬tql%%%orz。结论先放结论:如果\(x\bmod4=2\),那么\(x\)无法被表示为\(a^2-b^2\)的形式;除此之外的其他数都可以。证明对\(a^2-b^2\)因式分解,得\(x=(a+b)(a-b)\)。当\(x\bmod2=1\)时包含\(x\bmod4=1\)和\(x\bmod4=3\)的情况。......
  • HT-018 Div3 能量消耗 题解 [ 绿 ] [ 线性 dp ] [ 前缀和优化 ]
    能量消耗:一个前缀和优化dp的大典题,要是数据水一点\(O(n^3)\)都能硬草过去。思路显然,定义\(dp[i]\)为考虑前\(i\)个塔,并且将前面的精灵全部收集的最小代价。于是转移:\[dp[i]=min(dp[i],dp[j]+w(j,i)+c[i])\]其中\(0\lej<i\lem\),\(w(j,i)\)表示收集从塔\(j\)到......
  • CF Div3 962补题 E-F
    CFDiv3962补题E-FE.Decode链接:Problem-E-Codeforces简要题意:给你一个长度为\(n\)的二进制字符串\(s\)。对于每一对整数\((l,r)\)\((1\leql\leqr\leqn)\)中,数出\((x,y)\)\((l\leqx\leqy\leqr)\)这样的整数对的个数。\((l\leqx\leqy\leq......
  • Codeforce 962 Div3 C~E 题解
    C题目大意​给定两个字符串a,b,q个询问,每次操作可以将a[i]赋值为任意一个字符,每次询问[l,r]区间内使得sorted(a[l,r])==sorted(b[l,r])的最小操作次数分析​ 不妨先考虑一个区间如何判断sorted后的字串是否相等,发现跟字符出现的次数有关,于是考虑前缀和预处理每一个26......
  • Codeforces 913 div3 A-G
    A题意分析把给定的坐标的那一行和那一列的其他所有坐标都输出来C++代码#include<iostream>usingnamespacestd;intmain(){ intt; cin>>t; while(t--){ strings; cin>>s; for(inti=1;i<=8;i++){ if(i+'0'!=s[1])cout<<s[0]<<i<<end......
  • Codeforces 929 div3 D
    题目:D.TurtleTenacity:ContinualMods题目链接:https://codeforces.com/contest/1933/problem/D算法:数论、贪心。一开始没思路,后面看了别人的题解才搞懂的。思路:1.将原数组a从大到小排序后可以得到的数组b有两种情况。一种是b0!=b1,另一种则是b0=b1(下标从0开始)。对于第一......
  • CodeForces Round 957 (Div3)
    蒟蒻找了一些简单题做了而已,别太在意……比赛链接CodeForcesRound957(Div3)A.OnlyPluses题意三个正整数\(a,b,c\),有五次操作机会。每次操作:选取\(a,b,c\)中任意一个数,将这个数加上一。要求最大化\(a\timesb\timesc\)。思路很直接的贪心题。假设有三个正整......
  • div3E. Beautiful Array
    目录E.BeautifulArray原题链接题目思路代码E.BeautifulArray原题链接题目思路代码//https://codeforces.com/contest/1986/problem/E#include<bits/stdc++.h>#definecaseT\intT;\cin>>T;\while(T--)usingnamespacestd;usingll=lo......