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

Codeforces Round 808 (Div. 2)

时间:2023-12-12 16:23:39浏览次数:34  
标签:std cnt int void Codeforces cin 808 Div

基本情况

最难受的一集。

A搞了一个半小时愣是没开出来。

A. Difference Operations

Problem - A - Codeforces

错误分析

我分了好多类讨论,换言之没找到更本质的东西。

我想的是如果前面有一个数能处理到 \(1\) 那后面就都能过。

止步于此,而没有往更本质,更普适的地方想。

然后又讨论了很多特例,但是果然还是死在了 test8

以后当思路陷入这种分了一堆类讨论的时候一定要考虑换思路,很可能这个思路就是错的。

附上逆天代码:

int a[102], n;

void solve()
{
	std::cin >> n >> a[1];
	int cnt = 0;
	for (int i = 2; i <= n; i++) 
	{
		std::cin >> a[i];
		if (a[i] % a[i - 1] == 0) cnt++;
	}
	if (cnt == n - 1) {std::cout << "YES\n"; return ;}
	if (a[2] % a[1] != 0) {std::cout << "NO\n"; return ;}
	for (int i = 2; i<= n; i++)
	{
		if (a[i] < a[i - 1]) {std::cout << "NO\n"; return ;}
		if (a[i] % a[i - 1] == 0)
		{
			a[i] = a[i - 1];
		}
		else
		{
			a[i] = a[i] % a[i - 1];
		}
	}
	if (a[n] % a[n - 1] == 0)
		std::cout << "YES\n";
	else
		std::cout << "NO\n";
}

正确思路

我们分数列中的各个数分析。

对于 \(a_2\),要使其为 \(0\),由于 \(a_2\) 只能靠 \(a_1\) 来修改,故当且仅当 \(a_1|a_2\) 时才可操作。


下面这一步我没推出来,或者说推出来的东西仅仅是\(1\),没有往更本质的地方向

对于 \(a_3\),只能靠 \(a_2\) 来修改,若仅考虑原始的 \(a_2\),则 \(a_2|a_3\),但是由于 \(a_2\) 可以被 \(a_1\) 修改且满足 \(a_1|a_2\),于是只需使 \(a_1|a_3\) 即可使 \(a_3=0\)。

其余同理,故对于原始序列,当且仅当 \(\forall a_1|a_i,i\in\left[2,n\right]\) 返回 YES;其他情况均返回 NO

样例均可作为例子进行验证,模拟较为简单,此处不再赘述。

单组数据时间复杂度 \(\mathcal{O}(n)\),可以在线处理也可离线处理。

以离线处理为例。

int a[105], n;

void solve()
{
	std::cin >> n;
	for (int i = 1; i <= n; i++) 
	{
		std::cin >> a[i];
	}
	for (int i = 2; i <= n; i++)
	{
		if (a[i] % a[1]) {std::cout << "NO\n"; return ;}
	}
	std::cout << "YES\n"; return ;
}

B. Difference of GCDs

Problem - B - Codeforces

题意

给出 \(n,l,r\),构造 \(a\),使得对于任意 \(\gcd(a_i,i)\) 不相同。

明确一点:\(a_i\) 不一定不相同,这也是我方法正确的关键之处。

思路

约定:以下叙述中,\(m\) 为正整数。

我们要想到结果必定是 \(\gcd(a_i,i)=i\)。

证明也很简单,因为 \(\gcd(a_i,i)\in[1,i]\),而 \([1,i-1]\) 都被用过了,所以只能是 \(i\)。

问题转换为如何求 \(a_i\in[l,r]\) 为 \(i\) 的倍数。

首先,显然 \(a_i\) 必定为 \(im\),此处先求最大的可能的 \(m=\lfloor\dfrac r i\rfloor\)。

那么 \(\max\left\{a_i\right\}=mi=\lfloor\dfrac r i\rfloor\times i\)。

无解更简单,\(a_i\) 已经最大了,如果依然小于 \(l\),那 \([l,r]\) 中就必定没有合理的 \(a_i\) 了。

注意,如果 \(a_i\) 互不相同,这个做法就不正确了。

代码

const int N = 2e5;
int ans[N];

