惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

文章列表

DNSMgr——聚合管理所有域名DNS解析+自动续签SSL证书并部署 | AirTouchの小站 雨云香港服务器简单测评 | AirTouchの小站 七牛云 AI 狂送 token 实测到底怎么样 | AirTouchの小站 记一次博客被攻击 | AirTouchの小站 给你的 Artalk 评论区配置验证码和垃圾评论检测 | AirTouchの小站 抓紧上车!免费 E3 开发者账号又来了! | AirTouchの小站 Vercel & Cloudflare Worker 项目推荐(2) | AirTouchの小站 用 Zmail 搭建自己的临时邮箱 | AirTouchの小站 IPv6反解域名?手把手带你搞 | AirTouchの小站 用插件实现 Hexo AI 文章摘要 | AirTouchの小站 用 Librechat 部署自己的 AI 网站 | AirTouchの小站 迁移 Umami Cloud 数据到自建的 Umami | AirTouchの小站 raksmart 圣何塞超低价 vps 测评 | AirTouchの小站 Vercel & Github Actions 项目推荐(1) | AirTouchの小站 macOS Tahoe 26中Electron架构卡顿的临时解决方案 | AirTouchの小站 用Obsidian插件增强Stellar写作体验 | AirTouchの小站 复习一下最小生成树 | AirTouchの小站 2025苹果秋季发布会亮点总结 | AirTouchの小站 分享几个artalk邮件通知模板 | AirTouchの小站 博客的图片应该存哪啊? | AirTouchの小站 Pic Smaller——自部署压缩图片的利器 | AirTouchの小站 企业微信的自定义域名邮箱太香了 | AirTouchの小站 所有道听途说,终获眼见为实 | AirTouchの小站 修复Vercel部署hexo导致文章的更新时间错误 | AirTouchの小站 jsDelivr国内公益加速镜像分享 | AirTouchの小站 搭建自己的busuanzi访问量统计服务 | AirTouchの小站 用Vercel和Netlify反代你的网站 | AirTouchの小站 用EdgeOne配置反向代理 丢掉丑陋的端口号 | AirTouchの小站 拼好鸽香港4区nat机器:月付3.5还要啥自行车! | AirTouchの小站 博客的新域名——xsl.im | AirTouchの小站 如何搭建自己的EdgeOne优选域名 | AirTouchの小站 用EdgeOne加速CloudflareR2存储桶 | AirTouchの小站 EdgeOne自动化上传证书并部署 | AirTouchの小站 你需要把PicGo换成PicList了! | AirTouchの小站 Cursor屏蔽中国大陆?给你解决方案! 使用 Cloudflare Workers 自动获取必应每日壁纸 | AirTouchの小站 题解:P11140 [APC001] E - Linear Map | AirTouchの小站 Phira多人联机服务器搭建&使用教程 腾讯云EdgeOne免费CDN加速你的网站 | AirTouchの小站 Hexo 博客收录指南 Hexo Stellar 主题装修笔记
题解:P9509『STA - R3』Aulvwc | AirTouchの小站
AirTouch, me@airtouch.top · 2025-07-15 · via

www.luogu.com.cn

https://www.luogu.com.cn/problem/P9509

简化一下题意,对于原集合 SS,就是找原集合的两个子集 S1,S2S_1,S_2,使得 S1S2=S,S1S2=S_1 \cup S_2 = S,S_1 \cap S_2 = \emptyS1,S2S_1,S_2 的平均数等于 SS 的平均数

注意到特殊性质中的 ai=0\sum a_i = 0,这个很好写,分成一个正集合和一个负集合,每个跑一个可行性背包 f,gf,gfi,gif_i,g_i 表示 S1,S2S_1,S_2 中能否存在 ii,如果 fi=gii[1,f_i = g_i,i \in [1, aj2\sum a_j \over 2 (aj>0))(a_j > 0)),那么S1,S2S_1,S_2 的平均数等于 SS 的平均数

考虑把整体情况转化,把 aia_i 减掉平均数,那么 ai=0\sum a_i = 0,这样就成了特殊性质。按照特殊性质的方法处理就行。

但时间复杂度是 O(n2k)O(n^2k)(kk 是值域,题中为 5×1035\times 10^3),大约是个 5×1095 \times 10^9,会炸,考虑用 bitset 优化可行性背包,f = f|=(f<<a_i),时间复杂度优化到了 10810^8 左右,可以通过。

cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
int n,a[N];
bitset<2500000> fp,fn;
void solve(){
	int sum=0,agv=0;
	fp=fn=0;
	vector<int> nn,pp;
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i],agv+=a[i];
	if(agv%n!=0){
		puts("No");
		return;
	}
	agv/=n;
	for(int i=1;i<=n;i++){
		a[i]-=agv;
		if(a[i]==0){
			puts("Yes");
			return;
		}
		(a[i]>0?pp:nn).push_back(abs(a[i]));
		sum+=(a[i]>0?a[i]:0);
	}
	fp[0]=fn[0]=1;
	for(int x:pp) fp|=(fp<<x);
	for(int x:nn) fn|=(fn<<x);
	fp[sum]=fn[sum]=fp[0]=fn[0]=0;
	puts(((fp&fn)!=0?"Yes":"No"));
}
signed main(){
	cin.tie(0)->ios::sync_with_stdio(0);
	int q;cin>>q;
	while(q--) solve();
	return 0; 
}