POJ 2723 Get Luffy Out(2-SAT) http://poj.org/problem?id=2723 题意: 你手里有2n把不同的钥匙,这2n把钥匙被分为n对,每对由两个不同的钥匙组成.现在按顺序出现了M个门,每个门上有两个锁,你只需打开其中一个锁就可以打开这个门.现在你需要用你手里的钥匙去按
POJ 2723 Get Luffy Out(2-SAT)
http://poj.org/problem?id=2723
题意:
你手里有2n把不同的钥匙,这2n把钥匙被分为n对,每对由两个不同的钥匙组成.现在按顺序出现了M个门,每个门上有两个锁,你只需打开其中一个锁就可以打开这个门.现在你需要用你手里的钥匙去按顺序打开门,但是对于属于同一组的两把钥匙,如果你用了钥匙A,那么以后永远不能再用钥匙B了.问你按顺序最多能打开多少个门?
分析:
首先有2n把钥匙,所以每个钥匙对应两个节点:用or 不用.
对于同一组的两把钥匙a与b来说: (a=0表示钥匙a选,a=1表示钥匙a不选)
a 用 -> b不用即 a=0 -> b=1
b 用-> a 不用即 b=0 -> a=1
对于一个具有锁(钥匙)a与锁(钥匙)b的门来说,两个锁我们至少要选1个,所以有边: a=1->b=0 和 b=1->a=0.
这样我们通过枚举我们能顺序打开的门数目num,我们令num=5时,添加前5条锁生成的边,看看该2-SAT问题是否有解即可.如果num=5有解,就尝试num=6. 如果num=5误解,那么之后更大的num肯定无解.(注意:这个过程要初始化mark标记数组)
AC代码: (未二分答案,如果用二分,应该能更快)
#include<cstdio> #include<cstring> #include<vector> #include<algorithm> using namespace std; const int maxn=2000+100; struct TwoSAT { int n; vector<int> G[maxn*2]; int S[maxn*2],c; bool mark[maxn*2]; 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 if return false true void init n this->n=n; for(int i=0;i0) mark[S[--c]]=false; if(!dfs(i+1)) return false; } } return true; } }TS; int main() { int n,m; while(scanf("%d%d",&n,&m)==2&&n) { TS.init(n*2); for(int i=0;i<n int a scanf ts.add_clause i for memset if break num="i;" printf return><br> <br> </n></g></int></algorithm></vector></cstring></cstdio>

如果您是IT管理员或技术专家,您一定意识到自动化的重要性。尤其对于Windows用户来说,MicrosoftPowerShell是最佳的自动化工具之一。微软为满足您的自动化需求提供了各种工具,无需安装第三方应用程序。本指南将详细介绍如何利用PowerShell自动化执行任务。什么是PowerShell脚本?如果您有使用PowerShell的经验,您可能已经使用过命令来配置您的操作系统。脚本是.ps1文件中这些命令的集合。.ps1文件包含由PowerShell执行的脚本,例如基本的Get-Help

主板上SPDIFOUT连接线序最近我遇到了一个问题,就是关于电线的接线顺序。我上网查了一下,有些资料说1、2、4对应的是out、+5V、接地;而另一些资料则说1、2、4对应的是out、接地、+5V。最好的办法是查看你的主板说明书,如果找不到说明书,你可以使用万用表进行测量。首先找到接地,然后就可以确定其他的接线顺序了。主板vdg怎么接线连接主板的VDG接线时,您需要将VGA连接线的一端插入显示器的VGA接口,另一端插入电脑的显卡VGA接口。请注意,不要将其插入主板的VGA接口。完成连接后,您可以

out接口指的是输出接口,in接口指的是输入接口。out接口一般代表着音源线路输出接口,用来接负载,例音箱、耳机等;而in接口一般代表着音源线路输入接口,用来接CD机、手机、MP3、电脑等。

一、java调用post接口1、使用URLConnection或者HttpURLConnectionjava自带的,无需下载其他jar包URLConnection方式调用,如果接口响应码被服务端修改则无法接收到返回报文,只能当响应码正确时才能接收到返回publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt

在Linux中,URL或Curl客户端是一个流行的命令行实用程序,允许您使用HTTPS、HTTP、FTP等多种协议在网络上传输数据。它允许您使用其get、post和request方法发送和接收数据。其中,你需要经常使用“get”方法。因此,学习各种方法和各种选项,你可以用来提高你的生产力变得至关重要。“执行卷曲操作非常简单,只需输入几个简单的命令即可完成。尽管这看似简单,但许多用户并未充分认识到其潜力。因此,这篇简短指南提供了一些关于在Linux系统中使用“curlget”命令的实例。”Curl

手动修改Ubuntu的apt-get源1、用ssh工具连接到Ubuntu(我用的xshell)2、命令行敲入cd/etc/apt/3、备份此目录下的source.list文件(要有sudo权限),此时就有了一个source.list.bak文件4、清空source.list文件内容(注:清空后不可恢复,所以需要执行上一步提前备份一下这个文件),此时用sudo提示权限不够,直接切换到root用户下执行这条命令5、用vim打开source.list,按i键进入编辑模式把要修改的源地址粘贴进来,然后按

jQuery中get和post是两种常用的ajax请求方法,用于向服务器发送请求并获取数据。它们在使用方式和一些特性上有一些不同,接下来我们将详细解释它们的异同点,并附上具体的代码示例。get和post的相同点:都是用于发送ajax请求的方法,可以通过指定URL和数据参数来从服务器获取数据。都可以接受回调函数作为参数,用于处理服务器返回的数据或处理请求失败的

win10系统闪退显示outofmemory,近期很多的用户在使用电脑的时候,出现了这个提示,导致需要经常的重启进行修复,那么这种情况我们应该如何处理,针对这个问题,本期的win10教程就来和广大用户们分享完整操作步骤,希望能够帮助更多的小伙伴解决问题。win10系统闪退显示outofmemory怎么办1、右击桌面上的此电脑,选择选项列表中的“属性”。2、进入到新的窗口界面后,点击左上角的“高级系统设置”选项。3、在打开的窗口中,切换到上方中的“


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Linux new version
SublimeText3 Linux latest version

Notepad++7.3.1
Easy-to-use and free code editor
