【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;
}
相关推荐
Matrix_112 分钟前
第13篇:非线性位移场——漩涡、鱼眼、水波纹与球面化
图像处理·算法
Lucky_ldy3 分钟前
数据结构从入门到精通:顺序表
数据结构·链表
金牌归来发现妻女流落街头4 分钟前
【LeetCode 第207题】
算法·leetcode·拓扑·领接表
熬夜敲代码的猫11 分钟前
AVL树(C++详解版)
数据结构·c++·算法
-To be number.wan32 分钟前
算法日记 | STL-MAP
c++·算法
cjp56034 分钟前
015. UG 二次开发,拉伸草图生成实体类,高级草图类封装
算法
Eric 辰东1 小时前
【C 语言程序的编译和链接】详解编译链接过程
c语言·笔记·算法·学习方法
并不喜欢吃鱼1 小时前
从零开始 C++-----十一【C++ 数据结构】红黑树全解析:从定义到工程实现(一文搞定,十分详细)
开发语言·数据结构·c++
星恒随风1 小时前
C语言数据结构排序算法详解(上):从插入排序、希尔排序到选择排序、堆排序
c语言·数据结构·笔记·学习·排序算法
迈巴赫车主1 小时前
蓝桥杯21247弹跳鞋java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