首页 > 其他分享 >Codeforces Round 896 (Div. 2) A. Make It Zero

Codeforces Round 896 (Div. 2) A. Make It Zero

时间:2023-10-16 18:22:29浏览次数:39  
标签:std 896 int Make Codeforces 选择 leq cdots 操作

给一个大小为 \(n\) 的数组 \(a\) \((n \geq 2)\) 。你希望进过一些操作使得 \(\forall i, a_i = 0\) 。

在一步操作中,可以选择 \(1 \leq l \leq r \leq n\) 并且执行:

  • \(s = \bigoplus_{i = l}^{r} a_i\) 。
  • \(\forall l \leq i \leq r, a_i = s\) 。

输出一个解决方案,使得操作次数 \(\leq 8\) 。

观察到,第一步可以选择 \(l = 1, r = n\) 。于是 \(a = [x, x, \cdots, x]\) 。

  • 若 \(n\) 为偶数,再选择一次 \(l = 1, r = n\) ,则 \(a = [0, 0, \cdots, 0]\) 。
  • 否则
    • 选择 \(l = 1, r = n - 1\) ,使 \(a = [0, \cdots, 0, x]\) 。
    • 选择 \(l = n - 1, r = n\) ,使 \(a = [0, \cdots, x, x]\) 。
    • 选择 \(l = n - 1, r = n\) ,使 \(a = [0, \cdots, 0, 0]\) 。

\(n\) 为偶数最多需要操作两次,\(n\) 为奇数最多需要操作 \(4\) 次。

view
#include <bits/stdc++.h>
typedef long long ll;
void solve(){
	int n; std::cin >> n;
	std::vector<int> a(n+1);
	for (int i = 1; i <= n; i++) std::cin >> a[i];
	if (~n & 1) {
		std::cout << 2 << '\n';
		std::cout << 1 << ' ' << n << '\n';
		std::cout << 1 << ' ' << n << '\n';
	}
	else {
		std::cout << 4 << '\n';
		std::cout << 1 << ' ' << n << '\n';
		std::cout << 2 << ' ' << n << '\n';
		std::cout << 1 << ' ' << 2 << '\n';
		std::cout << 1 << ' ' << 2 << '\n';
	}
}
int main() {
	int _ = 1; std::cin >> _;
	while (_--) {solve();}
	return 0;
}

标签:std,896,int,Make,Codeforces,选择,leq,cdots,操作
From: https://www.cnblogs.com/zsxuan/p/17768046.html

相关文章

  • Codeforces Round 635 (Div. 2) B. Kana and Dragon Quest game
    你需要击败一只巨龙,他有\(h\)点血量,你可以使用以下两种攻击方式:黑洞:使巨龙的血量变为\(\lfloor\frac{h}{2}\rfloor+10\)。可以使用\(n\)次。雷击:使巨龙的血量变为\(h-10\)。可以使用\(m\)次/当巨龙的血量\(h\leq0\)时,你将他击败了。询问你是否可以将他击......
  • Codeforces Round 637 (Div. 2) - Thanks, Ivan Belonogov! A. Nastya and Rice
    纳斯塔亚掉了\(n\)个谷物,每个谷物的重量范围在\([a-b,a+b]\)。她猜测谷物的总重量范围在\([c-d,c+d]\)。询问她的猜测是否正确。显然,若\([n(a-b),n(a+b)]\)和\([c-d,c+d]\)有交,则她的猜测正确。view#include<bits/stdc++.h>typedeflonglongll;......
  • Codeforces Round 633 (Div. 2) A. Filling Diamonds
    给定一个正整数\(n\),询问有多少种方式填充满图中\(4n-2\)的图。你可以使用的菱形:竖着摆放和横着摆放都是一种方案。显然选择某个位置竖着摆放,其他所有地方只能横着摆放,这样的位置有\(n\)个。具体图形见:https://codeforces.com/problemset/problem/1339/Aview#includ......
  • Codeforces Round 636 (Div. 3) A. Candies
    \(vv\)有\(n\)个糖果,\(vv\)记得这些糖果是按如下方式购买的:第\(i\)天买了\(2^{i-1}x\)个,总共买了\(k\)天,\(k>1\)。但是\(vv\)忘了\(x\)是多少,询问任意一个满足条件的\(x\)。保证给出的\(n\)存在这样一个\(x\)。显然,根据几何或二进制证明,有\(\sum_{......
  • CodeForces 887E Little Brother
    洛谷传送门CF传送门根据初中数学知识,圆心在\(AB\)线段的中垂线上。又因为给定圆与\(AB\)线段所在直线不交,所以圆心在中垂线的一端极远处完全包含这个给定圆,在另一端极远处与这个给定圆相离。而具体在哪一端只与圆心在\(AB\)的左侧还是右侧有关。因此可以二分找到与给......
  • Educational Codeforces Round 91 (Rated for Div. 2) A. Three Indices
    给一个\(n\)个整数的排列\(p_1,p_2,\cdots,p_n\),需要找到三个数\(i,j,k\)满足:\(1\leqi<j<k\leqn\)\(p_i<p_j\),\(p_j<p_k\)否则回答不可能。\(key\):若存在上述\(i,j,k\),则存在\(x\)满足\(p_{x-1}<p_{x},p_{x}>p_{x+1......
  • * Codeforces Round 665 (Div. 2) A. Distance and Axis
    有一个点\(A\)在\(OX\)正坐标轴上的\(x\)坐标为\(n\)。需要找到一个点\(B\),使得\(||OB|-|AB||=k\)。现在给出非负整数\(n\)\(k\),你可以执行任意次以下操作:每步操作可以使\(A\)的坐标加一或减一。询问最少需要进过多少次操作使\(B\)可以存在。先假设出......
  • Codeforces Round 903 (Div. 3)
    [比赛链接]A.Don'tTrytoCount直接用string的可加性,每次s+=s相当于翻倍了,因为\(nm<=25\)所以最多翻倍5次。判断什么的直接模拟就行。#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>#include<cstring>#include<cstdlib>#inclu......
  • Make PDF into TIFF with PhotoShop CS 5
     MakePDFintoTIFFEitheropenthePDFdirectlyinyourgraphicssoftwareorright-clickonthePDF'sfilename,select“Openwith...”,andselectthenameofyourgraphicssoftware.Then,usingthetoolsinastandalonegraphicssoftware(AdobePho......
  • Codeforces Round 903 (Div. 3) F. Minimum Maximum Distance(图论)
    CodeforcesRound903(Div.3)F.MinimumMaximumDistance思路对标记点更新fg,从0开始进行bfs,更新d1为所有点到0的距离获得到0最远的标记点L,从L开始bfs,更新d2为所有点到L的距离获得距离L最远的标记点R,从R开始bfs,更新d3为所有点到R的距离遍历所有点,这个点与标记点的最大距......