【Codeforces】Codeforces Round 905 (Div. 3)

Problem - 1883C - Codeforces

这题当时想复杂了。

题目大意:

给一串数组和一个数字k,求对数组进行多少次操作能是他们的乘积是k的倍数。

操作是选定一个数加上1。

这题需要抓住一个点k属于2,5,2,3,4,5中只有4是合数需要特殊判断,别的直接用k-ai%k就能求解。

cpp 复制代码
#include<bits/stdc++.h>
const int N=1e5+10;
int a[N];
void solve()
{
	memset(a,0,sizeof a);
    int n,k;
    std::cin>>n>>k;
    int m=1e9;
    for(int i=1;i<=n;i++)
    {
    	std::cin>>a[i];
		if(a[i]%k==0)
		{
			m=0;
		}	 
		m=std::min(m,k-a[i]%k);
	} 
	int c1=0,c2=0;
	if(k==4)
	{
		for(int i=1;i<=n;i++)
		{
			if(a[i]%2==1) c1++;
			else c2++;
		}
		if(c2>=2) m=0;
		else if(c2==1) m=std::min(m,1);
		//其余情况都是2 
		m=std::min(m,2);
	}
	std::cout<<m<<'\n'; 
}
signed main()
{
    int t; 
	std::cin>>t;
    while(t--)
    {
       solve();
    }
    return 0;
}

Problem - D - Codeforces

题目大意:

q次操作,插入或删除区间,最后判断,是否存在不相交的区间,有则输出yes。

也就是判断是否所有区间都相交,是则输出no,否则yes。

看图就很容易有思路,把左端点和右端点分别存入map,排序判断就好。

还是要熟练使用stl才行啊

cpp 复制代码
#include<bits/stdc++.h>
std::map<int,int> l;
std::map<int,int> r;
void solve()
{
	char a;
	int b,c;
	std::cin>>a>>b>>c;
	if(a=='+')
	{
		l[b]++;
		r[c]++;
	}else{
		auto h=l.find(b);
		h->second--;
		if(h->second==0) l.erase(h);
			
		auto hh=r.find(c);
		hh->second--;
		if(hh->second==0) r.erase(hh);
	}
	if(l.empty()||l.rbegin()->first<=r.begin()->first)
	{
		std::cout<<"No\n";
	}else std::cout<<"Yes\n";
}
signed main()
{
	int t;
	std::cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}
相关推荐
happyprince1 小时前
01-整体观-Codex全貌解读(源码)
算法·ai编程
俊基科技2 小时前
别自己写算法了,让这颗37.5毫米的模组替你“闭嘴干活”
神经网络·算法·硬件开发·ai降噪·语音模块·回音消除
_Narcissus_2 小时前
动态规划初探(含完整代码实现)
c语言·数据结构·c++·算法·动态规划·背包问题·最短路径
世人万千丶2 小时前
鸿蒙项目实战 - 社区活动编排板:标签云布局算法与自动换行
学习·算法·华为·harmonyos·鸿蒙
zander2583 小时前
LeetCode 279. 完全平方数
算法·深度优先
典典分享指南3 小时前
VS Code Git 工作树:解锁多分支并行开发新体验
算法·决策树·逻辑回归·启发式算法
_Narcissus_4 小时前
枚举和模拟算法笔记
c语言·数据结构·c++·笔记·算法·模拟·枚举
天疆说4 小时前
策略的进化:从随心所欲到稳健前行
算法
冻柠檬飞冰走茶4 小时前
《数据结构实验指导-C++语言版》 在顺序表 list 中查找元素 x
开发语言·数据结构·c++·算法·list