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

推荐订阅源

F
Fortinet All Blogs
S
Secure Thoughts
月光博客
月光博客
美团技术团队
雷峰网
雷峰网
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Forbes - Security
Forbes - Security
W
WeLiveSecurity
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
G
GRAHAM CLULEY
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
AI
AI
Last Week in AI
Last Week in AI
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recent Announcements
Recent Announcements
Webroot Blog
Webroot Blog
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
N
News and Events Feed by Topic
罗磊的独立博客
The Register - Security
The Register - Security
Blog — PlanetScale
Blog — PlanetScale
T
Threat Research - Cisco Blogs
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
T
The Exploit Database - CXSecurity.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
B
Blog
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Engineering at Meta
Engineering at Meta
Latest news
Latest news
IT之家
IT之家
D
DataBreaches.Net
博客园 - 司徒正美
N
Netflix TechBlog - Medium
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

AirTouchの小站

DNSMgr——聚合管理所有域名DNS解析+自动续签SSL证书并部署 | AirTouchの小站 雨云香港服务器简单测评 | AirTouchの小站 七牛云 AI 狂送 token 实测到底怎么样 | AirTouchの小站 记一次博客被攻击 | AirTouchの小站 给你的 Artalk 评论区配置验证码和垃圾评论检测 | AirTouchの小站 抓紧上车!免费 E3 开发者账号又来了! | AirTouchの小站 Vercel & Cloudflare Worker 项目推荐(2) | AirTouchの小站 用 Zmail 搭建自己的临时邮箱 | AirTouchの小站 IPv6反解域名?手把手带你搞 | AirTouchの小站 AirTouchの小站 AirTouchの小站 AirTouchの小站 AirTouchの小站 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屏蔽中国大陆?给你解决方案! | AirTouchの小站 使用 Cloudflare Workers 自动获取必应每日壁纸 | AirTouchの小站 题解:P11140 [APC001] E - Linear Map | AirTouchの小站 Phira多人联机服务器搭建&使用教程 | AirTouchの小站 腾讯云EdgeOne免费CDN加速你的网站 | AirTouchの小站 Hexo 博客收录指南 | AirTouchの小站 题解:P12646 [KOI 2024 Round 1] 升序 | AirTouchの小站 Cloudflare CDN优选IP加速你的网站 | AirTouchの小站 Giffgaff在线生成esim二维码 | Giffgaff sim转eSIM指南 | AirTouchの小站 AirTouchの小站 AirTouchの小站 Hexo Stellar 主题装修笔记 | AirTouchの小站 AirTouchの小站 AirTouchの小站 AirTouchの小站
题解:P9509『STA - R3』Aulvwc | AirTouchの小站
AirTouch, me@airtouch.top · 2025-07-15 · via AirTouchの小站

www.luogu.com.cn

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

简化一下题意,对于原集合 SS,就是找原集合的两个子集 S1,S2S_1,S_2,使得 S1∪S2=S,S1∩S2=∅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=gi,i∈[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; 
}