又是刘汝佳书上的题,貌似书上只有这两个了,确实2-SAT的题也没有太多,看邝斌的分类也才九个,今天加明天上午再A两个就结束~

做这个题的时候发现自己对于结点的表示还是不够理解,遂把四种情况都列出来

xi为假 或xj为假 2*i+1==>2*j 2*j+1==>2*i
xi为真或xj为真 2*i==>2*j+1 2*j==>2*i+1
xi为假或xj为真 2*i+1==>2*j+1 2*j==>2*i
xi为真或xj为假 2*i==>2*j 2*j+1==>2*i+1

上一个飞机调度的题发现两种情况的矛盾了,所以改变其中一个,变成了上表中后两种情况(发现矛盾肯定不能同时改变)

这个宇航员完成任务,限制的条件是相互讨厌的不能去同一个任务,就算不是同样年龄分组的,也不可以同时去C,那么相同年龄分组的就不可以同时去那个A还是B啊。我们假设去A、B是xi=true 去C是xi=true,那么不能同时去C就是和飞机调度一样solver.add_clause(a,1,b,1);,不能同时去A、B就是solver.add_clause(a,0,b,0); 而且感觉从连边的思想上讲,这个题比宇航员好想

/************
uva1391
2016.1.11
255 C++ 4.8.2
************/
#include <iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
#define maxn 100004
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]=true;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<<1);i++) G[i].clear();memset(mark,0,sizeof(mark));}void add_clause(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)) {mark[i]=false;mark[i+1]=true;return false;}}}return true;}
}solver;
int n,m,sum;
int age[maxn];
int is_young(int x)
{return age[x]*n<sum;
}
int main()
{//  freopen("cin.txt","r",stdin);while(~scanf("%d%d",&n,&m)){if(n==0&&m==0) break;sum=0;for(int i=0;i<n;i++) {scanf("%d",&age[i]);sum+=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.add_clause(a,1,b,1);if(is_young(a)==is_young(b))solver.add_clause(a,0,b,0);}if(!solver.solve())printf("No solution\n");else{for(int i=0;i<n;i++){if(solver.mark[i<<1]) puts("C");else if(is_young(i)) puts("B");else puts("A");}}}return 0;
}

uva1391Astronauts【2-SAT】相关推荐

  1. 【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★

    文章目录 一.P 类 二.NP 类 三.NPC 类 ( NP 完全 ) 四.P .NP .NPC 三者关系 一.P 类 P\rm PP 类 : ★ 所有 能够被 确定性 单个带子图灵机 , 在 多项式 ...

  2. 【计算理论】计算复杂性 ( 多项式时间规约 | NP 完全 ★ | 布尔可满足性问题 ) ★

    文章目录 一.多项式时间规约 分析 二.NP 完全 ★ ( 计算理论最重要的概念 ) 一.多项式时间规约 分析 多项式时间规约概念 : [计算理论]计算复杂性 ( 多项式等价引入 | 多项式时间规约 ...

  3. 实战SSM_O2O商铺_41【前端展示】店铺列表页面Dao+Service+Controller层的实现

    文章目录 概述 Dao层 接口 映射文件 单元测试 Service层 接口方法 单元测试 Controller层 增加 ShopListController 单元测试 Github地址 概述 在完成了 ...

  4. 【Linux部署】NTP时间服务器搭建及Linux+Windows客户端使用(一篇学会使用NTP服务)

    1.什么是NTP 百度百科:网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同 ...

  5. 【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型

    前文提要:[js实例]js中的5种基本数据类型和9种操作符 Array类型的9个数组方法 Array中有9个数组方法: 1.检测数组 2.转换方法 3.栈方法 4.队列方法 5.冲排序方法 6.操作方 ...

  6. 【Applied Algebra】可满足性模理论(Satisfiability Modulo Theories)入门

    [Applied Algebra]可满足性模理论(Satisfiability Modulo Theories)入门 摘要:SMT问题是在特定理论下判定一阶逻辑公式可满足性问题.它在很多领域,尤其是形 ...

  7. 【Typescript专题】之类型进阶

    [Typescript专题]之类型进阶 本篇文章是<Typescript 专题>第一篇,本篇文章主要聊一聊基本类型相关的扩展,毕竟随着文章的加深,我在阅读官方文档的时候经常会见到陌生的声明 ...

  8. 非此即彼的逻辑错误_Argument常见逻辑错误及描述 【出国英语】

    Argument常见逻辑错误及描述 [出国英语] 1.Loose generalizations 过于宽泛的概括 医学教育网 Drawing conclusions about groups of p ...

  9. 【信息收集】用python获取IP信息(六)

    一.ip-api import requests# ip-api.com查询 def ip_api(domain): # 可传IP或域名url = "http://ip-api.com/js ...

  10. C语言 【程序30】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

    //[程序30] //题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. /* Monday Mon 周一 Tuesday Tue 周二 Wednesday ...

最新文章

  1. 【LOJ】#3098. 「SNOI2019」纸牌
  2. 利用poi进行数据的excel导出
  3. h700通话糊 索尼wi_专业的事还是要交给专业的人,盘点索尼千元以下的好耳机...
  4. 每日总结app_每日复盘不会写,怎么办?送你一份每日复盘总结模板
  5. string equals int
  6. java 封装和继承
  7. 需求与商业模式创新-需求考试复习
  8. 堆空间释放后使用的异常
  9. snipaste截图软件安装各种问题解决办法
  10. Android 设备解锁
  11. 苹果系统备份文件服务器地址,iphone备份文件在哪 iphone备份文件位置介绍
  12. 免费在线二维DataMatrix码生成器
  13. 游戏优化利器 | Android GPU Inspector 开放 Beta 测试版
  14. table文字超出显示省略号
  15. 模型无关的全局特征依赖分析方法 I ——部分依赖曲线分析与条件依赖曲线分析
  16. Html-照片的逐步出现 、心形动画制作、3d立方体魔方、鼠标划过box阴影练习
  17. CRC16 - CCITT 计算方法(查表法)| C语言实现
  18. 为什么MacBook连接不上阿里云服务器
  19. 国际奥委会主席巴赫考察冬奥场馆 为中国效率点赞
  20. JXTA promotion, 2 install Demo Application

热门文章

  1. 计算机科技论文写作题目,科技论文写作应注意的几个问题 | 科研动力
  2. 搭建多节点以太坊私链 10分钟搞定(超简洁)
  3. Vue中swiper的指向性跳转~轮播图与标题的互动
  4. 2023 年十大战略技术趋势中哪一项最需要 HTAP ?
  5. CSS文字排版终极指南
  6. H26x 编解码 - GOP 模式
  7. python列联表分析
  8. 人脸识别技术开发解决方案,人脸识别智慧工地应用开发
  9. —— GPS测量原理及应用复习-7 ——
  10. python dict.get 用法