首页 > 其他分享 >Codeforces 赛题整合1

Codeforces 赛题整合1

时间:2024-11-27 17:00:54浏览次数:10  
标签:题意 int 题解 sum 赛题 Codeforces cin 整合 ans

对于训练赛的赛题整合。

文章目录

2033D - Kousuke’s Assignment

codeforces链接

题意:

找出数组中最多有多少子段使子段和为0。

题解:

思考某个子段和为零会什么情况出现?子段和的下一个数与其相加,和等于这个数,那我们就利用这个特点,用前缀和和set,去解决这个问题。
如果能在set中找到与前缀和想等的数,ans++,清空set,重新从当前位置计算前缀和。如果没有,将前缀和insert到set里。

代码
#include<bits/stdc++.h>
using namespace std;
int a[1000000],ans;
long long sum=0;
set<long long> s;
void solv()
{
	ans=0,sum=0,s.clear(),s.insert(0);
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		sum+=a[i];
		if(s.count(sum))
		{
			sum=0,ans++,s.clear(),s.insert(0);
		}
		else	s.insert(sum);
	}
	cout<<ans<<endl;
}
int main()
{
	int t;
	cin>>t;
	while(t--)	solv();
	return 0;	
}

2033C- Sakurako’s Field Trip

cedeforces链接

题意

通过交换下标为i与n-i+1的数,使满足aj=aj+1的数量最少,最少是多少

题解

若交换后的干扰数量小于交换前的干扰数量,则将两个数交换,反之则不交换

代码
#include<bits/stdc++.h>
using namespace std;
void sov()
{
	int n;
	cin>>n;
	vector<int>a(n+1);
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	int pre,re;
	for(int i=2;i<=n/2;i++)
	{
		int pre=(a[i]==a[i-1])+(a[n-i+2]==a[n-i+1]);
		int re=(a[i]==a[n-i+2])+(a[n-i+1]==a[i-1]);
		if(pre>re) swap(a[i],a[n-i+1]);
	}
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]==a[i-1])
		ans++;
	}
	cout<<ans<<endl;
}
int main()
{
	int t;
	cin>>t;
	while(t--) sov();
	return 0; 
 } 

2022B -Kar Salesman

codefoces链接

题意

有n种型号的汽车,每种类型有ai辆,现在每位顾客最多购买x辆不同类型的车,现在最多需要来几位顾客才能将车卖空?

题解

因为每个顾客买的车不是同一个类型的,所以我们至少需要max{a1,a2,…an}个顾客。也就是说来的人数要是是汽车数量最多。
又因为每个顾客只能买x台,所以我们至少需要(a1+a2+…an)/x位顾客。注意要向上取余。

代码
#include <iostream>
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		long long n,x,sum=0,mx=0,in;
		cin>>n>>x;
		while(n--){
			cin>>in;
			mx=max(mx,in);
			sum+=in;
		}
		cout<<max(mx,sum/x+(sum%x!=0))<<"\n";
	}
	return 0;
}

2025C-New Game

codeforces链接

题意

有n张扑克牌,n张卡牌,每张卡牌上有一个整数ai,每个回合他可以拿一张数字为 x 或数字为 x+1 的卡牌,所拿卡牌上写的不同数字的数量不得超过 k。确定在游戏中可以从牌堆中拿到的最大卡牌数量

题解

1.将所有卡牌从小到大排序,记录每个数字出现的次数,存入map
2.通过遍历,类似滑动窗口,用ans记录每次的最大值
3.如果所选数字不满足x=s,或者x=s+1(即拿牌规律时),重新计算,更新最大值
4.如果所选数字的数量大于k,就减去所选第一个数,向后遍历,更新最大值

代码
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
#define fi first
#define se second
#define PII pair<int,int>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
void solve()
{
	int n,k;
	cin>>n>>k;
	map<int,int> m;
	int ans=0,sum=0,cnt=0,base=0,s=0;
	for(int i=1;i<=n;i++)
	{
		int x;cin>>x;
		m[x]++;
	 } 
	 for(auto  i : m )
	 {
	 	int x=i.fi,y=i.se;
	 	if(sum==0)
	 	{
	 		sum+=y;
	 		s=x;
	 		base=x;
	 		cnt++;
		 }
		 else
		 {
		 	if(x-s>1)
		 	{
		 		sum=0;
		 		cnt=0;
		 		base=x;
			 }
			 else if(cnt==k)
			 {
			 	sum-=m[base];
			 	base++;
			 	cnt--;
			 }
			 s=x;
			 cnt++;
			 sum+=y;
		 }
		 ans=max(ans,sum);
	 }
	 cout<<ans<<endl;
}
signed main()
{
	IOS;
	int t=1;
	cin>>t;
	while(t--) 
	solve();
}

