首页 > 其他分享 >Codeforces Round 969 (Div. 2)

Codeforces Round 969 (Div. 2)

时间:2024-08-31 22:03:48浏览次数:10  
标签:断环为 int Codeforces cin 969 maxn Div

ab题没啥好说的,b题一开始看题错成线段树了,后面发现维护最大值就过了(我就说b怎么会有线段树)。。。

C:Dora and C++

卡的我死死的,好久没卡c了,数论果然是最短板。。。我有两个推论,但是一个都不会用:

1.翡蜀定理。(但是这题只有正数)(处理两个数的情况)

2.断环为链。(但是我只会n方,即以每个点为起点,把其他点都排在他后面)(处理只有一个数的情况)

正解是这样:

  1. 确实是翡蜀定理,因为对\(a_i\)减去一个数相当于对其余数加上一个数

  2. 断环为链只需要把第一个节点放到最后去,并不需要重新维护整个链

把上述两个结论结合我们就可以用\(gcd(a,b)\)一个数去处理所有节点了,结束。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;

int a[maxn];
signed main() {
	int t; cin >> t;
	while (t--) {
		int n,x,y;
		cin>>n>>x>>y;
		x=__gcd(x,y);
		for(int i=1;i<=n;i++)cin>>a[i];
		sort(a+1,a+n+1);
		if(x==1){
			cout<<0<<"\n";
			continue;
		}
		for(int i=1;i<n;i++){
			int tmp=(a[n]-a[i])/x;
			a[i]+=tmp*x;
		}
		sort(a+1,a+n+1);
		int mx=a[n];int ans=0x3f3f3f3f;
		for(int i=1;i<=n;i++){
			ans=min(ans,mx-a[i]);
			mx=a[i]+x;
		}
		cout<<ans<<"\n";
	}
}

D:还没补

标签:断环为,int,Codeforces,cin,969,maxn,Div
From: https://www.cnblogs.com/lyrrr/p/18390838

相关文章

  • codeforces写题随录 ##1
    菜鸡刷题比赛日记之数学知识相关[https://codeforces.com/contest/2007/problem/C](C.DoraandC++)这题包含加A和加B,此处应该先考虑特殊情况a=b,若不进行如何操作的话,初始答案应该是res=a[n]-a[1](排序之后),然后进行操作,想想该如何最小化极差。为了便于计算,先将数组中每个数字......
  • Diffusion反馈强势助力CLIP秒变火眼金睛:北京智源研究院、中科院自动化所联合推出DIVA
    前言 本文分享论文DiffusionFeedbackHelpsCLIPSeeBetter,专注于通过自监督学习范式解决CLIP无法区分细粒度视觉细节的问题。欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。本文转载自我爱计算机视觉仅用于学术分享,若侵权......
  • Codeforces Round 873 (Div. 2)
    ABC都很简单,但是D1写起来有些麻烦,就没写,D2应该是一个分治的思路,后面想不出来了。D1的思路非常好出,n只有5e3的范围,意味着\((n^2)\)可过,可以直接枚举所有的子区间,也就是题目所说的子数组,然后尝试统计答案。考虑一个子区间的答案是什么样的,发现只有逆序的数字才需要排序,我们直接找......
  • CF1980F1 & F2 Field Division
    前言纪念一下独立做出来的\(2400\)的题Easyversion思路先说\(Easy\)版本的我们走路的方式只有可能是这种样子:(出处:luoguuserFiraCode)不想手绘图了即对列排序后,所形成的一个行编号上升的序列所以\(Easy\)就很简单了,对于每一列的最大值,如果大于当前前缀最大值,则......
  • Educational Codeforces Round 169 (Rated for Div. 2)
    A.ClosestPoint有解的情况,当且仅当只有两个点且不相邻是,把新加入的点放在中间。#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;usingi128=__int128;#defineinti64usingvi=vector<int>;usingpii=pair<int,int......
  • codeforces做题记录(1942D,1938J,1934D1,1933F)
    1942D.LearningtoPaint题目大意:给定一行白格子,可以将任意的格子染成黑色,最终形成多个黑色的连续段,对每个连续段[i,j]有一个权重(题目给定),为aij,每个染色方案的权值就是所有连续段的权值的和。要求所有染色方案中前k大的权值。注意事项:权重aij的范围是[-1e6,1e6],格子个数n<=10......
  • Testing Round 19 (Div. 3)
    A.AlternatingSumofNumbers#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;usingi128=__int128;usingvi=vector<int>;usingpii=pair<int,int>;consti32inf=INT_MAX/2;consti64......
  • Codeforces Round 966 (Div. 3)
    A.PrimaryTaskif-else语句练习,判断前两个字符是否为"10",并判断之后的字符是否大于1点击查看代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineullunsignedlonglong#definepiipair<int,int>intread(){intx=0,f=0;ch......
  • EPIC Institute of Technology Round Summer 2024 (Div. 1 + Div. 2) VP记录
    EPICInstituteofTechnologyRoundSummer2024(Div.1+Div.2)VP记录A一眼\((n-1)m+1\)。B最后的数列是固定的,每个数与最后数列的数相减后,对差值求和再加上最大值即可。C唐诗C题,获得\(3\)发罚时。只有一个数右边的数归零了,它才会归零。右往左扫,如果右边......
  • Hitachi Vantara Programming Contest 2024(AtCoder Beginner Contest 368)F - Dividing
    https://atcoder.jp/contests/abc368/tasks/abc368_f#include<bits/stdc++.h>#definexfirst#defineysecondusingnamespacestd;typedeflonglongll;typedefpair<ll,char>pii;constintN=2e5+10,inf=1e9;lln,m,k;intb[N],sg[N],a[N];vector......