【CF闯关练习】—— 1400分(C. Make Good、B. Applejack and Storages)

这篇具有很好参考价值的文章主要介绍了【CF闯关练习】—— 1400分(C. Make Good、B. Applejack and Storages)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🌏博客主页:PH_modest的博客主页
🚩当前专栏:cf闯关练习
💌其他专栏:
🔴每日一题
🟡 C++跬步积累
🟢 C语言跬步积累
🌈座右铭:广积粮,缓称王!

一.关卡1(C. Make Good)

👉传送门👈
【CF闯关练习】—— 1400分(C. Make Good、B. Applejack and Storages),cf闯关练习,c语言,算法,开发语言,codeforces,c++,学习

1.Tutorial

XOR运算就是按位异或:相同为0,不同为1
这个操作符有两个结论:

  • X ⊕ X = 0 X\oplus X= 0 XX=0
  • 0 ⊕ X = X 0 \oplus X=X 0X=X

本题从这两点入手,题目中说最多添加3个数,我们不妨大胆假设只需要两个数,一个数将原数组中的数按位异或之后变成0,再用一个数^0*2等于所有数之和,这边只需要解个方程即可
【CF闯关练习】—— 1400分(C. Make Good、B. Applejack and Storages),cf闯关练习,c语言,算法,开发语言,codeforces,c++,学习

2.Solution

//https://codeforces.com/problemset/problem/1270/C
//
//
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve()
{
    int n;
    cin>>n;
    int sum=0;
    int tmp=0;
    for(int i=0;i<n;i++)
    {
    	int x;
    	cin>>x;
    	sum+=x;
    	tmp^=x;
	}
	cout<<"2\n"<<tmp<<" "<<tmp+sum<<"\n";
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}

二.关卡2(B. Applejack and Storages)

👉传送门👈
【CF闯关练习】—— 1400分(C. Make Good、B. Applejack and Storages),cf闯关练习,c语言,算法,开发语言,codeforces,c++,学习

1.Tutorial

正方形由4个相同的边组成,长方形由2组2个相同的边组成,sum2表示两个一组的个数,sum4表示4个一组的个数,首先sum4 >= 1是必须的,然后还需要知道一点,sum4+1的时候sum2+2,原因参考下面这张图
【CF闯关练习】—— 1400分(C. Make Good、B. Applejack and Storages),cf闯关练习,c语言,算法,开发语言,codeforces,c++,学习
所以我们得出结论:

  • sum4>=1&&sum2>=4时输出“YES”;
  • 否则输出“NO”

2.Solution

//https://codeforces.com/problemset/problem/1393/B
//
//
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve()
{
	map<int,int>mp;
	int n;
	cin>>n;
	int sum4=0;
	int sum2=0;
	for(int i=0;i<n;i++)
	{
		int a;
		cin>>a;
		mp[a]++;
		if(mp[a]%4==0) sum4++;
		if(mp[a]%2==0) sum2++;
	}
	int q;
	cin>>q;
	while(q--)
	{
		string a;
		cin>>a;
		if(a[0]=='+')
		{
			int x;
			cin>>x;
			mp[x]++;
			if(mp[x]%4==0) sum4++;
			if(mp[x]%2==0) sum2++;
		}
		else
		{
			int x;
			cin>>x;
			if(mp[x]%4==0) sum4--;
			if(mp[x]%2==0) sum2--;
			mp[x]--;
		}
		if(sum4>=1&&sum2>=4) cout<<"YES\n";
		else cout<<"NO\n";
	}
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	solve();
	return 0;
}



最后:

闯关系列旨在养成刷题的习惯,所以对代码的解释并不会特别详细,但足够引导大家写出来,选的题目都不会特别难,但也不是特别简单,比较考验大家的基础和应用能力,我希望能够将这个系列一直写下去,也希望大家能够和我一起坚持每天写代码。

之后每个星期都会不定期更新codeforces和atcoder上的题目,想要学习算法的友友们千万别错过了,有什么疑问欢迎大家在评论区留言或者私信博主!

在这里送大家一句话:广积粮,缓称王!文章来源地址https://www.toymoban.com/news/detail-812532.html

