首页 > 其他分享 >Codeforces Round 908 (Div. 2) A-D

Codeforces Round 908 (Div. 2) A-D

时间:2023-11-11 10:58:18浏览次数:39  
标签:cin int 908 Codeforces bi -- solve maxn Div

Secret Sport

观察到数据不大,直接摁住x和y枚举即可,方案合法当且仅当刚好打若干局,且赢最后一局的人是赢家

#include<bits/stdc++.h>
using namespace std;
void solve(){
    int n;
    cin>>n;
    string s;cin>>s;
    
    // x
    int wina=0,winb=0;
    for(int i=1;i<=n;i++){
        
        int a=0,b=0;
        int cnta=0,cntb=0,last=-1;
        for(int j=0;j<n;j++){
            if(s[j]=='A') a++;
            else b++;
            if(a==i){
                cnta++;
                a=b=0;
                last=1;
            } 
            else if(b==i){
                cntb++;
                a=b=0;
                last=0;
            }
        }
        if(!a&&!b){
            if(cnta>cntb&&last==1) wina++;
            else if(cnta<cntb&&!last) winb++;
            //cout<<i<<" "<<wina<<" "<<winb<<endl;
            //cout<<cnta<<" "<<cntb<<endl;
        }
    }
    if(winb==0) cout<<"A"<<endl;
    else if(wina==0) cout<<"B"<<endl;
    else cout<<"?"<<endl;
}
int main(){
    //freopen("lys.in","r",stdin);
    int t;
    cin>>t;
    while(t--){
        solve();
    }
}

Two Out of Three

显然可以构造对于某一个数x( x 出现次数>=2 ) ,第一个x对应填1,其余都填2

同理对于某一个数y( y 出现次数>=2 ),第一个y对应填1,其余都填3

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
int book[205],a[205];
void solve(){
	int n;cin>>n;
	memset(book,0,sizeof book);
	for(int i=1;i<=n;i++) {
		cin>>a[i];
		book[a[i]]++;
	}
	int cnt=0;
	int use[5];
	for(int i=1;i<=100;i++){
		if(book[i]>=2) {
			cnt++;
			if(cnt<=2) use[cnt]=i;
		}
	}
	if(cnt<2) {
		cout<<-1<<endl;
		return;
	}
	int ok1=0,ok2=0;
	for(int i=1;i<=n;i++){
		if(book[a[i]]>=2){
			if(a[i]==use[1]){
				if(!ok1) {
					cout<<1<<" ";
				    ok1=1;
				}
				else cout<<2<<" ";
			}
			else if(a[i]==use[2]){
				if(!ok2){
					cout<<1<<" ";
					ok2=1;
				}
				else cout<<3<<" ";
			}
			else cout<<1<<" ";
		}
		else cout<<1<<" ";
	}
	cout<<endl;
}
int main(){
//	freopen("lys.in","r",stdin);
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
	int t;
	cin>>t;
	while(t--){
		solve();
	}
}

C - Anonymous Informant

考虑怎么rollback一个操作(很显然只要能rollback  k 次,就能得到对应的合法解)

对于某个不动点x ,左移x次后必然在最后一位,所以当前序列的上一次操作必然是来自最后一个

那思路就很清晰了,又可以推上上个,对k和n取个min,看能否做k次即可

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int a[maxn];
void solve(){
    int n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++) cin>>a[i];
    
    int last=n-1;
    k=min(k,n);
    for(int i=1;i<=k;i++){
        if(a[last]>n) {
            cout<<"No"<<endl;
            return;
        }
        last=(last-a[last]+n)%n;
    }
    cout<<"Yes"<<endl;
}
int main(){
    int t;
    cin>>t;
    while(t--){
        solve();
    }
}

D - Neutral Tonality

观察一些性质:下界是LIS(a) ,上界是LIS(a)+1 

考虑上界什么时候取到(显然很好取到,把b排序完放在末尾即可)

问题转化成能否恒等于下界,相当于考虑m=1,插入每个bi能否不对LIS造成影响(显然如果能影响肯定是某一个有问题)

构造bi放在第一个x前面,使得 bi > a_x 即可

证明:显然前面的数都比bi大,不会构成长度为2的递增序列

对于后面的数,bi有可能作为小的数插入吗?没有,因为不如选a_x

