cf--思维训练

目录

  • [B. Minimise Sum](#B. Minimise Sum)
  • [A. Deranged Deletions](#A. Deranged Deletions)
  • [B. Tournament](#B. Tournament)
  • [A. Blackboard Game](#A. Blackboard Game)
  • [B. Above the Clouds](#B. Above the Clouds)

B. Minimise Sum

难度:1000
题目来源

简单贪心思维,题目顺序已经定了,只能进行1次操作,我们只需按顺序遍历,并记录定钱位置最小值,如果这个数大于等于当前最小值,我们就进行此操作,这样后面的数就都会变为0,不用再计算。

AC代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
#define endl '\n'
const int N=1e6+6;
int n,a[N]; 
void solve()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	int ans=a[1];
	int mi=a[1];
	for(int i=2;i<=n;i++)
	{
		mi=min(mi,a[i]);
		if(a[i]>=mi)
		{
			ans+=mi;	
			break;
		}
		ans+=mi;
	}
	cout<<ans<<endl;
}
signed main()
{
	IOS;
	int _=1;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

A. Deranged Deletions

难度:800
题目来源

该题考查了简单的思维和排序。只需对c进行排序,然后判断bi如果=ci,就将该位置标记为1,表示删除,最后剩下的数0个就输出no,否则按题目要求输出。

AC代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
#define endl '\n'
const int N=1e6+6;
int n,b[N],c[N],st[N]; 
void solve()
{
	cin>>n;
	int ans=0;
	for(int i=1;i<=n;i++)
	cin>>c[i],b[i]=c[i];
	sort(c+1,c+1+n);
	for(int i=1;i<=n;i++)
	st[i]=0;
	for(int i=1;i<=n;i++)
	{
		if(c[i]==b[i])
		st[i]=1,ans++;
	}
	if(ans==n)
	{
		cout<<"NO"<<endl;
		return ;
	}
	cout<<"YES"<<endl;
	cout<<n-ans<<endl;
	for(int i=1;i<=n;i++)
	{
		if(!st[i])
		cout<<b[i]<<" ";
	}
	cout<<endl;
}
signed main()
{
	IOS;
	int _=1;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

B. Tournament

题目难度:800
题目来源

该题只需要判断最大值的个数,如果最大值的个数大于1并且k>1,那么a[j]不论多大都可以被留下来,因为可以让其他的数和最大值比较从而淘汰。其次,如果最大值的个数<k,那么a[j]也能留下,或者a[j]就等于最大值,或者整个数组数字大小相等。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
#define endl '\n'
const int N=1e6+6;
int n,j,k,a[N]; 
void solve()
{
	cin>>n>>j>>k;
	int mx=-1,ans=0;
	for(int i=1;i<=n;i++)cin>>a[i],mx=max(mx,a[i]);
	for(int i=1;i<=n;i++)if(a[i]==mx)ans++;
	if(ans>1&&k!=1)
	{
		cout<<"YES"<<endl;
		return ;
	}
	if(ans==n||ans<k||a[j]==mx)
	cout<<"YES"<<endl;
	else
	cout<<"NO"<<endl;
}
signed main()
{
	IOS;
	int _=1;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

A. Blackboard Game

难度:800
题目来源

如果n是4的倍数就输出Bob,否则Alice

AC代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
#define endl '\n'
const int N=1e6+6;
int n;
void solve()
{
	cin>>n;
	if(n<4||n%4!=0)
	{
		cout<<"Alice"<<endl;
		return ;
	}
		cout<<"Bob"<<endl;
}
signed main()
{
	IOS;
	int _=1;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

B. Above the Clouds

题目难度:800
题目来源

可以遍历用map记录单词出现的次数,当一个字符出现了不止1次,且位置不是第一个和最后一个就停止查找,此时b就是这个字符,前面的a包含它。到最后如果没找到满足这种条件的,再判断如果字符s[1]的个数-1,然后如果s[n]的个数>1,说明中间有可以充当b的字符。

AC代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
#define endl '\n'
const int N=1e5+6;
int n;
char s[N];
unordered_map<char,int>mp;
void solve()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>s[i];
	int f=0;
	for(int i=1;i<=n;i++)
	{
		mp[s[i]]++;
		if(mp[s[i]]>1&&i!=1&&i<n)
		{
			f=1;
			break;
		}
	}
	mp[s[1]]--;
	if(mp[s[n]]>1)f=1;
	if(f)
	cout<<"YES"<<endl;
	else
	cout<<"NO"<<endl;
	mp.clear();
}
signed main()
{
	IOS;
	int _=1;
	cin>>_;
	while(_--)
	solve();
	return 0;
}
相关推荐
console.log('npc')1 天前
前端性能优化,给录音播放的列表加个播放按键,点击之后再播放录音。减少页面的渲染录音文件数量过多导致加载缓慢
前端·javascript·vue.js·算法
吾当每日三饮五升1 天前
RapidJSON 自定义内存分配器详解与实战
c++·后端·性能优化·json
_不会dp不改名_1 天前
leetcode_138 随机链表的复制
算法·leetcode·链表
小欣加油1 天前
leetcode 129 求根节点到叶节点数字之和
数据结构·c++·算法·leetcode
xo198820111 天前
Xcode 26 could not locate developer disk image for this device 无法定位开发者磁盘镜像
ide·macos·xcode
DuHz1 天前
Stable Video Diffusion:将潜在视频扩散模型扩展到大规模数据集——论文阅读
论文阅读·人工智能·深度学习·神经网络·算法·音视频
彩云回1 天前
决策树(Decision Tree)
算法·决策树·机器学习
徽先生1 天前
vscode中编写c++程序
c++·ide·vscode
2501_915106321 天前
上架 App 全流程解析,iOS 应用上架步骤、App Store 审核流程、ipa 文件上传与测试分发经验
android·ios·小程序·https·uni-app·iphone·webview
铭哥的编程日记1 天前
C++优选算法精选100道编程题(附有图解和源码)
开发语言·c++·算法