Codeforces Round 893 (Div. 2)(VP-7,寒假加训)

VP时间

A.

关键在于按c的按钮

c&1

Alice可以多按一次c按钮

也就是a多一个(a++)

之后比较a,b大小即可

!(c&1)

Alice Bob操作c按钮次数一样

1.ac

B.贪心

一开始会吃饼干

如果有卖饼的就吃

如果隔离一段时间到d没吃就吃(当时间快到的时候卖一次饼)

n是长度

枚举一遍卖饼的位置

不移除

吃饼量=((s[i]-s[i-1]-1)/d)求和

s[i]到s[i-1]之间的距离(s[i-1],s[i])不到s[i]因此要-1

枚举一遍卖饼的位置

还有特判(s[0]=1-d,s[m+1]=n+1),-d+1(到1就吃一口饼),n+1(到n可能会吃一口饼)

res-=(s[i]-s[i-1]-1)/d;

res-=(s[i+1]-s[i]-1)/d;

res+=(s[i+1]-s[i-1])/d;

res+=m-1;

计算出res

ans=min(ans,res)

if(ans==res)cnt++;

C.

gcd最大的数是n/2

gcd(a[i],a[i+1])

i,2*i放一起为最优解

i 枚举奇数

1.ac

题解

A.

// Problem: A. Buttons
// Contest: Codeforces - Codeforces Round 893 (Div. 2)
// URL: https://codeforces.com/contest/1858/problem/A
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//へ     /|
//  /\7    ∠_/
//  / │   / /
// │ Z _,< /   /`ヽ
// │     ヽ   /  〉
//  Y     `  /  /
// イ● 、 ●  ⊂⊃〈  /
// ()  へ    | \〈
//  >ー 、_  ィ  │ //
//  / へ   / ノ<| \\
//  ヽ_ノ  (_/  │//
//	  7       |/
//	  >―r ̄ ̄`ー―_
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
void solve() {
	int a,b,c;
	cin>>a>>b>>c;
	if(c&1){
		a++;
		if(a>b){
			cout<<"First"<<'\n';
		}else{
			cout<<"Second"<<'\n';
		}
	}else{
		if(a>b){
			cout<<"First"<<'\n';
		}else{
			cout<<"Second"<<'\n';
		}
	}


}

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int q;
	cin >> q;
	while (q--) {
		solve();
	}

	return 0;
}

B.

// Problem: B. The Walkway
// Contest: Codeforces - Codeforces Round 893 (Div. 2)
// URL: https://codeforces.com/contest/1858/problem/B
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//へ     /|
//  /\7    ∠_/
//  / │   / /
// │ Z _,< /   /`ヽ
// │     ヽ   /  〉
//  Y     `  /  /
// イ● 、 ●  ⊂⊃〈  /
// ()  へ    | \〈
//  >ー 、_  ィ  │ //
//  / へ   / ノ<| \\
//  ヽ_ノ  (_/  │//
//	  7       |/
//	  >―r ̄ ̄`ー―_
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e5 + 9;
int s[N];
void solve() {
	int n,m,d;
	cin>>n>>m>>d;
	for(int i=1;i<=m;i++){
		cin>>s[i];
	}
	s[0]=-d+1;
	s[m+1]=n+1;
	int sum=0;
	for(int i=1;i<=m+1;i++){
		sum+=(s[i]-s[i-1]-1)/d;		
	}
	int ans=n+1;
	int cnt=0;
	for(int i=1;i<=m;i++){
		int res=sum;
		res-=(s[i]-s[i-1]-1)/d;
		res-=(s[i+1]-s[i]-1)/d;
		res+=(s[i+1]-s[i-1]-1)/d;
		res+=m-1;
		if(res> q;
	while (q--) {
		solve();
	}

	return 0;
}

C.

// Problem: C. Yet Another Permutation Problem
// Contest: Codeforces - Codeforces Round 893 (Div. 2)
// URL: https://codeforces.com/contest/1858/problem/C
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//へ     /|
//  /\7    ∠_/
//  / │   / /
// │ Z _,< /   /`ヽ
// │     ヽ   /  〉
//  Y     `  /  /
// イ● 、 ●  ⊂⊃〈  /
// ()  へ    | \〈
//  >ー 、_  ィ  │ //
//  / へ   / ノ<| \\
//  ヽ_ノ  (_/  │//
//	  7       |/
//	  >―r ̄ ̄`ー―_
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
void solve() {
	int n;
	cin>>n;
	vector a;
	for(int i=1;i<=n;i+=2){
		for(int j=i;j<=n;j*=2){
			a.push_back(j);
		}
	}
	for(int i=0;i> q;
	while (q--) {
		solve();
	}

	return 0;
}

你可能感兴趣的:(算法)