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

[Non] - 选举

[Non] - 选举

大意

给定 \(N\) 个候选人 \(\{1,2,\dots,N\}\)\(M\) 个形如 \(\pm i \pm j\)\(1 \le i,j \le N\))的民意调查约束,判断是否存在对每个候选人「当选/落选」的状态分配方案,使得该方案满足所有约束条件。若存在则输出 \(1\),否则输出 \(0\)

  • \(+i+j\)\(x_i \lor x_j\)(至少一个当选)
  • \(-i-j\)\(\neg x_i \lor \neg x_j\)(至少一个落选)
  • \(+i-j\)\(x_i \lor \neg x_j\)\(i\) 当选 或 \(j\) 落选)
  • \(-i+j\)\(\neg x_i \lor x_j\)\(i\) 落选 或 \(j\) 当选)

思路

对于这个题目,显然的,\(\text{2 - SAT}\) 直接秒了。

代码

#include<iostream>
#include<vector>
using namespace std;const int MAXN = 1005;
int n, m;
vector<int> g[MAXN * 2];
bool vis[MAXN * 2];
int S[MAXN * 2], c = 0;bool dfs(int u){if(vis[u ^ 1]){return false;}if(vis[u]) return true;vis[u] = true;S[c ++] = u;for(int i = 0;i < g[u].size();i ++){int v = g[u][i];if(!dfs(v)){return false;}}return true;
}bool judge(){for(int i = 0;i < 2 * n;i += 2){if(!vis[i] && !vis[i + 1]){c = 0;if(!dfs(i)){while(c > 0) vis[S[-- c]] = false;if(!dfs(i + 1)){return false;}}}}return true;
}int main(){ios::sync_with_stdio(0);cin.tie(0);while(cin >> n >> m){for(int i = 0;i <= 2 * n - 1;i ++){if(!g[i].empty()) g[i].clear();vis[i] = false;}for(int i = 1;i <= m;i ++){string s1, s2;cin >> s1 >> s2;int u = stoi(s1.substr(1)); u --;int v = stoi(s2.substr(1)); v --;if(s1[0] == '+' && s2[0] == '+'){g[u * 2 + 1].push_back(v * 2);g[v * 2 + 1].push_back(u * 2);}else if(s1[0] == '-' && s2[0] == '-'){g[u * 2].push_back(v * 2 + 1);g[v * 2].push_back(u * 2 + 1);}else if(s1[0] == '+' && s2[0] == '-'){g[u * 2 + 1].push_back(v * 2 + 1);g[v * 2].push_back(u * 2);}else{g[u * 2].push_back(v * 2);g[v * 2 + 1].push_back(u * 2 + 1);}}if(judge()){cout << 1 << '\n';}else{cout << 0 << '\n';}}return 0;
}
http://www.gsyq.cn/news/123064.html

相关文章:

  • GitCode项目创建分支并提交代码
  • 修改 OBS-Studio 的字体
  • Linux上位机Windows上位机C++(QT)开发三菱上位机MC 1E 二进制通信 源码 C++快速实现三菱 MC 1E 二进制 支持三菱FX和A系列PLC A-1E 帧 国产化系统上位机
  • 1d 人工势场法路径规划Matlab代码实战
  • 图论
  • Python - dataclass
  • 云计算与边缘计算:未来数字化转型的关键驱动力 - 实践
  • 文献可视化分析期末复习与应用研究:基于知识图谱的核心概念与实践方法探讨
  • SIGSEGV段错误排查全攻略
  • AI元人文构想的理论构建过程与深层意义分析(二)
  • C++输入输出(cin和cout)的用法
  • 实用指南:LeetCode算法日记 - Day 107: 最长重复子数组
  • 【Agent】MemOS 源码笔记---(6)---MemScheduler -- 总体
  • 三菱PLC与组态王打造饮料自动装箱机控制系统
  • 【Nature Communications‘24‘06】预训练多模态大语言模型经过 SkinGPT-4 提升皮肤病学诊断能力
  • 品牌营销战略策划公司选哪家靠谱?奇正沐古 - 资讯焦点
  • 幻方的 “已知” 与 “未知”:三阶唯一解、多阶构造及未解之谜
  • 宪法守护童年:向霸凌和诈骗说“不” - 资讯焦点
  • Neo4j启动
  • 2025年郑州头部吊顶式空调机组设计多少钱,空气幕/表冷器/卧式暗装风机盘管/吊顶式空调机组/工业暖风机吊顶式空调机组采购找哪家 - 品牌推荐师
  • 2025年嘉兴排行前列的卧式暗装风机盘管采购多少钱,卡式风机盘管/吊顶式空调机组/空气幕/消防排烟防火阀卧式暗装风机盘管采购怎么选择 - 品牌推荐师
  • 无代码解决方案:解锁数字化转型的普惠路径
  • Oracle索引技术:理论与实操全解析
  • 深入理解Golang并发模型与CSP理论
  • 23、Samba使用与SSL配置全解析
  • 人工智能如何改变 Anthropic 的工作方式
  • 代码之恋(第十四篇:分叉的路径与意外的Push)
  • SpringSecurity授权原理与实战
  • 告别API碎片化!用AI Ping获取MiniMax-M2、GLM-4.6与Kimi-K2
  • 100G双光口网卡技术解析:Intel E810-CAM2方案的性能与应用突破