void solve()
{
	int n, l, r;
	std::cin >> n >> l >> r;
	for (int i = 1; i <= n; i++)
	{
		if (r / i * i < l)
		{
			std::cout << "NO\n";
			return ;
		}
		ans[i] = r / i * i;//ai是可以相同的 
	}
	std::cout << "YES\n";
	for (int i = 1; i <= n; i++) std::cout << ans[i] << " ";
	std::cout << std::endl;
}

标签:std,cnt,int,void,Codeforces,cin,808,Div
From: https://www.cnblogs.com/kdlyh/p/17897154.html

相关文章

  • Codeforces Round 807 (Div. 2)
    基本情况AB题秒了。C题搞了半天,搞了一个假的解法,最后还是爆空间了。D题没想下去。C.MarkandHisUnfinishedEssayProblem-C-Codeforces错误分析写出来自己的错解之后没有进一步思考,而是觉得没希望直接做D去了,实则D也没可能半小时写完。我的错解就是预处理好每个......
  • Codeforces 198 B Jumping on Walls
    题面翻译题目描述瓦西亚在和忍者玩电脑游戏。在这个关卡,瓦西亚需要操控忍者走出一个很深的峡谷。峡谷由两面垂直于地面且互相平行的墙组成,它们的高度为\(n\)米。我们将这些墙分成许多\(1\)米长的区域,并从下到上用\(1\)到\(n\)的正整数对它们进行编号。有些地方是安全的,忍者可以......
  • Codeforces Round 914 (Div. 2)
    基本情况A题+2,幸好后面突然悟了。B题体现了读题以及一词多义的重要性。C题不会。看了一下1700分的题目,暂时先放了。A.TheThirdThreeNumberProblemProblem-A-Codeforces推出了规律,\(n\)为偶数的时候,无脑\(a=n\oplus1,b=n\oplus1,c=1\)就行。然而奇数......
  • Codeforces Round 914 (Div. 2)
    CodeforcesRound914(Div.2)A-Forked!解题思路:枚举皇后和国王能被骑士吃到的位置,重合的点数就是答案。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;typedefpair<ll,ll>pii;#definefifirst#definesesecondconstintmod=1e9......
  • 232-父级div,包含子div,子div有点击事件,父div有点击事件,js如何实现,2个点击事件不干扰
    HTML结构<divid="parent"><divid="child"></div></div>JavaScript/jQuery代码:$(document).ready(function(){//父级div的点击事件处理程序$('#parent').on('click',function(){console.log(&#......
  • php 去除图片以及DIV的width、height、style
    1.去掉图片的宽高,去掉DIV的style样式$str='<divstyle="margin:0pxauto;width:740px;"><p><imgwidth="748"height="444"alt=""src="/images/upload/Image/manmiao_0001.jpg"/></p></div......
  • 图片铺满div元素不变形,超出部分隐藏,保留中心部分css代码
    在我们网站更新文章的时候,经常会插入图片,丰富信息。但是我们插入的图片长宽比例并不一定是固定的。我们在调用缩略图的时候,常常会出现图片变形的情况,高和宽不成比例。那么如何让图片不变形,又能铺满div元素呢?我们可以使用css代码中object-fit属性来实现。object-fit属性指定元素的......
  • CodeForces 575F Bulbo
    洛谷传送门CF传送门提供一个傻逼\(O(n^2)\)做法。首先考虑暴力dp,设第\(i\)轮后在\(j\)坐标上的最小花费为\(f_{i,j}\),有:\[f_{i,j}=\minf_{i,k}+|j-k|+\begin{cases}l_i-j&j<l_i\\0&l_i\lej\ler_i\\j-r_i&j>r_i\end{cases}......
  • Codeforces Round 914 (Div. 2)
    CodeforcesRound914(Div.2)A.Forked!#include<bits/stdc++.h>#defineendl'\n'#defineintlonglongusingnamespacestd;voidsolve(){inta,b;intx,y;cin>>a>>b>>x>>y;map<pair<int,in......
  • [Codeforces] CF1793C Dora and Search
    CF1793CDoraandSearch题意给定一个长度为\(n\)的排列\(a\),问是否存在正整数\(l,r\)使得\(a_l,a_r\)均不为\(a_{l...r}\)中的最大值或最小值。思路很明显的双指针,虽然我最开始的思路是二分预处理当前序列的最大值和最小值,并且一旦两段的\(l,r\)中有一个是最大或......