POJ 2723 Get Luffy Out(2

Jun 07, 2016 pm 03:48 PM
get out

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>
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

マザーボード上のデジタルオーディオ出力インターフェイス - SPDIF OUT マザーボード上のデジタルオーディオ出力インターフェイス - SPDIF OUT Jan 14, 2024 pm 04:42 PM

マザーボード上の SPDIFOUT 接続線の順序 最近、ワイヤの配線順序に関する問題に遭遇しました。ネットで調べたところ、1、2、4がアウト、+5V、グラウンドに相当するという情報もあれば、1、2、4がアウト、グラウンド、+5Vに相当するという情報もありました。最善の方法は、マザーボードのマニュアルを確認することです。マニュアルが見つからない場合は、マルチメーターを使用して測定できます。最初にアースを見つけてから、残りの配線の順序を決定します。マザーボードの VDG 配線の接続方法 マザーボードの VDG 配線を接続するときは、VGA ケーブルの一端をモニターの VGA インターフェイスに差し込み、もう一端をコンピューターのグラフィックス カードの VGA インターフェイスに差し込む必要があります。マザーボードの VGA ポートに差し込まないよう注意してください。接続すると、次のことが可能になります

PowerShell を使用してタスクを自動化する方法 PowerShell を使用してタスクを自動化する方法 Feb 20, 2024 pm 01:51 PM

IT 管理者またはテクノロジーの専門家であれば、自動化の重要性を認識している必要があります。特に Windows ユーザーにとって、Microsoft PowerShell は最高の自動化ツールの 1 つです。 Microsoft は、サードパーティのアプリケーションをインストールする必要なく、自動化のニーズに対応するさまざまなツールを提供しています。このガイドでは、PowerShell を活用してタスクを自動化する方法について詳しく説明します。 PowerShell スクリプトとは何ですか? PowerShell の使用経験がある場合は、コマンドを使用してオペレーティング システムを構成したことがあるかもしれません。スクリプトは、.ps1 ファイル内のこれらのコマンドの集合です。 .ps1 ファイルには、基本的な Get-Help など、PowerShell によって実行されるスクリプトが含まれています。

アウトインターフェイスとインインターフェイスは何を意味しますか? アウトインターフェイスとインインターフェイスは何を意味しますか? Sep 28, 2021 pm 04:39 PM

out インターフェイスは出力インターフェイスを指し、in インターフェイスは入力インターフェイスを指します。出力インターフェイスは通常、スピーカー、ヘッドフォンなどの負荷の接続に使用されるオーディオ ソース ライン出力インターフェイスを表し、一方、入力インターフェイスは通常、CD プレーヤー、モバイル機器の接続に使用されるオーディオ ソース ライン入力インターフェイスを表します。電話、MP3 プレーヤー、コンピュータなど。

Java はどのようにして http リクエストを開始し、ポストを呼び出してインターフェースを取得するのでしょうか? Java はどのようにして http リクエストを開始し、ポストを呼び出してインターフェースを取得するのでしょうか? May 16, 2023 pm 07:53 PM

1. Java は post インターフェイスを呼び出します 1. Java に付属の URLConnection または HttpURLConnection を使用します 他の jar パッケージをダウンロードする必要はありません URLConnection を呼び出します インターフェイスの応答コードがサーバーによって変更されている場合、応答メッセージは受信できません。応答コードが正しい場合にのみ受信されます。 publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt を返します。

Curl Getコマンドの例 Curl Getコマンドの例 Mar 20, 2024 pm 06:56 PM

Linux では、URL または Curl クライアントは、HTTPS、HTTP、FTP などのさまざまなプロトコルを使用してネットワーク上でデータを転送できるようにする一般的なコマンド ライン ユーティリティです。 get、post、request メソッドを使用してデータを送受信できるようになります。その中でも頻繁に使用する必要があるのが「get」メソッドです。したがって、生産性を向上させるために使用できるさまざまな方法やさまざまなオプションを学ぶことが重要になります。 「curl 操作の実行は、いくつかの簡単なコマンドを入力するだけで簡単です。簡単そうに見えますが、多くのユーザーはその可能性を十分に理解していません。そのため、この短いガイドでは、Linux システムでのcurl 操作の実行方法に関する情報を提供します。 「curlget」コマンド。」

SpringBoot はエンティティをどのように使用して、Get リクエストによって渡された複数のパラメーターを受信しますか? SpringBoot はエンティティをどのように使用して、Get リクエストによって渡された複数のパラメーターを受信しますか? May 19, 2023 pm 06:01 PM

1. コントローラ層がアノテーションなしでパラメータを受け取る最初の方法は最も単純ですが、なぜこれが以前に使用されなかったのか非常に疑問です。 。しかし、今回は本当にうまくいきました。最も簡単な方法は、アノテーションを追加せずにコントローラー インターフェイスを追加することです。 ! ! SpringBoot はこれを自動的に処理します。コードは次のとおりです: /***@authorzhangzhixiang*@sincev1.0.0*/@RestController@RequestMapping(path="/ui/institution")publicclassInstitutionManagemen

Ubuntuのapt-getアップデートソースを変更するにはどうすればよいですか? Ubuntuのapt-getアップデートソースを変更するにはどうすればよいですか? Jan 05, 2024 pm 03:40 PM

Ubuntu の apt-get ソースを手動で変更する 1. ssh ツールを使用して Ubuntu に接続します (私は xshell を使用します) 2. コマンド ラインに cd/etc/apt/3 と入力し、このディレクトリ内のsource.list ファイルをバックアップします (必ずバックアップしてください)。 4. source.list ファイルの内容をクリアします (注: クリア後は復元できないため、前の手順を実行してファイルをバックアップする必要があります)このとき、sudo を使用して権限が不足していることを確認するメッセージが表示されます。直接 root ユーザーに切り替えてこのコマンドを実行します。 5. vim を使用してsource.list を開き、i キーを押して編集モードに入り、ファイルを貼り付けます。変更する送信元アドレスを選択し、 を押します。

jQuery の get メソッドと post メソッドの類似点と相違点の詳細な分析 jQuery の get メソッドと post メソッドの類似点と相違点の詳細な分析 Feb 24, 2024 pm 12:15 PM

Get と post は、jQuery でよく使用される 2 つの Ajax リクエスト メソッドであり、サーバーにリクエストを送信してデータを取得するために使用されます。これらには使用方法や機能の違いがいくつかありますが、次に、それらの類似点と相違点を詳細に説明し、具体的なコード例を添付します。 get と post の類似点: どちらも Ajax リクエストを送信するためのメソッドであり、URL と data パラメーターを指定することでサーバーからデータを取得できます。どちらもコールバック関数をパラメーターとして受け入れることができ、サーバーから返されたデータを処理したり、失敗したリクエストを処理したりするために使用されます。

See all articles