首页 > 其他分享 >codeforces写题随录 ##1

codeforces写题随录 ##1

时间:2024-08-31 09:14:41浏览次数:3  
标签:## d% codeforces 写题 int https 随录 com mod

菜鸡刷题比赛日记之数学知识相关
[https://codeforces.com/contest/2007/problem/C](C. Dora and C++)
这题包含加A和加B,此处应该先考虑特殊情况a=b,若不进行如何操作的话,初始答案应该是res=a[n]-a[1](排序之后),然后进行操作,想想该如何最小化极差。为了便于计算,先将数组中每个数字先mod a,因为对于任意的a[n]-a[i],一定可以通过操作将这个差值缩小到[0,a-1],等价于都mod a
归一化之后再考虑如何进行操作,对于目前排序后的数组,0<= qi <= a-1 此时设初始的res = q[n] - q[1],从前往后遍历,显而易见将某个数加上a之后就变成了max。q[1]+a,res=min(res,q[1]+a-q[2]),只可以是q[2]作为目前的最小值,而后从前往后遍历2-n res=min(res,q[i]+a-q[i-1])把前面的数字都加上a之后便可以将q[i-1]设置为最小值

点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;

int gcd(int a,int b)
{
	return b? gcd(b,a%b):a;
}

void solve()
{
	int n,a,b;scanf("%d%d%d",&n,&a,&b);vector<int>q;
	int d=gcd(a,b);
	for(int i=1;i<=n;i++)
	{
		int x;cin>>x;
		q.push_back(x%d);
	}
	sort(q.begin(),q.end());
	int ans=q[n-1]-q[0];
	for(int i=1;i<n;i++)
	{
		ans=min(ans,q[i-1]+d-q[i]);
	}
	cout<<ans<<endl;
}
int main()
{
	int t;cin>>t;
	while(t--)
	{
		solve();
	}
}
[https://codeforces.com/contest/1993/problem/C](C. Light Switches) 考虑到每个灯的开关是以2k为一个周期,本质便是n个周期函数的最小正整数解,ans显然应该>=最晚开灯的时间,记为mx,再把每个时间mod 2k之后放入数组之中,设置一个cnt数组来统计该位置的灯(偷摸里?)的数量,遍历整个周期,先加上半个周期的灯数量,再每次开始每次移动一,加上cnt[i]同时减去关灯的个数,若一个周期过后还没有全开则无解,解集可能延续到下个周期,如下图![](/i/l/?n=24&i=blog/3512238/202408/3512238-20240831091458564-1264191474.jpg)
点击查看代码

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int a[N];
typedef pair<int,int> PII;
int main()
{
	int t;cin>>t;
	while(t--)
	{
		int n,k;scanf("%d%d",&n,&k);int mx=-1;
		int d[2*k+1]={0};
		for(int i=1;i<=n;i++)
		{
			int x;scanf("%d",&x);
			int u=x%(2*k);
			d[u]++;
			mx=max(mx,x);
		}
		int cnt=0;int ans=0x3f3f3f3f;
		for(int i=0;i<=k-2;i++)cnt+=d[i];
		for(int l=0,r=k-1;l<=2*k;l++,r++)
		{
			if(r==2*k)r=0;
			cnt+=d[r];
			if(cnt==n)
			{
				int op=(r-mx)%(2*k);
				if(op<0)op+=2*k;
				ans=min(ans,mx+op);
			}
			cnt-=d[l];
		}
		if(ans==0x3f3f3f3f)cout<<"-1"<<endl;
		else cout<<ans<<endl;
	 } 
}

标签:##,d%,codeforces,写题,int,https,随录,com,mod
From: https://www.cnblogs.com/NIYAXIMEN/p/18389846

相关文章

  • 鸿蒙(HarmonyOS)常见的三种弹窗方式
    最近有一个想法,做一个针对鸿蒙官方API的工具箱项目,介绍常用的控件,以及在项目中如何使用,今天介绍Harmony中如何实现弹窗功能。警告弹窗警告弹窗是一个App中非常常用的弹窗,例如:删除一条记录,提示一下用户:您确定要删除吗?在App首页,点击返回时,提示一下用户:您确定要退出App吗?使用A......
  • 园区视频监控智能分析系统
    园区视频监控智能分析系统应用起来更为便捷,更好地处理对结构性信息内容的要求超过了人眼即时监管范畴的视频监控,进一步体现了园区视频监控智能分析系统的深层使用价值。伴随着视频监控系统经营规模的不断扩大,运用的逐步推进,对互联网融合的需求量更加明显。视频监控作为生态园区产......
  • 【安全运营】安全自动化协议SCAP及其12大组件介绍
    一、SCAP产生背景二、SCAP简介三、SCAP12大组件介绍四、已经支持SCAP的安全工具五、参考链接原创全栈安全由于计算机和网络技术的快速发展,越来越多的软件和系统被应用到企业和机构中,这些软件和系统的安全问题也日益凸显。传统的安全措施,如防火墙、入侵检测等,已经......
  • LeetCode题集-1- 两数之和
      这个题目是什么意思呢?简单来说就是在一个数组中找出两个元素,使其和为我们设定的值,并且每个元素只能用一次。 如下图具体示例: 到这里不知道你是否已经有解题思路了呢?解法一:双层循环我第一反应就是双层循环,直接暴力破解。因为题目要求每个元素只能使用一次,并且已经计......
  • Hash哈希学习笔记
    概念:通过一个hash函数建立值与存储地址的关系原则:开小数组+冲突解决冲突越少,用时越少;可通过调整余数或优质的hash算法尽量使hash值分散,减少碰撞hash算法的构成:hash函数的初始化构造hash函数:典型的函数包括除余法H......
  • 正则表达式的使用方法
    我们通过几个方法来讲解一下正则表达式的使用方法matchsearchfindallsubcompile首先,我们需要引入正则的常用匹配规则现在我们可以进行讲解了 matchmatch方法会尝试从字符串的起始位置开始匹配正则表达式,如果匹配,就返回匹配成功的结果;如果不匹配就返回Noneimportreco......
  • 信奥赛一本通陈老师解题 1123:图像相似度
    ​【题目描述】给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。【输入】第一行包含两个整数m和n,表示图像的行数和列数,......
  • 关于requests的使用方法
    我们从四个模块来讲解:GET请求POST请求响应高级用法(cookie,session等)GET请求:最基本的使用:导入requests库importrequestsr=requests.get('https://www.httpbin.org/get')将返回的内容以文本形式打印出来print(r.text)------------------输出结果--------------------......
  • DaVinci Resolve Studio 19.0 正式版 (macOS, Windows) - 剪辑、调色、特效和音频后期
    DaVinciResolveStudio19.0正式版(macOS,Windows)-剪辑、调色、特效和音频后期制作BlackmagicDesignDaVinciResolveStudio请访问原文链接:https://sysin.org/blog/davinci-resolve/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgDaVinciResolve19免费!......
  • 致远互联-分析云 getolapconnectionlist 逻辑漏洞
       声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。一、漏洞描述致远分析云是由北京致远互联精心打造的一站式数据分析平台,旨在助力企业实现数字化转型升级。二,fofa语法body="js/lib/ba.co......