当前位置: 首页 > news >正文

Solution - P2175 小Z的游戏分队

好题。


对着原图做一看就不太对劲的样子,于是决定建出反图,那么存在方案当且仅当点集能被分为两部分,每部分内部没有边。也就是说,存在方案的充要条件是反图为二分图。

于是我们考虑最优化答案。发现反图被分割为了若干个连通块,每个连通块被分为两部分,于是我们考虑一个部分应该被分到哪边才能使得差最小。由于数据不大,我们直接用一个 dp 搞就行了。方程式为 \(dp_{i, j} = dp_{i-1, j-v_i}\ \mathrm{or}\ dp_{i-1, j+v_i}\),其中 \(dp_{i, j}\) 表示选到第 \(i\) 个连通块且差值为 \(j\) 是否可行,\(v_i\) 为该连通块内两部分大小之差。

注意到我们可以用 bitset 优化 dp,于是时间复杂度为 \(\mathrm O(\frac{n^2}{\omega})\)

#include <bits/stdc++.h>
#define llong long long
#define N 2005
using namespace std;#define bs (1<<20)
char buf[bs], *p1, *p2;
#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,bs,stdin),p1==p2)?EOF:*p1++)
template<typename T>
inline void read(T& x){x = 0; int w = 1;char ch = gc();while(ch < '0' || ch > '9'){if(ch == '-') w = -w;ch = gc();}while(ch >= '0' && ch <= '9')x = (x<<3)+(x<<1)+(ch^48), ch = gc();x *= w;
}
template<typename T, typename ...Args>
inline void read(T& x, Args& ...y){return read(x), read(y...);
}int n, m;
bitset<N+1> G[N];
int to[N*N], nxt[N*N], head[N], gsiz;
#define mkarc(u,v) (++gsiz, to[gsiz]=v, nxt[gsiz]=head[u], head[u]=gsiz)
int col[N], siz[N][4], val[N];
bitset<N<<1|1> dp[2];
#define f(x,y) dp[x][y+N]inline bool dfs(int u){++siz[m][col[u]];for(int i = head[u]; i; i = nxt[i]){int v = to[i];if(col[v] == col[u]) return false;if(!col[v]){col[v] = col[u]^3;if(!dfs(v)) return false;}}return true;
}int main(){read(n);for(int i = 1; i <= n; ++i) G[i].flip(), G[i][i] = false;for(int i = 1, x; i <= n; ++i){while(true){read(x);if(!x) break;G[i][x] = false;}}for(int i = 1; i <= n; ++i)for(int j = i+1; j <= n; ++j)if(G[i][j] || G[j][i]) mkarc(i, j), mkarc(j, i);for(int i = 1; i <= n; ++i){if(col[i]) continue;col[i] = 1, ++m;if(!dfs(i)){puts("No solution");return 0;}val[m] = abs(siz[m][1]-siz[m][2]);}f(0, 0) = 1;for(int i = 1; i <= m; ++i){int rt = i&1, lt = i&1^1;dp[rt] = (dp[lt]<<val[i])|(dp[lt]>>val[i]);}for(int i = 0; i <= n; ++i){if(!f(m&1, i)) continue;printf("%d %d", (n-i)>>1, (n+i)>>1);return 0;}return 0;
}
http://www.jsqmd.com/news/397188/

相关文章:

  • 北京丰宝斋上门回收,名家字画+古木家具,一站式变现更省心 - 品牌排行榜单
  • 题解:洛谷 P4071 [SDOI2016] 排列计数
  • 北京明清古籍回收,丰宝斋老字号上门,现金结算,价公道有保障 - 品牌排行榜单
  • [Kaleidoscope of Physics] 自然坐标系
  • 2026 专业除醛产品怎么选:光触媒和生物酶睿石适配场景 + 组合技巧 - 资讯焦点
  • 2026年2月中国推荐GEO服务商TOP8综合实力权威榜单:企业AISEO选型深度指南 - 资讯焦点
  • 北京线装书回收,丰宝斋上门鉴定,现金结算,专业守护文脉 - 品牌排行榜单
  • MISSION.md — AI自主创收作战手册
  • 2026年正规靠谱十大移民中介公司推荐,零拒签+零纠纷是选择金标准 - 资讯焦点
  • 2026年2月中国正规移民中介十大排行榜:飞际移民位居前列的客观观察 - 资讯焦点
  • 北京老书旧书回收,丰宝斋上门服务,现金结算,不让老书蒙尘 - 品牌排行榜单
  • 2026年智能干选机行业主流制造商权威评测:技术落地成核心分水岭,头部格局基本成型 - 资讯焦点
  • 题解:洛谷 P1313 [NOIP 2011 提高组] 计算系数
  • 北京红宝书回收,丰宝斋上门服务,现金结算,价高同行 - 品牌排行榜单
  • 2026年2月权威发布:GEO优化服务商排行TOP7综合实力评估与选型指南 - 资讯焦点
  • 长期主义的拼命,会给你留后劲
  • 京东e卡回收灵活渠道解析 - 资讯焦点
  • 新房+儿童房+新车除醛攻略:2026 三款顶级除醛产品组合使用方法 - 资讯焦点
  • 北京丰宝斋上门回收名家字画,当场现金结算,老字号更靠谱 - 品牌排行榜单
  • 头屑反复、头皮瘙痒?2026实测5款高口碑去屑洗发水,重拾清爽秀发 - 资讯焦点
  • 最新实测|头油星人必看!10款热门控油洗发水深度测评,告别扁塌大油头 - 资讯焦点
  • 国产2026防脱发生发增发密发哪个牌子效果好?十大高分防脱生发品牌排行榜 - 资讯焦点
  • 1978-2024年各地级市全要素生产率数据
  • 在机器学习建模过程中,参数调优是个绕不开的坎。今天咱们用Matlab的神经网络工具箱实战一把K折交叉验证寻参,手把手搞定隐藏层节点数的选择
  • 两座城市,同一个 “立方”:透视春晚舞台上的中国算力地标 - 资讯焦点
  • 【硬核推测】2026自动挡古筝技术细节全解析|从乐展线索反推量产方案,附工程落地猜想
  • 题解:洛谷 P1287 盒子与球
  • 题解:洛谷 P3197 [HNOI2008] 越狱
  • LeetCode761:特殊的二进制字符串
  • 题解:洛谷 P4549 【模板】裴蜀定理