题目链接:https://vjudge.net/problem/UVALive-3713

题意:有A、B、C 3个任务分配给n个宇航员,其中每个宇航员恰好分配一个任务。假设n个宇航员的平均年龄

为x,只有年龄大于x的才能领取A任务;只有年龄严格小于x的才能领取B任务,而任务C没有限制。有m对宇

航员相互讨厌,因此不能分配同一任务。求出是否能找出符合的任务方案。

解法:

用xi表示第i个宇航员的分配方案。年龄大于等于x的可以选择A(xi = true)和C(xi+1 = false),年龄小雨x的可

以选择B(xi = true)和C(xi+1 = false)。考虑一对互相讨厌的宇航员的话,当不属于同一类时,可以为xi V xj,

即两个之中要有一个为真;当属于同一类时,要用两个语句表示xi V xj、~xi V ~xj,即前者表示一个为true,

后者表示一个为false。

///UVALIVE 3211#include <bits/stdc++.h>
using namespace std;
const int maxn = 4000010;
struct TwoSAT{int n;vector<int>G[maxn*2];bool mark[maxn*2];int S[maxn*2], c;bool dfs(int x){if(mark[x^1]) return false;if(mark[x]) return true;mark[x]=1;S[c++]=x;for(int i=0; i<G[x].size(); i++){if(!dfs(G[x][i])) return false;}return true;}void init(int n){this->n = n;for(int i=0; i<n*2; i++) G[i].clear();memset(mark, 0, sizeof(mark));}void addedge(int x, int xval, int y, int yval){x = x*2+xval;y = y*2+yval;G[x^1].push_back(y);G[y^1].push_back(x);}bool solve(){for(int i=0; i<n*2; i+=2){if(!mark[i]&&!mark[i+1]){c=0;if(!dfs(i)){while(c>0) mark[S[--c]]=false;if(!dfs(i+1)) return false;}}}return true;}
}twosat;TwoSAT solver;
int n, m, age[maxn], sumage;
int check(int x){return age[x]*n<sumage;
}int main(){while(scanf("%d%d",&n,&m)!=EOF){if(n==0&&m==0) break;sumage=0;for(int i=0; i<n; i++){scanf("%d", &age[i]);sumage+=age[i];}solver.init(n);for(int i=0; i<m; i++){int a, b;scanf("%d%d", &a,&b);a--,b--;if(a==b) continue;solver.addedge(a,1,b,1);if(check(a)==check(b)){solver.addedge(a,0,b,0);}}if(!solver.solve()){printf("No solution.\n");}else{for(int i=0; i<n; i++){if(solver.mark[i*2]) printf("C\n");else if(check(i)) printf("B\n");else printf("A\n");}}}return 0;
}

UVALive3713-Astronauts 2-SAT相关推荐

  1. UVA1391 Astronauts(ACM - ICPC 2006 Europe - Central)(2 - SAT问题、输出方案)

    虽然题目里有A.B.C三种状态,但是每个人只有两个状态可以选择,显然是一道2-SAT: 建图的话,假设选择A(或者B)为i+n,选择C为i:首先当两个人讨厌时,一个人选C,则另一个一定选另一个,连两条 ...

  2. 模板 - 2 - SAT问题

    整理的算法模板合集: ACM模板 注意一个坑,2SAT问题中如果要求你输出方案,如果你的代码输出的跟样例不一样,不要着急,因为2SAT 问题本来就是有多解,结果我样例不过,交上去就A了 方案输出时,c ...

  3. 计算机学院 图论方向,成电计算机学院本科生在计算机科学理论方向重要国际会议SAT上发表论文...

    近日,计算机科学与工程学院(网络空间安全学院)2017级本科生和肖鸣宇教授撰写的论文"A Fast Algorithm for SAT in Terms of Formula Length& ...

  4. MIT录取不再看SAT科目成绩:曾是华裔传统优势,数学等学科测验更是中国留学生强项...

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 美国麻省理工学院今天在招生网站上宣布,决定不再考虑将SAT科目考试作为录取过程的一部分. 这一决定从2020~2021学年开始生效. SA ...

  5. 欧文分校计算机新sat多少分录取,加州大学欧文分校SAT成绩要求是多少?

    加州大学欧文分校对于SAT成绩的要求是多少?现在申请美国本科,很多都是需要同学们提供sat成绩的额,下面托普仕留学老师为大家介绍SAT多少分才能申请加州大学欧文分校?同学们在申请之前要多注意院校信息. ...

  6. 欧文分校计算机新sat多少分录取,加州大学欧文分校SAT成绩要求

    下面为大家介绍的是加州大学欧文分校University of California Irvine的SAT成绩要求.加州大学欧文分校University of California Irvine是美国加 ...

  7. 如何使用SAP事务码SAT进行UI应用的性能分析

    Sent: Wednesday, July 11, 2012 7:49 PM Subject: [Knowledge share]How to trace UI transaction using S ...

  8. 使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈

    今天是农历鼠年大年初四,本文是鼠年第4篇文章,也是汪子熙公众号第203篇原创文章. 大家这几天在家里宅得如何了?貌似不少朋友都闷坏了. 我们继续学习. Jerry之前的文章 SAP错误消息调试之七种武 ...

  9. 使用ABAP SAT工具分析SAP OData service实现明细

    Created by Wang, Jerry, last modified on Mar 26, 2015 使用SAT运行OData service测试report: 直接运行report: 确保OD ...

  10. 使用SAT研究IBASE hierarchy读取性能

    Created by Jerry Wang on Mar 06, 2014 1. transaction code SAT,创建一个新的variant例如ZJERRY, 确保Aggregation为N ...

最新文章

  1. JPA保存数据自动加入创建人,修改人
  2. rest-framework:认证组件
  3. 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
  4. NLP:NLP领域没有最强,只有更强的模型——GPT-3的简介、安装、使用方法之详细攻略
  5. 【转载更新】Linux工具之SED 2.应用实例
  6. 2016.1.20 总结(for语句,选择语句和循环语句混合使用)
  7. 处理数据类型转换,数制转换、编码转换相关的类
  8. mysql 系统序列号_mysql 序列号
  9. 国内免费汉语语料库-NLP
  10. 读书笔记1:《C++沉思录》
  11. 河南省第三届金盾信安杯网络安全大赛部分wp
  12. 数字电路加法器 基本原理(一)
  13. python爬取b站视频封面_Python实战爬虫——B站封面爬取
  14. win8 安装双系统 ubuntu 过程
  15. Zabbix 4.2 支持 Prometheus 数据收集
  16. 国培南通之行的感悟——(其三)
  17. Kinect开发(如何连接电脑)
  18. 斐讯dns服务器未响应,斐讯k2无线网络初始密码是?
  19. 清除Chrome浏览器下默认浅黄色背景(保存密码时出现)
  20. 海康摄像头opencv实时回调

热门文章

  1. 世界各国电压频率和电源插头规格对照表
  2. 13.0、veu-路由嵌套
  3. 用html代码在word中插入分页符,Word文档中插入分页符并对分页方式进行设置的方法...
  4. 城镇化进程中的粮食生产问题
  5. html背景颜色渐变代码
  6. Cisco 冗余备份(IRDP)
  7. 常用数组方法汇总(ES3、ES5、ES6、ES7、ES10)
  8. Comma Separated Values Format
  9. 和平精英android怎么写符号,特殊符号输入方法 和平精英iOS和安卓名字特殊符号...
  10. DID 去中心化数字身份