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

Codeforces Round #825 (Div. 2)

时间:2022-11-26 17:33:24浏览次数:40  
标签:int cb ca Codeforces cin ++ solve 825 Div

A

核心思路:这题的第一反应是直接统计a所有的0的数目和b所有的0的数目,然后两式相减。但是我们会发现一个问题,因为有些是可能不需要排序的,所有还有记录下a和b所有不同的个数的数目,再判断与我们之前的那个是不是相等的.

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e7 + 10;
int a[N], b[N];
int ca[2], cb[2];
void solve()
{
	int n;
	cin >> n;
	int cnt = 0;
	memset(ca, 0, sizeof ca);
	memset(cb, 0, sizeof cb);
	for (int i = 0;i < n;i++)
	{
		cin >> a[i];
		ca[a[i]]++;
	}
	for (int i = 0;i < n;i++)
	{
		cin >> b[i];
		cb[b[i]]++;
		cnt += (a[i] != b[i]);
	}
	if (cnt == abs(ca[0] - cb[0]))
		cout << cnt << endl;
	else
		cout << abs(ca[0] - cb[0]) + 1 << endl;
}
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		solve();
	}
}

B

核心思路:这就是一个经典的构造题了,我们需要使用b数组通过最大公约数来构造a数组。那换而言之我们是不是可用a数组通过最大公倍数构造出b数组呢。答案是肯定的。唯一需要注意的是b[0]和b[n]的值.

#include<bits/stdc++.h>
using namespace std;
#define IOS std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
const int N = 1e6 + 10;
int a[N], b[N];
int gcd(int a, int b)
{
	return b ? gcd(b,a%b) : a;
}
void solve()
{
	int n;
	cin >> n;
	for (int i = 0;i < n;i++)
		cin >> a[i];
	b[0] = a[0];
	b[n] = a[n - 1];
	for (int i = 1;i < n;i++)
	{
		b[i] = a[i] * a[i - 1] / gcd(a[i], a[i - 1]);
	}
	for (int i = 0;i < n;i++)
	{
		if (a[i] != gcd(b[i], b[i + 1]))
		{
			cout << "NO" << endl;
			return;
		}
	}
	cout << "YES"<<endl;
}
int main()
{
	IOS;
	int t;
	cin >> t;
	while (t--)
	{
		solve();
	}
}

C

核心思路:这就是一个滑动窗口的问题。但是有个特别需要注意我们选中的数组下标和我们看的是不一样的,这个可以看样例2。他最后是会把\(l\sim r,映射为0\sim r-l\),这也是为什么我们可以使用滑动窗口的大小来进行判断。

#include<bits/stdc++.h>
using namespace std;
#define IOS std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
typedef long long LL;
const int N = 1e6 + 10;
int a[N], b[N];
void solve()
{
	queue<int> q;
	int n;
	cin >> n;
	LL ans = 0;
	for (int i = 0;i < n;i++)
	{
		int x;
		cin >> x;
		while (x <= q.size())q.pop();//因为我们插入这个元素之后他的size又需要加1所以需要取等号
		q.push(x);
		ans += q.size();
	}
	cout << ans << endl;
}
int main()
{
	IOS;
	int t;
	cin >> t;
	while (t--)
	{
		solve();
	}
}

没办法,D题的题目都看不懂,没办法补出来了

标签:int,cb,ca,Codeforces,cin,++,solve,825,Div
From: https://www.cnblogs.com/xyh-hnust666/p/16927850.html

相关文章

  • NPC:费解的开关、sumdiv
    1、费解的开关​​https://ac.nowcoder.com/acm/contest/998/D​​题目大意:如图。分析:简单分析可知,每个开关至多点击1次,因为你同一个开关点2次又反转回来了相当于没点,而且题......
  • 【解题报告】CF DIV2 #ROUND 717 A~C D(只有思路)
    【解题报告】CFDIV2#ROUND717A~D​​比赛链接​​排名3694,终于上分了,回归pupil好耶A.TitforTat思路简单的贪心,字典序最小那就让前面的-1,然后+1全部加到最后一个数......
  • [拓扑排序 反向建图] 825E - Minimal Labels
    [拓扑排序编号字典序最小]825E-MinimalLabels题目​​题目链接​​思路这题答案要求节点编号越小,打上的标签越小,即编号序列字典序最小,而非拓扑序列字典序最小。想让当......
  • 【解题报告】CF DIV2 #ROUND 715 A~D
    【解题报告】CFDIV2#ROUND715A~D​​比赛链接​​​rating,已经无所谓了hhB想了个假算法,卡了半天,C也没时间看,我蠢爆了。A.AverageHeight思路速A了,先把奇数全部输出,然......
  • 【解题报告】CF DIV2 #ROUND 716 A~C
    【解题报告】CFDIV2#ROUND716A~C​​比赛链接​​​数学场/规律场A题5分钟速切,B题开始没看懂先看了C,发现C整不来,B整了半天打表找规律一发AC。D貌似要分块莫队之类的还......
  • 【解题报告】CF DIV3 #ROUND 734 A~D1
    【解题报告】CFDIV2#ROUND707A~D​​比赛链接​​比赛评价:一般性,有段时间没打了,甚至忘记多组输入hh。顺便吐槽一下翻译软件确实不行,以后还是直接看英文好了A.Polycarp......
  • CF1141 Div3 欢乐信心赛
    非常轻松的比赛,连我这样的菜鸡也感到充满力量。A用类似于质因数分解的操作搞一搞即可。B将环复制一遍。C可以发现\(q\)就是差分数组。那么差分数组之和最大的地方......
  • Codeforcess834
    Codeforcess目录CodeforcessAcode:Bcode:Ccode:Ccode:Ecode:Fcode:Fcode:A暴力枚单个循环节code:#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#def......
  • Codeforces Round #615 (Div. 3) E
    E.ObtainaPermutation我们显然可以按列来看对于每一列我们发现我们求的就是一个模式串与模板串的最大匹配+位移贡献因为模板串肯定是不同元素我们直接对于模式串......
  • Public NOIP Round #4(Div. 1) 题解
    T1:容易发现每种药品之间互不影响,对每种药品分别计算,对于它所涉及到的区间开个vector存下来,离散化之后差分,然后前缀和,数出只有它一个线段覆盖的段即可。时间复杂度\(\m......