证毕。

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int  a[maxn],b[maxn],c[maxn];
void solve(){
	int n,m;cin>>n>>m;
	int mx=-1,mi=INT_MAX;
	for(int i=1;i<=n;i++) cin>>a[i],mx=max(mx,a[i]),mi=min(mi,a[i]);
	for(int i=1;i<=m;i++) cin>>b[i];
	
	sort(b+1,b+m+1);
	int l=1,r=m;
	vector<int>ans;
	for(;l<=n||r>=1; ){
		if(l>n) {
			ans.push_back(b[r]);
			r--;
		}
		else if(r<1){
			ans.push_back(a[l]);
			l++;
		}
		else {
			if(b[r]>=a[l]) {
				ans.push_back(b[r]);
				r--;
			}
			else ans.push_back(a[l]),l++;	
		}
	}
	
	for(auto x:ans) cout<<x<<" ";
	cout<<endl;
}
int main(){
	//freopen("lys.in","r",stdin);
	int t;cin>>t;
	while(t--){
		solve();
	}
}

  

标签:cin,int,908,Codeforces,bi,--,solve,maxn,Div
From: https://www.cnblogs.com/liyishui2003/p/17825624.html

相关文章

  • Codeforces Round 887 (Div. 2)
    https://codeforces.com/contest/1853C题感觉很不好写的样子,首先通过打表发现最后答案每次都是+n,那么我们考虑前i个,假如当前的ans+i仍然小于a[i+1],则没有影响,我们依然可以直接往后跳,否则,我们越过了a[i+1],那么我们应当加上i+1,注意,这有可能会导致往后面继续跳,比如13567,我们跳......
  • 修改div中的内容
    在日常的开发中,我们会需要获取或者修改html元素内容。那么什么方法可以让我们做到这一需求呢,今天我就为大家讲解一下修改div中内容的方法。<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> </head> <body> <divid="box"><......
  • Codeforces Round 903 (Div. 3) ABCDE
    CodeforcesRound903(Div.3)ABCDEA.Don'tTrytoCount题意:复制\(s\)串若干遍,是否能在\(s\)串中找到\(t\)串。思路:直接暴力,注意不要超限,会MLE//AConemoretimes//nndbk#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmod=1e9+......
  • Educational Codeforces Round 157 D
    tilian不太会这种题发现找到一个数就能确定整个序列然后转而发现前缀异或和b1^b2=a1b1^b3=a2...我们发现要是n为偶数时能直接求出b1从而确定整个序列而为奇数时我们无法确定b1我们思考拆位之后如果b1该位为0算出真实的异或后的01个数b1该位为1算出真实的......
  • Codeforces Round 908 (Div. 2)
    比赛链接A.SecretSport题解O(1*T)对于一场比赛,结束前谁最后赢就是谁赢#include<bits/stdc++.h>usingnamespacestd;strings;voidsolve(){intn;cin>>n>>s;cout<<s[n-1]<<endl;}intmain(){intT;cin>>T......
  • CodeForces 852C Property
    洛谷传送门CF传送门NOIP模拟赛T1,小清新几何题。要让选出的点组成的多边形面积最大,就要让正多边形的面积减去选出的点组成的多边形面积最小。而这个面积差可以表示成\(2n\)个三角形的面积,即\(\sum\limits_{i=0}^{2n-1}S_{\triangleA_iA_{(i+1)\bmodn}B_{(i+......
  • Educational Codeforces Round 126 (Rated for Div. 2)
    https://codeforces.com/contest/1661/B题数据很小,直接bfs预处理就行C题随便猜了一下,设mx=\(max\{a_i\}\)最后的值应该是mx,mx+1,mx+2,mx+3之类的吧D题刚开始从前面考虑,陷入僵局,一度非常的困,学习凯库勒睡了一会,就突然想到了,前面不行,就从后面考虑,可以发现,从后面考虑的话,就非常......
  • 11月9月字体的属性2以及div模块的另一种用法
    目录字体的属性2文字对齐文字的装饰首行缩进文字的距离设置块级标签的另一个作用字体的属性2文字对齐、文字装饰、首行缩进、文字之间的距离文字对齐需要用到属性text-align,该属性是用于规定元素中的文本水平对齐方式。然后就是text-align的属性值:值描述left左边......
  • cf908(div2)题解(补题)
    纪念这次div2让我上绿名,但还是有点遗憾,差一点就可以过三题超神了比赛链接cf908div2A这题是个骗人题,整个比赛会停下来就是一个人赢够了回合数,那么在谁这停下来就是谁赢了整个比赛,不用管每回合赢得规则。#include<iostream>usingnamespacestd;#include<string>intmain(){......
  • Codeforces Round 908 (Div. 2)
    A.SecretSport题意:A与B选手在下棋,规定下赢X把看作赢一局,一共赢Y把的那个是最后的赢家。思路:因为不知道x,y到底是多少,n的范围是到20,所以只需要枚举x即可,时间复杂度不高,注意的是,如果枚举结果是A赢,那么给定字符串的最后一个值一定是A,反之也是。#include<bits/stdc++.h>usingnam......