首页 > 其他分享 >Codeforces Round 873 (Div. 2)(A,B,C)

Codeforces Round 873 (Div. 2)(A,B,C)

时间:2023-05-15 21:26:14浏览次数:28  
标签:const int LL Codeforces cin 873 序号 Div define

A

//由求和公式(n*(n-1))/2知道当n为偶数就行,我们将每个序号乘以2就满足了  
#include <iostream> using namespace std; const int N =210; int t; int n; int main() { cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++){ cout<<i*2<<' '; } cout<<endl; } return 0; }

  

B

开始读假了,题目描述对于j,i交换使得a[i]==i(即让序号上的数为序号值),每次交换的距离为a[i]-i(需要绝对值),

如果使得每个序号满足的话每次可以移动每个距离的因子次数,而全部满足的最大距离就是最大公因子

求一次GCD即可

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int a[N];
int t;
int n;
int main(){
cin>>t;
while(t--){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    
    int ans=abs(a[1]-1);
    for(int i=2;i<=n;i++){
        ans=__gcd(ans,abs(a[i]-i));
    }
    cout<<ans<<endl;
}



    return 0;
}

 

C

//对b[i]二分查找,寻找最小的大于等于a[i]的下标,说明该下标之前可以放入a[i]但是每次放入下次放入就会少一次选择,所以用一个计数器cnt统计已经占了多少位置

#include <bits/stdc++.h> using namespace std; #define endl '\n' #define LL long long #define ph push_back #define INF 0x3f3f3f3f #define PII pair<int, int> const int N = 2e5 + 10; const int MOD = 1e9 + 7; int t; int n; LL a[N]; LL b[N]; void solve() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i <= n; i++) { cin >> b[i]; } sort(a + 1, a + 1 + n); sort(b + 1, b + 1 + n); LL res = 1; LL cnt = 0; for (int i = 1; i <= n; i++) { LL pos = (lower_bound(b + 1, b + 1 + n, a[i]) - b) - 1; //找到b中最小的大于等于a[i]的位置,那么a[i]可以放在该位置前面,并且占一个位置 res = (res * (pos - cnt)) % MOD; cnt++; } cout << res % MOD << endl; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); cin >> t; // t = 1; while (t--) { solve(); } return 0; }

  

 

标签:const,int,LL,Codeforces,cin,873,序号,Div,define
From: https://www.cnblogs.com/xumaolin/p/17403151.html

相关文章

  • Codeforces Round #358 (Div. 2) -- B. Alyona and Mex (思路水题)
    B.AlyonaandMextimelimitpertestmemorylimitpertestinputoutputSomeonegaveAlyonaanarraycontainingnpositiveintegersa1, a2, ..., an.Inoneoperation,Alyonacanchooseanyelementofthearray......
  • Codeforces Round 869
    \(\texttt{A.AlmostIncreasingSubsequence}\)把\(a_i>a_{i+1}\)的极长下降区间称为一个段,那么显然,一个长度为\(len\)的极长下降区间最多选\(\min(2,len)\)个,并且可以达到这个数,因此记录每个位置属于哪个段,记录个前缀和就好了。#include<bits/stdc++.h>usingnamespaces......
  • CF1794B Not Dividing题解
    如果\(a_i\)可以整除\(a_{i-1}\),只要在\(a_i\)上\(+1\)即可,这样\(a_i\bmoda_{i-1}=1\)就满足题目要求了,如果这样算来最多进行\(n\)次操作。但同时要注意\(a_{i-1}=1\)的情况。如果\(a_{i-1}\)为\(1\),那么怎么\(+1\)都是\(a_i\bmoda_{i-1}=......
  • CF1799B Equalize by Divide题解
    本蒟蒻学习了jiangly大佬的思想,来发一个题解。大致题意:给定一个\(n\)个元素的数组\(a\),每次可以选择\(a[i]\)和\(a[j]\),然后使\(a[i]=\lceil\frac{a_i}{a_j}\rceil\),如果最后可以使数组中的所有元素都相等,那么输出Yes,并输出每一个操作\(i,j\);否则输出No。本人不......
  • div 调像素
    在div上居中   <divclass="container"style="display:flex;justify-content:center;align-items:center;">   在圖像調<imgid=im1style="max-width:150%;max-height:150%;class="widgetwidget-image"......
  • Educational Codeforces Round 148 [Rated for Div. 2]A~C
    A#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=60;charc[N];voidrun(){ scanf("%s",c+1); intn=strlen(c+1); map<char,int>st; st[c[1]]++; for(inti=2;i<=n/2;++i) ......
  • Educational Codeforces Round 148 (Rated for Div. 2) A-D 题解
    比赛地址A.NewPalindrome题意:给一个回文串,判断是否能重新排成另一个回文串Solution存不同对的个数即可voidsolve(){ strings; cin>>s; intn=s.length(); set<char>st; for(inti=0;i<n/2;i++) { st.insert(s[i]); } if(st.size()>1)cout<<"YES\n"; els......
  • cf 870div2 abcd题解
    A题,先假设一个res从0开始,判断说谎人的个数用ans表示,如果res==ans则假设成立#include<iostream>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefdoubledb;typedefpair<int,int>PII;constllINF=0x3f3f3f3f;constintN=1e4+10;in......
  • Codeforces 1781H1 - Window Signals (easy version)
    很套路的一道题,把F1写了,F2感觉和F1gap不太大就懒得写了/shui首先需要明白大致思路:直接计算\(2^{nm-k}-1\)之所以会算重,是因为对于同一种图案,可能把它放在很多位置都是合法的。那么显然我们需要选一个代表元来把它的贡献唯一化,非常自然的想法就是把它固定在最左上角那个合......
  • Codeforces Round 872 (Div. 2)
    CodeforcesRound872(Div.2)感谢灵茶山艾府A(脑筋急转弯)给一个回文字符串,找出最长的不回文子串。子串可以是不连续的。没有则输出-1;如果全都是一个字母,那就是-1否则是n-1。因为在原来回文的基础上总可以去掉一个使得不回文(前提是不是全部都是一个字母)B(贪心)给出n*m个数,......