首页 > 其他分享 >Codeforces Round 916 (Div. 3)

Codeforces Round 916 (Div. 3)

时间:2023-12-20 15:12:10浏览次数:27  
标签:std 916 int void namespace Codeforces using Div include

A. Problemsolving Log

image
image

map枚举字母

#include<bits/stdc++.h>
using namespace std;
void solve(){
	int n;
	string s;
	cin>>n>>s;
	int ans=0;
	s=" "+s;
	map<char,int>mp;
	for(int i=1;i<=n;i++){
		mp[s[i]]++;
	}
	for(auto c:mp){
		char x=c.first;
		int y=c.second;
		if(x-'A'+1<=y)ans++;
	}
	cout<<ans<<"\n";
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 

B. Preparing for the Contest

image
image

很简单的构造

#include<bits/stdc++.h>
using namespace std;
void solve(){
	int n,k;
	cin>>n>>k;
	int i;
	if(k==0){
		for(int i=n;i>=1;i--){
			cout<<i<<" ";
		}
	}else if(k==n-1){
		for(int i=1;i<=n;i++){
			cout<<i<<" ";
		}
	}else{
		int i;
		for(i=1;i<=k;i++){
		    cout<<i<<" ";
	    }
	    i--;
	    for(int j=n;j>i;j--){
	    	cout<<j<<" ";
		}
	}
	cout<<"\n";
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 

C. Quests

image
image
image

通过观察提示发现,最优的情况一定是1x的和加上(k-x)*1x这个范围里b[i]的最大值

所以枚举即可

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int a[N],b[N],sum[N];
void solve(){
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		sum[i]=sum[i-1]+a[i];
	}
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	for(int i=1;i<=n;i++){
		b[i]=max(b[i],b[i-1]);
	}
	int ans=0;
	for(int i=1;i<=min(n,k);i++){
		int cnt=sum[i];
		int x=abs(i-k);
		cnt+=b[i]*x;
		ans=max(ans,cnt);
	}
    cout<<ans<<"\n";	
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 

D. Three Activities

image
image

通过观察数据很好知道题目的意思,就是选a,b,c里不在同一下标的值,加起来最大,看一眼数据范围1e5,显然暴力肯定是不行

但是转化一下思路,要求最大,其实只需要把每组最大的几个数暴力一下就行了,因为最优解一定是在这个里面

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
vector<pair<int,int>>a[4];
void solve(){
	int n;
	cin>>n;
	for(int i=1;i<=3;i++){
		a[i].clear();
	}
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		a[1].push_back({x,i});
	}
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		a[2].push_back({x,i});
	}
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		a[3].push_back({x,i});
	}
	for(int i=1;i<=3;i++){
		sort(a[i].begin(),a[i].end(),greater<pair<int,int>>());
	}
	int ans=0;
	for(int i=0;i<=2;i++){
		for(int j=0;j<=2;j++){
			for(int z=0;z<=2;z++){
				if(a[1][i].second!=a[2][j].second&&a[1][i].second!=a[3][z].second&&a[2][j].second!=a[3][z]){
					int x=a[1][i].first+a[2][j].first+a[3][z].first;
					ans=max(ans,x);
				}
			}
		}
	}
	cout<<ans<<"\n";
}
signed main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 

标签:std,916,int,void,namespace,Codeforces,using,Div,include
From: https://www.cnblogs.com/yufan1102/p/17916559.html

相关文章

  • Codeforce Round 916(div3)
    CodeforcesRound916(div3)[Problem-A-Codeforces]:ProblemsolvingLogA.题直接看样例进行分析,发现每一次出现的字符代表着用了1分钟来看这道题,每道题都有固定的解题时间,只要达到了这个解题时间,就可以将这题解出来,答案就要加上1;同时要注意将解决过的问题要标记一下;#in......
  • Codeforces Round 916 (Div. 3)(A~E2)
    A统计一下每个字母的出现次数然后输出即可#include<bits/stdc++.h>#definerep(i,a,b)for(registerinti=(a);i<=(b);++i)#definefep(i,a,b)for(registerinti=(a);i>=(b);--i)#definelsp<<1#definersp<<1|1#definePIIpair<int,int&......
  • [Codeforces] CF1795C Tea Tasting
    CF1795CTeaTasting题意有\(n\)个人和\(n\)杯茶,第\(i\)个人每次会喝\(b_i\)毫升的茶。第\(i\)杯茶有\(a_i\)毫升。总共会喝\(n\)轮茶,第\(j\)轮第\(i\)个人会尝试喝第\(i+1-j\)杯茶。喝的量为\(\min(a_{i+1-j},b_i)\)毫升,并且使\(a_{i+1-j}\)减少\(\mi......
  • Educational Codeforces Round 160 (Rated for Div. 2) A~C
    A.RatingIncrease题意:将一个字符串分成两个整数a和b,要求没有前导0,且a<b思路:遍历字符串s,若当前位置不是0,则拆分字符串,比较大小//#include<bits/stdc++.h>#include<iostream>#include<string>#include<cstring>#include<vector>#include<algorithm>#inclu......
  • Educational Codeforces Round 160 (Rated for Div. 2)
    基本情况A题秒了。B题卡了实在太久,BC题最后虽然都过了,但是耗时太久。感觉C对我来说更好写。B.SwapandDelete经典+3。总是一条路偏要走到黑了才会想着换思路,早该换了。一开始想了一大堆乱七八糟的思路,但都错了。后面往简单了想,这题毕竟最后必须要左对齐的,直接从左往右比......
  • Square-free division (easy version) 题解
    题意:给定一个长度为\(n\)的序列,求最少能将这个序列分成多少段使得任意一段中不存在两个数的积为完全平方数。一个小Trick:如果两个数乘起来为平方数,可以先将每个数的平方因子除掉,然后这两个数必然相等。于是这道题被转化为了一个区间不能有相等的值,这就很典了。设\(pos_{a_{i......
  • 【题解】CodeForces-1913
    CodeForces-1913ARatingIncrease依题意模拟。提交记录:Submission-CodeForcesCodeForces-1913BSwapandDelete交换免费就是能任意重排,从头开始尽量填相反的,剩下只能删去了。提交记录:Submission-CodeForcesCodeForces-1913CGamewithMultiset从大到小能减则减一定......
  • 【题解】CodeForces-1905
    CodeForces-1905AConstructiveProblems发现沿着对角线放就行了,答案是\(\max(n+m)\)。提交记录:Submission-CodeForcesCodeForces-1905BBegginer'sZelda最优操作每次删两个叶子(除了最后一次只剩两个节点),所以答案是叶子个数除以二上取整。提交记录:Submission-CodeForc......
  • BIgdataAIML-IBM-A neural networks deep dive - An introduction to neural networks
    https://developer.ibm.com/articles/cc-cognitive-neural-networks-deep-dive/ByM.TimJones,PublishedJuly23,2017Neuralnetworkshavebeenaroundformorethan70years,buttheintroductionofdeeplearninghasraisedthebarinimagerecognitionand......
  • 使用遍历后数据加入新的div块中
    我们经常使用的数据他会成一个整体放入块中,但我们有时需要将他们分开使用,让他们展示在不同的div块中。所以就有了今天这篇博文。我们经常使用的遍历是这样的vararr=[5,3,8,2,4,9,6]for(vari=0;i<=a.length-1;i++)但我们遍历以后怎么去给他放入新的div块中呢所以我们要创......