标签:题意,int,题解,sum,赛题,Codeforces,cin,整合,ans
From: https://blog.csdn.net/2301_81250859/article/details/143855122

相关文章

  • Codeforces 333 题目研讨
    题目传送门:ABCDEA解法:注意到最终支付的一定是\(3^k\)的钱。即得。B解法:不难发现芯片的前进路上不能有障碍,否则不可能在\(n-1\)步内完成。然后又不难发现,同一行或一列只能放一个。双不难发现,当\(n\)为奇数时,中行或中列可能会冲突,此时需要移除其中一个。叒不难发现,当......
  • 一个整合性、功能丰富的.NET网络通信框架
    前言最近有不少同学问:.NET网络通信框架有什么好推荐的吗?今天大姚给大家分享一款基于ApacheLicense开源的一个整合性、功能丰富的.NET(包括C#、VB.Net、F#)网络通信框架:TouchSocket。特色功能一键解决TCP黏分包问题,提供协议模板,支持快速实现固定包头、固定长度、区间字符......
  • Codeforces Round 986 (Div. 2) A-C
    A.Alice'sAdventuresin"Chess"AliceistryingtomeetupwiththeRedQueeninthecountryside!Rightnow,Aliceisatposition\((0,0)\),andtheRedQueenisatposition\((a,b)\).Alicecanonlymoveinthefourcardinaldirecti......
  • 11.25 NOIP 模拟赛题解
    T1P1069[NOIP2009普及组]细胞分裂原题链接这道题就是基本的数学知识。我们直接来转化题意,这道题就是让我们求min⁡(k......
  • SpringBoot整合QQ邮件发送详解(完整教程)
    进入QQ邮箱官网,然后登录,进去之后点击账号与安全按照一下步骤走会得到一个授权码1.导入依赖<!--mail--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>......
  • 【异或运算】codeforces 1153 B. Dima and a Bad XOR
    前言异或运算:是一种在二进制数系统中使用的逻辑运算。它的基本规则是对两个二进制位进行比较,如果这两个位不同,则结果为\(1\);如果相同,则结果为\(0\)。异或运算的规则\(0\)XOR\(0\)=\(0\)\(0\)XOR\(1\)=\(1\)\(1\)XOR\(0\)=\(1\)\(1\)XOR\(1\)=\(0\)特性......
  • SpringBoot整合MQTT利用EMQX完成消息的发布与接收+Python模拟硬件测试通信
    教程说明本教程主要内容为使用SpringBoot整合MQTT利用EMQX代理服务完成MQTT的消息发送与接收,然后用Python模拟硬件与SpringBoot应用进行了MQTT消息的通信,教程详细,并在最后讲解了开发中的注意事项,本教程适用于物联网领域、JavaWeb领域的开发人员。前置所需已经搭建好了EMQX代......
  • EPS32+DHT11温湿传感器+OLEAD显示屏整合MicroPython实现温湿度读取并显示 - 幽络源
    环境需求Python版本大于等于3.8、Thonny软件、EPS32已烧录MicroPython固件,可参考上一篇文章 ESP32初学教程Python版-从环境搭建到完成控制LED灯闪烁硬件需求EPS32开发板、DHT11的温湿度传感器、OLEAD显示屏、杜邦线、安卓数据线引脚连接DHT11温湿度传感器连接ESP32使用......
  • springboot 整合 rabbitMQ (延迟队列)
    前言:延迟队列是一个内部有序的数据结构,其主要功能体现在其延时特性上。这种队列存储的元素都设定了特定的处理时间,意味着它们需要在规定的时间点或者延迟之后才能被取出并进行相应的处理。简而言之,延时队列被设计用于存放那些需要在特定时间到达时才处理的元素。使用场景:1、......
  • MyBatis与Spring整合中@Param注解的作用与使用详解
    在使用MyBatis进行参数绑定时,@Param注解扮演了重要的角色,特别是在涉及多参数传递或参数名不一致的场景。本文将详细解析@Param的作用、原理以及最佳实践。我的实体类一、什么是@Param注解?@Param是MyBatis提供的一个注解,用于为方法参数指定别名,以便在SQL映射文件......