【Codeforces】Codeforces Round 905 (Div. 3)

Problem - 1883C - Codeforces

这题当时想复杂了。

题目大意:

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

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

这题需要抓住一个点k属于[2,5],2,3,4,5中只有4是合数需要特殊判断,别的直接用k-a[i]%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;
}
相关推荐
music&movie29 分钟前
算法工程师认知水平要求总结
人工智能·算法
laocui11 小时前
Σ∆ 数字滤波
人工智能·算法
yzx9910132 小时前
Linux 系统中的算法技巧与性能优化
linux·算法·性能优化
全栈凯哥2 小时前
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
java·算法·leetcode·链表
全栈凯哥2 小时前
Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
java·算法·leetcode·链表
SuperCandyXu2 小时前
leetcode2368. 受限条件下可到达节点的数目-medium
数据结构·c++·算法·leetcode
Humbunklung2 小时前
机器学习算法分类
算法·机器学习·分类
Ai多利3 小时前
深度学习登上Nature子刊!特征选择创新思路
人工智能·算法·计算机视觉·多模态·特征选择
lyh13443 小时前
【SpringBoot自动化部署方法】
数据结构
MSTcheng.3 小时前
【数据结构】顺序表和链表详解(下)
数据结构·链表