[2-SAT 构造] Codeforces Gym 101173 CERC 16 L. Lost Logic
来源:互联网 发布:淘宝代运营公司 编辑:程序博客网 时间:2024/06/06 01:43
题目大意 给
首先我们可以把三个值一样的变量去掉 只要一个限制就够了
然后剩下6类 类内部的变量一定两两相同 那么加一下限制
完全互补的两类可以合并 只要分别取出代表 限制两个一定相反就好了
这样我们最多剩下三类
- 一类 显然不需要限制
- 两类 去两个代表 这两个变量的值组成的二元组只有三种值是有效的 实际上总共有四种值 只要加一个限制就可以去掉第四种
- 三类 无解
#include<cstdio>#include<cstdlib>#include<algorithm>#include<string>#include<sstream>#include<vector>#define pb push_backusing namespace std;const int N=55;int n,a[N];#define read(x) scanf("%d",&(x))inline string itos(int i){ stringstream s; s<<i; return s.str();} inline string identifier(bool nneg,int x){ return string(!nneg?"!":"")+"x"+itos(x);}string ans;int tot;inline void imp(bool negx,int x,bool negy, int y){ tot++,ans+=identifier(negx,x)+" -> "+identifier(negy,y)+"\n";}vector<int> v[8];vector<int> _v;int w[8];int main(){ int x; freopen("t.in","r",stdin); freopen("t.out","w",stdout); read(n); for (int j=0;j<3;j++) for (int i=1;i<=n;i++) read(x),a[i]=(a[i]<<1)|x; for (int i=1;i<=n;i++) if (a[i]==0) imp(1,i,0,i); else if (a[i]==7) imp(0,i,1,i); else if (__builtin_popcount(a[i])==1) v[a[i]].pb(i); else v[~a[i]&7].pb(i); for (int i=0;i<8;i++) if (__builtin_popcount(i)==1){ if (v[i].size()) _v.pb(i); for (int j=1;j<(int)v[i].size();j++) if (a[v[i][0]]^a[v[i][j]]) imp(0,v[i][0],1,v[i][j]),imp(1,v[i][0],0,v[i][j]); else imp(0,v[i][0],0,v[i][j]),imp(1,v[i][0],1,v[i][j]); } if (_v.size()==3) return printf("-1\n"),0; for (int i=0;i<3;i++) w[1<<i]=i; int v0=_v[0],v1=_v[1]; imp((a[v[v0][0]]>>w[v0])&1,v[v0][0],(a[v[v1][0]]>>w[v0])&1,v[v1][0]); printf("%d\n%s\n",(int)tot,ans.c_str()); return 0;}
0 0
- [2-SAT 构造] Codeforces Gym 101173 CERC 16 L. Lost Logic
- GYM 101173 L.Lost Logic(构造)
- Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks
- GYM CERC 16 K Key Knocking 构造
- [分治 杂题] Codeforces Gym 101173 CERC 16 G & BZOJ 4792 Geohash Grid
- gym 100543 CERC 2014 L Outer space invaders
- [Trie树建图 2-SAT] Codeforces Gym 101190 NEERC 16 B. Binary Code
- [杂题] Codeforces Gym 101190 NEERC 16 L. List of Primes
- Gym CERC 16 F Free Figuriness 思维+模拟
- codeforces GYM 101431D(构造)
- Codeforces gym 101149 L 最短路
- Codeforces Gym 101173 K. Key Knocking (构造)
- Gym 101201F 2-SAT
- [构造] Codeforces Gym 101190 NEERC 16 C. Cactus Construction
- [ 2-SAT 线段树 ] Codeforces Gym 100159 Facebook Hacker Cup 2012 I.Unfriending
- Codeforces Gym 100342H Hard Test 构造
- Codeforces Gym 101142 J. Java2016 (构造)
- gym 100430【2-SAT+输出方案】
- Android高仿京东淘宝自动无限循环轮播控件的实现思路和过程
- 编程第十六天
- 8-hive 存储格式
- 今日任务解决心得
- 汇编语言实验1-实验平台、理解寄存器和内存
- [2-SAT 构造] Codeforces Gym 101173 CERC 16 L. Lost Logic
- HttpSession对象的详解与实战操作
- 使用Jenkins自动部署nodejs应用
- JS性能优化笔记
- C# Tcp 全双工通信 实现
- 建造者模式
- java_答答租车系统(面向对象综合练习)_sdut
- 不堪的自己
- 做S3C2410的驱动比较重要的几个文件