首页 > 其他分享 >【LGR-141-Div.2】洛谷 6 月月赛 I (前两题)

【LGR-141-Div.2】洛谷 6 月月赛 I (前两题)

时间:2023-06-04 10:33:31浏览次数:48  
标签:gcd int long Div.2 ai 两题 LGR 500005


T1:金盏花
传送门
直接暴力枚举前6位的值即可,记得开long long

#include<bits/stdc++.h>
using namespace std;
#define int long long
int y,z,ans=1e18;
signed main(){
	scanf("%lld%lld",&y,&z);
	for(int i=100000;i<=999999;i++){
		int x=i*1000000+y;
		ans=min(ans,abs(x-z));
	}
	printf("%lld\n",ans);
	return 0;
} 

T2:红草莓
传送门
稍微手算几组就可以发现对于ai,就是将所有为gcd(ai,n)的倍数的位置染为蓝色
那么根据这个性质写出代码发现只有70pts,只需要加一个判断ai之前是否出现过,如果出现过直接输出0(显然)
即可通过
复杂度应该是<=O(nlogn)的:
对于不重复的a数组(不防a1 < a2 < ... < an
复杂度为O(n/a1 + ... + n/an)<=O(n/1 + ... + n/n)=O(nlogn)

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[500005];
int gcd(int x,int y){
	if(y==0)return x;
	else return gcd(y,x%y);
}
bool vis[500005],p[500005];
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)scanf("%d",&a[i]),a[i]=gcd(a[i],n);
	for(int i=1;i<=m;i++){
		if(p[a[i]]){
			printf("%d ",0);
			continue;
		}
		int sum=0;
		for(int j=0;j<n;j+=a[i])
			if(!vis[j]){
				vis[j]=1;
				sum++;
			}
		p[a[i]]=1;
		printf("%d ",sum);
	}
	puts("");
	return 0;
}

标签:gcd,int,long,Div.2,ai,两题,LGR,500005
From: https://www.cnblogs.com/kentsbk/p/17455288.html

相关文章

  • valgrind查看内存泄漏
    一、valgrind安装在线安装红帽系:yuminstallvalgrind得班系:apt-getinstallvalgrind离线安装valgrind下载:http://valgrind.org/downloads/valgrind-3.12.0.tar.bz2valgrind安装:1.tar-jxvfvalgrind-3.12.0.tar.bz22.cdvalgrind-3.12.03../configure4.make5.m......
  • cf-div.2-875d
    链接:https://codeforces.com/contest/1831/problem/D脑子确实不好使,没啥思路,看jls代码之后豁然开朗。思路:先枚举约数s,因为\(b_i+b_j\)不会超过4e5,所以第一层枚举所有约数为根号级别,第二层循环里枚举所有对数,统计\(v=a_i*s-b_i\)的所有个数,只有当\(a_i\)的值与s的值相等时,才能......
  • 交叉编译内存分析工具 valgrind3.21.0 (aarch64-linux-gnu-gcc)
    交叉编译工具编译机器:ubuntuServer22LTS编译目标:ARM64开发板https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/注:如果使用7.5以上的GCC,请到ARM官网下载:https://developer.arm.com/downloads/-/gnu-agcc版本(7.5)需对应板子......
  • CF R870 div.2
    C 输出"NO"的充要条件是要在最初就选择\(k\)个物品,使得\(k\midN\)。发现朴素做法是\(O(TM)\),可以对\(N\)的约数进行枚举,优化为\(O(T\sqrt(N))\),再特判\(N\leqM\)和\(N=1\)的情况。#include<bits/stdc++.h>usingnamespacestd;constintN=1e6+10;int......
  • 聊一聊 Valgrind 监视非托管内存泄露和崩溃
    一:背景1.讲故事只要是程序总会出现各种莫名其妙的问题,比如:非托管内存泄露,程序崩溃,在Windows平台上一般用微软自家的官方工具AppVerifier就可以洞察,那问题出在Linux上怎么办呢?由于Linux崇尚自由,需要在各种牛鬼蛇神写的非官方开源软件中寻找一个比较靠谱的,比如本篇所说......
  • Codeforces Round 869 (Div.1 & Div.2) 题解
    2A.Politics因为编号为\(1\)的人一定不会离开,那么最后留下的人一定要和编号为\(1\)的人的所有参数都一致,所以计数即可。#include<bits/stdc++.h>#include<ext/pb_ds/assoc_container.hpp>#include<ext/pb_ds/tree_policy.hpp>#include<ext/pb_ds/hash_policy.hpp>u......
  • CF R868 (div.2)
    A.A-characteristic题意:构造1|-1数列,使数组中两两相乘值为1的对数为k思路:显而易见与1|-1的出现顺序无关,总结规律易知当1数量为2时对数为一,3时对数为3(1+(3-1)),4时对数为6(3+(4-1)),-1同理,数据量较小,枚举个数即可1#include<bits/stdc++.h>23usingnamespacestd;4intans[1......
  • valgrind使用方法
    valgrind使用1.Preface valgrind是一套Linux下开源的程序仿真调试和分析工具的集合;集合中的每个工具负责执行某种类型的仿真,调试,或者分析任务;它的主要结构包括一个内核(软件模拟CPU环境)以及一系列的小工具。valgrind包含的工具主要如下:Memcheck主要针对C和C++程序的......
  • cf-div.2-868-D
    题目链接:https://codeforces.com/contest/1823/problem/D比赛的时候关键性质已经想到,但没想到怎么正确构造。性质:每次新加一个字母,回文子串的数量最多增加1(因为题目需要不相同的回文子串)。证明:可以用反证法,易证。构造方法:由于k的值很小(只有20),所以对于不再增加(回文子串)的......
  • CF ER147 div.2
    A 简单计数题,判断前导零。#include<bits/stdc++.h>usingnamespacestd;intT;intmain(){ cin>>T; while(T--){ chars[10]; cin>>s; intn=strlen(s); intans=1; for(inti=0;i<n;i++){ if(s[i]=='?'&&a......