UVALive-3713 Astronauts (2-SAT)】的更多相关文章

Problem   UVALive - 3713 - Astronauts Time Limit: 3000 mSec Problem Description Input The input contains several blocks of test cases. Each case begins with a line containing two integers 1 ≤ n ≤ 100000 and 1 ≤ m ≤ 100000. The number n is the number…
给定n个宇航员的年龄,平均年龄为 ave,根据下列要求分配任务: B任务只能分配给年龄<ave的宇航员: A任务只能分配给年龄>=ave的宇航员: C任务可以任意分配. 给定m组互相憎恨的宇航员,要求他们不能分配到同一个任务.能否存在这样的一组任务分配. 每个宇航员都只能分配两种任务中的一种:A或C(年龄大于等于ave),B或C(年龄小于ave),那么为每个宇航员设立一个变量xi,xi为0表示分配C任务,为1则分配A或B(根据年龄). 对于互相仇恨的宇航员,如果属于同一类型,那么应满足xi∨x…
题意: 有A,B,C三种任务,每个人必获得1个任务,大于等于平均年龄的可以选择A和C,小于平均年龄的可以选择B和C.这些人有一些是互相讨厌的,必须不能执行同任务,问能否安排他们工作?若行,输出任意一组解. 思路: 依然是 2-SAT,只不过换了个样子,建图时不同而已.这里每个人依然有2人选择,也有冲突的出现,问题在如何找出冲突. 首先,无论是哪两人,只要互相讨厌,去抢C,必定冲突.其次,如果是同龄人(同大于等于,或同小于),那么抢他们那个年龄段的任务也会冲突.所以共计2种,每种2条边,即我选的时…
layout: post title: 训练指南 UVALive - 3713 (2-SAT) author: "luowentaoaa" catalog: true mathjax: true tags: - 2-SAT - 图论 - 训练指南 Astronauts UVALive - 3713 题意 有A,B,C三个任务要分配个N个宇航员,每个宇航员恰好要分配一个任务,设平均年龄为X,只有年龄大于或等于X的宇航员才能分配任务A.只有年龄严格小于X的宇航员才能分配任务B.而任务C没有…
题意: 有n个宇航员,按照年龄划分,年龄低于平均年龄的是年轻宇航员,而年龄大于等于平均年龄的是老练的宇航员. 现在要分配他们去A,B,C三个空间站,其中A站只有老练的宇航员才能去,而B站是只有年轻的才能去,C站都可以去. 有m对宇航员相互讨厌,不能让他们在同一个空间站工作. 输出每个宇航员应分配到哪个空间站,如果没有则输出No solution. 分析: 对于每个宇航员,有两种选择,(A,B)或C.第一个选择中取A还是取B取决于年龄. 构图,2-SAT找满足题意的方案再输出即可. 代码如下: #…
大白书例题 #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <set> #include <vector> #include <stack> #include <queue> #include <algorithm> #include &…
The Bandulu Space Agency (BSA) has plans for the following three space missions: • Mission A: Landing on Ganymede, the largest moon of Jupiter. • Mission B: Landing on Callisto, the second largest moon of Jupiter. • Mission C: Landing on Titan, the l…
蓝书326 //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #include <bits/stdc++.h> using namespace std; #pragma comment(linker,"/STACK:102400000,102400000") #define LL long long #define ALL(a) a.begin(), a.end() #define pb push_back #define mk make_…
给个题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1714 显然每个人只有两种选择:C或者A/B.而且后一种只和这个人的年龄有关. 这就是一个很显然的2-SAT模型了,显然有矛盾的不能都选C,如果两个人的年龄段还一样,那就更悲剧了,也不能同时选A/B. #include<iostream> #incl…
用布尔变量表示状态,把限制条件转化为XνY的形式以后跑2SAT,根据变量取值输出方案. #include<bits/stdc++.h> using namespace std; ; #define PB push_back ]; vector<]; ],top; void initGraph(int n) { N = n*; ; i < N; i++) G[i].clear(); memset(vis,,|)); } bool dfs(int x) { ]) return fals…
https://www.cnblogs.com/31415926535x/p/10644419.html 从寒假就开始准备学2sat,,然后当时了解了一下模板就溜了,,,一直到上个星期,,三月底才好好重新的看一下,,,做了一些题,,感觉大致的了解了2sat的基本套路,,一般的题都是在建图做文章,,这题出现的频率貌似也不高,,,之后就放一放吧,,,啥时候忘记了就翻出来看一看,,嘿嘿 概述 2-sat是k-sat问题中k==2时的一种情况,,(废话qaq,, 当k大于等于3时是npc问题,,所以一般…
2-SAT问题,其实是一个逻辑互斥问题.做了两道裸题之后仔细想来,和小时候做过的“有两个女生,如果A是女生,那么B一定不是女生.A和C性别相同,求A.B.C三人的性别.”几乎是一样的. 对于这道题我们来分析一下.“如果A是女生,那么B一定不是女生”——A和B性别相反,假设“A为女生”为true,那么“B为女生”必定为false,于是一定有“B为男生”为true[注意是一定]. 对于这句话同理可得,假设“B为女生”为true,那么“A为男生”必定为true.“A和C性别相同”——假设“A为女生”为…
2-SAT问题是这样的:有$n$个布尔变量$x_i$,另有$m$个需要满足的条件,每个条件的形式都是“$x_i$为真/假或者$x_j$为真/假”.比如:"$x_1$为真或者$x_3$为假“.注意这里的”或“是指两个条件至少有一个是正确的,比如$x_1$和$x_3$一共有$3$中组合满足"$x_1$为真或者$x_3$为假“.2-SAT问题的目标是给每个变量赋值,使得所有条件得到满足.求解2-SAT问题一般比较常见方法是构造一张有向图$G$,其中每个变量$x_i$拆成两个结点$2i$和$2…
看了大白书,学习了一下two-sat,很有意思的算法.题目就是大白书上的两题. 仅仅放一下代码作为以后的模板参考. #include <stdio.h> #include <algorithm> #include <string.h> #include <vector> using namespace std; + ; struct TwoSAT { int n; vector<]; ]; ], c; bool dfs(int x) { ]) ; ;…
layout: post title: 训练指南 UVALive - 3211 (2-SAT + 二分) author: "luowentaoaa" catalog: true mathjax: true tags: - 2-SAT - 图论 - 训练指南 Now or later UVALive - 3211 题意 n架飞机,每架可选择两个着落时间.安排一个着陆时间表,使得着陆间隔的最小值最大 题解 二分查找最大值P,每次都用2-SAT判断是否可行. #include<bits…
UVALive - 4108 SKYLINE Time Limit: 3000MS     64bit IO Format: %lld & %llu Submit Status uDebug Description   The skyline of Singapore as viewed from the Marina Promenade (shown on the left) is one of the iconic scenes of Singapore. Country X would a…
UVALive - 3942 Remember the Word A potentiometer, or potmeter for short, is an electronic device with a variable electric resistance. It has two terminals and some kind of control mechanism (often a dial, a wheel or a slide) with which the resistance…
UVALive - 3942 Remember the Word Neal is very curious about combinatorial problems, and now here comes a problem about words. Know- ing that Ray has a photographic memory and this may not trouble him, Neal gives it to Jiejie. Since Jiejie can’t remem…
题目一眼看去以为是4-sat... 题意:给n(n<=3000)个黑方块的坐标,保证黑方块没有公共边.对于每个黑方块选一个角作为结点,使得所选结点满足输入的一个无向图.其中距离为曼哈顿距离.输出是否有解.possible或impossible. 对于每个黑方块,4个角落必须选且仅选一个.一开始2-sat建模是对于一个pnt[i],有4对点pnt[i][0], pnt[i][0]', pnt[i][1], pnt[i][1]', pnt[i][2], pnt[i][2]', pnt[i][3],…
检测凸多边形碰撞的一种简单的方法是SAT(Separating Axis Theorem),即分离轴定理. 原理:将多边形投影到一条向量上,看这两个多边形的投影是否重叠.如果不重叠,则认为这两个多边形是分离的,否则找下一条向量来继续投影.我们不需要比较很多条向量,因为已经在数学上证明,多边形每条边的垂直向量就是我们需要的向量. 1.AABB 让我们首先以AABB开始(AABB是一种两边分别平行于X-Y轴的矩形) 判断两个AABB是否碰撞,我们只需要投影两次,分别是投影在平行于X轴和Y轴的向量上…
题目传送门 /* 题意:本来有n个雕塑,等间距的分布在圆周上,现在多了m个雕塑,问一共要移动多少距离: 思维题:认为一个雕塑不动,视为坐标0,其他点向最近的点移动,四舍五入判断,比例最后乘会10000即为距离: 详细解释:http://www.cnblogs.com/zywscq/p/4268556.html */ #include <cstdio> #include <iostream> #include <algorithm> #include <cmath&…
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4156 题目拷贝难度大我就不复制了. 题目大意:维护一个字符串,要求支持插入.删除操作,还有输出第 i 次操作后的某个子串.强制在线. 思路1:使用可持久化treap可破,详细可见CLJ的<可持久化数据结构的研究>. 思路2:rope大法好,详见:http…
Permutation Graphs Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVALive 6508 #include<stdio.h> #include<string.h> ],a[],b[],c[],b1[]; long long num; void merg_sort(int a[],int l,int r) { int…
Boxes Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVALive 6500 #include<stdio.h> #include<string.h> int main() { int T,m,n; int i,j,s; ][]; scanf("%d",&T); while(T--) { s=; sc…
题目链接:UVALive 6948  Jokewithpermutation 题意:给一串数字序列,没有空格,拆成从1到N的连续数列. dfs. 可以计算出N的值,也可以直接检验当前数组是否合法. #include <stdio.h> #include <iostream> #include <string.h> #define maxn 100 using namespace std; char str[maxn]; int num[maxn]; bool vis[m…
The Bandulu Space Agency (BSA) has plans for the following three space missions: Mission A: Landing on Ganymede, the largest moon of Jupiter. Mission B: Landing on Callisto, the second largest moon of Jupiter. Mission C: Landing on Titan, the largest…
UVAlive 3135 Argus Argus Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description A data stream is a real-time, continuous, ordered sequence of items. Some examples include sensor data, Internet traffic, fin…
// 状压DP uvalive 6560 // 题意:相邻格子之间可以合并,合并后的格子的值是之前两个格子的乘积,没有合并的为0,求最大价值 // 思路: // dp[i][j]:第i行j状态下的值 // j:0表示不合并,1表示向下合并 // 一开始输入要修改一下,然后滚动数组优化 #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include &…
// 二分+最短路 uvalive 3270 Simplified GSM Network(推荐) // 题意:已知B(1≤B≤50)个信号站和C(1≤C≤50)座城市的坐标,坐标的绝对值不大于1000,每个城市使用最近的信号站.给定R(1≤R≤250)条连接城市线路的描述和Q(1≤Q≤10)个查询,求相应两城市间通信时最少需要转换信号站的次数. // 思路:建议先阅读 NOI论文 <<计算几何中的二分思想>> // 直接献上题解吧: // 二分! // l的两端点所属信号站相同:…
UVAlive 3026 Period 题目: Period   Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive…