【超好懂的比赛题解】Codeforces Round #760 (Div. 3)

57 篇文章 0 订阅
38 篇文章 0 订阅

title :Codeforces Round #760 (Div. 3)
date : 2021-12-15
tags : ACM,练习记录
author : Linno


题目链接 :Codeforces Round #760 (Div. 3)

补题进度:4/7

小结:E题以为是一个线代题,结果被数据和没模数劝退了。前面出题慢,4题不补了。

A. Polycarp and Sums of Subsequences

题面

给你七个数 b 1 , b 2 . . . b 7 b_1,b_2...b_7 b1,b2...b7,分别是 a 1 , a 2 , a 3 a_1,a_2,a_3 a1,a2,a3的七个子序列和。求 a 1 , a 2 , a 3 a_1,a_2,a_3 a1,a2,a3

思路

最大那个数是 a 1 + a 2 + a 3 a_1+a_2+a_3 a1+a2+a3,最小那个数设为 a 1 a_1 a1,那么暴力找一下 a 2 , a 3 a_2,a_3 a2,a3即可。

代码

#pragma GCC optimize("Ofast", "inline", "-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define int long long
using namespace std;
const int N=2e5+7;
const int mod=1e9+7;
int t,b[10];
signed main(){
	cin>>t;
	while(t--){
		int flag=0;
		for(int i=1;i<=7;i++){
			cin>>b[i];
		}
		for(int i=2;i<=5;i++){
			for(int j=2;j<=5;j++){
				if(b[i]+b[j]==b[7]-b[1]){
					cout<<b[1]<<" "<<b[i]<<" "<<b[j]<<"\n";
					flag=1;
					break; 
				}
			}
			if(flag) break;
		}	
	}
	return 0;
}

B. Missing Bigram

题面

给你n-2个长度·1为2的ab串,在出现顺序不变的情况下构造一个长度为n的ab串。保证有方案。

思路

如果头尾相同则缩减,最终长度肯定是小于等于n的,剩余部分填充即可。

代码

#pragma GCC optimize("Ofast", "inline", "-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define int long long
using namespace std;
const int N=2e5+7;
const int mod=1e9+7;

int t,n,len;
string str[105];
char ans[100005];

signed main(){
	cin>>t;
	while(t--){
		cin>>n;
		int m=n-2;
		for(int i=1;i<=m;i++) cin>>str[i];
		char lst=str[1][1],ans[250];
		ans[0]=str[1][0],ans[1]=str[1][1];
		int len=2;
		for(int j=2;j<=m;j++){
			if(lst!=str[j][0]){
				ans[len++]=str[j][0];
				lst=ans[len++]=str[j][1];
			}else lst=ans[len++]=str[j][1];
		}
		if(len<=n){
			for(int j=0;j<len;j++) cout<<ans[j]; 
			for(int j=len;j<n;j++) cout<<'a';
			cout<<"\n";
		}
	}
	return 0;
}

C. Paint the Array

题面

给你n个数,选一个d,能整除d的数为红色,否则为蓝色,满足使得相邻两个数之间颜色不一样。如果没有合适的d则输出0。

思路

我们按位置可以把数分为两组记为v1和v2。这两组数的GCD算出来后,答案肯定在这两个数之中。没开long long wa了一发……

代码

#pragma GCC optimize("Ofast", "inline", "-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define int long long
using namespace std;
const int N=2e5+7;
const int mod=1e9+7;

int t,n,a[105],d1,d2;
vector<int>v1,v2;

int gcd(int a,int b){return b?gcd(b,a%b):a;}

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>t;
	while(t--){
		cin>>n;
		v1.clear();v2.clear();
		for(int i=1;i<=n;i++){
			cin>>a[i];
			if(i&1) v1.push_back(a[i]);
			else v2.push_back(a[i]);
		}
		d1=v1[0],d2=v2[0];
		for(int i=1;i<v1.size();i++){
			d1=gcd(v1[i],d1);
		}
		for(int i=1;i<v2.size();i++){
			d2=gcd(v2[i],d2);
		}
		int flag=d1;
		for(int i=2;i<=n;i++){
			if(a[i-1]%flag==a[i]%flag){
				flag=0;
				break;
			}
		}
		if(!flag){
			flag=d2;
			for(int i=2;i<=n;i++){
				if(a[i-1]%flag==a[i]%flag){
					flag=0;
					break;
				}
			}
		}
		cout<<flag<<"\n"; 
	} 
	return 0;
}

D. Array and Operations

题面

给n个数和k,挑k个二元组<x,y>,使得所有 x y \frac{x}{y} yx加上剩余的数的值最小。

思路

感觉最大的k个数还有次大的k个数分别作为分母和分子就能贪心地求出答案了,交一发结果对了。

代码

#pragma GCC optimize("Ofast", "inline", "-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define int long long
using namespace std;
const int N=2e5+7;
const int mod=1e9+7;

int t,n,k,a[105];

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>t;
	while(t--){
		int ans1=0;
		map<int,int>mp;
		vector<int>v1,v2;
		cin>>n>>k;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			mp[a[i]]++;
		}
		sort(a+1,a+1+n);
		int idx=n;
		for(int i=1;i<=k;i++){
			v1.push_back(a[idx--]); //后面k个都做分母 
		}
		for(int i=1;i<=k;i++){
			v2.push_back(a[idx--]); 
		}
		for(int i=0;i<k;i++){
			ans1+=v2[i]/v1[i];
		}
		for(int i=1;i<=n-2*k;i++) ans1+=a[i];
		cout<<ans1<<"\n";
	}
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Codeforces Round 894 (Div. 3) 是一个Codeforces举办的比赛,是第894轮的Div. 3级别比赛。它包含了一系列题目,其中包括题目E. Kolya and Movie Theatre。 根据题目描述,E. Kolya and Movie Theatre问题要求我们给定两个字符串,通过三种操作来让字符串a等于字符串b。这三种操作分别为:交换a中相同位置的字符、交换a中对称位置的字符、交换b中对称位置的字符。我们需要先进行一次预处理,替换a中的字符,然后进行上述三种操作,最终得到a等于b的结果。我们需要计算预处理操作的次数。 根据引用的讨论,当且仅当b[i]==b[n-i-1]时,如果a[i]!=a[n-i-1],需要进行一次操作;否则不需要操作。所以我们可以遍历字符串b的前半部分,判断对应位置的字符是否与后半部分对称,并统计需要进行操作的次数。 以上就是Codeforces Round 894 (Div. 3)的简要说明和题目E. Kolya and Movie Theatre的要求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Codeforces Round #498 (Div. 3) (A+B+C+D+E+F)](https://blog.csdn.net/qq_46030630/article/details/108804114)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Codeforces Round 894 (Div. 3)A~E题解](https://blog.csdn.net/gyeolhada/article/details/132491891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RWLinno

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值