首页 > 其他分享 >『题解』Codeforces 808D Array Division

『题解』Codeforces 808D Array Division

时间:2022-11-26 22:00:31浏览次数:73  
标签:数字 int 题解 sum 808D maxn ans Array

题目传送门


解题思路

  • 首先统计 \(n\) 个数字和为 \(sum\),那么一半就是 \(sum = sum \div 2\)
  • 从 \(1\) 到 \(n\) 枚举,累计进前缀和 \(ans\) 中,如果发现第 \(i\) 个数字累计进前缀和 \(ans\) 中后,前面 \(i\) 个数字中有数字等于 \(sum - ans\), 那就把这个数字挪到后面 \(n - i\) 个中去
  • 或者剩下的数字中有数字的值等于 \(ans - sum\), 那就把这个数字挪到前 \(i\) 个中去

\(Code\)

#include <bits/stdc++.h>
using namespace std;
map <long long,long long> c;
map <long long,long long> d;
const int maxn = 1e5 + 5;
long long n, a[maxn], b[maxn], sum;
int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++) 
	{
		cin >> a[i];
		sum += a[i], b[i] = b[i - 1] + a[i], d[a[i]] ++; 
	}
	if (sum % 2 != 0)
	{
		cout << "NO";
		return 0;
	}
	sum /= 2, c[0] = 1;
	for (int i = 1; i <= n; i ++)
	{
		c[a[i]] ++, d[a[i]] --;
		if (d[a[i]] == 0) d.erase(a[i]);
		if (b[i] >= sum)
		{
			if (c[b[i] - sum])
			{
				cout << "YES";
				return 0;
			}
		}
		else
		{
			if (d[sum - b[i]])
			{
				cout << "YES";
				return 0;
			}
		}
	}
	cout << "NO";
	return 0;			
}

标签:数字,int,题解,sum,808D,maxn,ans,Array
From: https://www.cnblogs.com/mrCrazyWolf/p/16928437.html

相关文章

  • 『题解』UVA 10534 Wavio Sequence
    题目传送门题意\(Wavio\)是整数序列,有如下特点:它的长度总为奇数,即\(2n+1\);前\(n+1\)个数构成一个严格的上升序列,后\(n+1\)个数构成一个严格下降的序列;任意......
  • 『题解』UVA 10795 A Different Task
    题目传送门双倍经验:LuoguP1242分析汉诺塔相信每一个合格的OIer都听说过并且实现过。这是一个递归的程序。汉诺塔本来就有两个规则:一次只能移动最上面的一个盘......
  • 『题解』UVA 148 Anagram checker
    题目传送门分析貌似除了递归式暴力搜索外,没有其它的有效算法了。这样的话,对代码性能的要求就比较高了,为了快速的判断一个短语是否包含某个单词,必须找出一种特定的数据结......
  • 『题解』UVA 12676 Inverting Huffman
    题目传送门题意静态哈夫曼编码是一种主要用于文本压缩的编码算法。给定一个由\(N\)个不同字符组成的特定长度的文本,算法选择\(N\)个编码,每个不同的字符一个编码。使......
  • 『题解』Codeforces 1743A Password
    Problem现有\(4\)位密码,满足以下条件:给定数位的集合\(S\),密码中没有用到这些数位。密码中恰好包含两个数位,每个数位出现了两次。求符合条件的密码个数。Solution......
  • 『题解』Codeforces 1742C Stripes
    Problem在\(8\times8\)的网格上,轮流染上红色和蓝色。红色只能染一整行。蓝色只能染一整列。问最后用的是哪种颜色。Solution题目说明了至少会染一个条纹,所以我......
  • 『题解』Codeforces 1702A Round Down the Price
    题意这道题其实就是让你求出当前数字与\(10\)的整数幂次的差值(注意不能向上取,只能向下取)。而且题目也标注了\(1\lek\le9\),所以我们可以让\(i\)从\(0\sim9\)......
  • IOS13及以上Fiddler不能抓包问题解决
    iOS 上一般情况下信任HTTPS证书即可抓HTTPS的包(除非APP开启了防止抓包),但最近发现iOS 13以上出现即使安装并信任了证书,当用safari浏览百度时仍出现是否信任该网站......
  • dp完全背包问题解组合问题——零钱兑换
    本题为完全背包问题,遍历容量需要顺序遍历classSolution{public:intchange(intamount,vector<int>&coins){//完全背包顺序遍历//背包容量为a......
  • 题解 P7623 [AHOI2021初中组] 收衣服
    我还在小学的时候以现在初中名义我大五十牛逼参加了这次,然后身败名裂死磕这道题不会,现在觉得自己好傻啊233333显然这是要统计每个区间的贡献,所以我们可以打出来这个暴力,......