到了这里,关于【CF闯关练习】—— 1400分(C. Make Good、B. Applejack and Storages)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1400*B. Phoenix and Beauty(贪心&构造)

    Problem - 1348B - Codeforces  解析:         满足题意,会构成循环序列,其中循环节长度为 k,统计数列中不同元素的个数 cnt ,如果cnt k,显然无解。         否则,由于题意中已经证明,答案序列个数小于等于 10000,并且 n和k的范围都为100,则n*k小于等于10000,所以我们直接

    2024年02月08日
    浏览(45)
  • Codeforces Round 303 (Div. 2)C. Kefa and Park(DFS、实现)

    C. Kefa and Park 求叶节点数量,叶节点满足,从根节点到叶节点的路径上最长连续1的长度小于m 这道题目主要是实现,当不满足条件时直接返回。 到达叶节点后统计答案,用vector存图的话,无向图时,叶节点的边只有一条,也就是 g [ i ] . s i z e ( ) = = 1 g[i].size()==1 g [ i ] . s i ze

    2024年02月19日
    浏览(38)
  • Codeforces Round 169 (Div. 2)C. Little Girl and Maximum Sum(差分、贪心)

    C. Little Girl and Maximum Sum 给q个[l,r]将所有这些区间里面的数相加和最大。 可以进行的操作是任意排列数组 对出现的每个区间内的位置加上1,代表权值 操作完之后求一遍前缀和,得到每个位置的权值 然后贪心的考虑,权值越大,应该分配给该位置的数越大越好这样对答案的贡

    2024年02月21日
    浏览(38)
  • 【学习笔记】CF573E Bear and Bowling

    感觉贪心的做法比较自然🤔,推荐 这篇博客 非常经典 牛逼 的贪心思路: 考虑每次加入一个数,位置 i i i 的贡献为 V i = k i × a i + b i V_i=k_itimes a_i+b_i V i ​ = k i ​ × a i ​ + b i ​ ,其中 k i k_i k i ​ 表示 i i i 以前被选的位置的个数, b i b_i b i ​ 表示 i i i 以后被选的数的

    2024年02月07日
    浏览(32)
  • C. Salyg1n and the MEX Game Codeforces Round 897 (Div. 2)

    Problem - C - Codeforces 题目大意:有一个所有数互不相同的长度为n的数组n,A先手,可以向数组中假如一个没有的数x,B可以从数组中移除一个x的数,目标是使数组最终的MEX最小,扮演A进行操作,使数组最终的MEX最大 1=n=1e5;最大回合数为n 思路:我们要让当前数组的MEX增大,必

    2024年02月07日
    浏览(31)
  • 【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析

      首先分享一个自己做的很不错的网路安全笔记,内容详细介绍了许多知识 超详细的网络安全笔记 分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取: 超详细的网络安全笔记​编辑https://m.tb.cn/h.5JdFcih?tk=OuVrWRl9vMx%20CZ3457 若已安装,请

    2024年02月06日
    浏览(47)
  • Please make sure you have the correct access rights and the repository exists 解决方案

    使用git push操作时出现“Please make sure you have the correct access rights and the repository exists”错误,发现一个好博客,有很详细的教程。 但是按照该博客操作后发现依然出现这个错误。 无意中想到昨天因为copilot无法使用对hosts文件进行过操作,于是打开hosts文件后发现,确实更改过

    2024年02月04日
    浏览(44)
  • git clone 时候出现 Please make sure you have the correct access rights and the repository exists

    Please make sure you have the correct access rights and the repository exists 请确保您具有正确的访问权限并且存储库存在 问题描述: 输入 git clone 命令时出现Please make sure you have the correct access rights and the repository exists.错误, 出现这个问题的原因是git服务器没有存储本地ssh密钥 解决步骤:

    2024年02月05日
    浏览(52)
  • git拉取失败,没有权限:Please make sure you have the correct access rights and the repository exist

    git拉取项目,出现以下: 提示错误显示为没有权限,主要是因为不同设备上的ssh公钥不同,导致git仓库公钥出现问题,需要重新重新生成ssh公钥即可解决 1.重置用户名和邮箱: 2.删除known_hosts文件: 3.生成公钥认证所需的公钥和私钥文件,在C盘.shh文件夹里打开git bash,Git输入

    2024年02月16日
    浏览(40)
  • 报错:git clone 时候出现Please make sure you have the correct access rights and the repository exists.问题解决

    输入 git clone 命令时出现Please make sure you have the correct access rights and the repository exists.错误,出现改问题的原因是git服务器没有存储本地ssh密钥。 解决步骤: 删除 .ssh 文件夹【C:Users(本地用户名).ssh】 中的 known_hosts(直接删除即可) 在下载好的Git中的bin目录下(一般是 C:Program

    2024年02月05日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包