[パッション] Jizhong --Day15:食べるバーベキュー今夜

どのように試験の別の偽明日を入れて、それは問題ではありません。

40/20/20


 

説明

過去の美しいキャンパスでは、(木)美しい曲面木の枝マネージャーが存在します。彼女は、人々は良い愛彼女を見てみたかった弱いガスの道を内向的と恥ずかしがり屋。唯一の彼女の側、およびそこに多くの女の子は、ベル、クルトとしての彼女のBHを、希望している、というように。しかし、峡雲、木、心理的な理由は、背の高いハンサムな男の子だけということ-女の子を作る恭介は、涙で、うめき声、すべての一日を唸らしなければなりませんでした。しかし、京介は非常に強力かつ完璧です、彼を倒すする方法はありません、彼らはまた、カウンタを保留し、ことによって取得するために痛みを噛まないように持っていました。

最後に、彼らは機会を得ます。弾道でKute李ウィット、暗号化、人々は輸出を入力することができ、チャンバは内側から開くことができないように設計宇宙論の知識。クルトパスワード設計プロセスは素晴らしい、n次元ベクトルを導出整数座標を有する2つによって表されます。驚くべきことに、これら2つのベクトルのいずれかのために、任意のイベントでの座標(例えば、(A2、A1、A3)、(A3、A1、A2)に)破壊する 、 製品の数が破壊されていませんこれは、2つのベクトルの元の製品の数よりも少なくなります。クルトは、パスワードとして、元の2つのベクトルの数を置きます。今、彼らは唯一の京介はそれを紹介置きます。しかし、いつかため、その不注意の、誤って内部自分自身を遮断する試験室の時に、だけでなく、紙のパスワードを奪いました。草案は、2つのベクトルはクルトを中断書かれた後にベルが唯一分かりました。うわ〜コールはあなたを見て、これらの愛らしい妹を保存することができます。
 

入力

三行。最初の行の整数N、N次元。

二つのベクトルの後に、N個の整数ライン3への各ライン2は、破壊表し(A1、A2、A3、A4 ...)、(B1、B2、B3、B4 ... BN)。

出力

質問には、パスワード出力設計クルトを尋ねました
 

サンプル入力

3 
1〜3 -5
-2 4 1

サンプル出力

-25
 

データ制約

nのデータの50%<= 8、|は|愛 、| BI | <= 1000

データn <= 1000の100%まで、|愛| 、| BI | <= 100000

私はこの質問が失敗で書いていません。出席問題、ソートそれは二回取ることができます。

#include <ビット/ STDC ++ H> 
のtypedef 長い LL。
使用して 名前空間はstdを、
CONSTの INT N = 1E3 + 10 
LL nを、B [N]、[N]。
ブールCMP(LLさt1、t2のLL){
     戻り T1> T2。
} 
int型のmain(){ 
    scanf関数(" %のLLD "、&N)
    以下のためにint型 i = 1 ; iが<= N; iが++ ){ 
        scanf関数(" %のLLDを"[I])。
    } 
    のためのINT I = 1; iが<= N; iは++ ){ 
        scanf関数(" %のLLDを"、&B [I])。
    } 
    ソート(A + 1、A + N + 1 )。
    ソート(B + 1、B + N + 1 、CMP)。
    LL合計 = 0 ;
    以下のためにint型 i = 1 ; iが<= N; iは++ ){ 
        合計 + = [I] * B [i]は、
    } 
    のprintf(" %のLLD " 、合計)。
    リターン 0 ; 
}

説明

最後に、闘争すべての親に、恭介最後のボスは、チャンバのクートのデザインの中に閉じ込められました。彼らは世界は変更する転覆日間を受けたことをホッとされているちょうどその時:地面が沈み始め、空が血の赤、水の沸騰......黙示録的な絵を回すようになりました。ダよ色素ミリアンペアのZUのfu TA NI MO WO白鳥WA KA NAカラZU市屋青海空のののあなた:彼女の手から米国魚類は、古代の「若山牧水の詩のコレクションは」理由を見つけました。大(夏)イタリア(朔)恭介は、彼が法律を改ざんするとき、この世界を創造して狡猾です。このルールの起源は、生と死の間で猫ということです。猫は、いずれかのガスタンクがある場合は、このボックスには、二つのガス缶を持って、ブラックボックスに保管されたオープンしているので、猫は、法律を補正することができる、殺されます。しかし、2本のだけガスボンベの確率を制御することができ、外の世界が開かれました。2つの確率は、1 /(N!)、ネコであるときに開かれるガスボンベの確率は、次いで1×、第二のキャニスターは、1 / yと(x、yは正の整数)/であり、と仮定彼らは、どういうわけか殺されます。今、米国魚類は何とか猫が殺されたさせることができますどのように多くの(x、y)の知っていただきたいと思います。
 

入力

ライン、正の整数n

出力

タイトル(x、y)のペアの意味を満たすためにライン。
 

サンプル入力

6

サンプル出力

135
 

データ制約

30 nのデータの%<= 6

データnの60%<= 50

データの100%N <= 700000

数学が得意ではない、トピックの数を扱うことができません。

具体的にプロセスを見て:

 

+高精度の圧力レベルの素因数分解。

しかし、私は押しビットをしません、高精度、ピットを離れる完成します。


 

 

 

説明

米国魚類リキバックアップグループは、世界を救うためにしながら、木が強くなるとこの世界を残すための方法を考えるようになったため、弱い根拠を探します。巨根、彼女は教室で机の迷路オープンシェイへの入り口を破壊された会いました。シェイは、世界の輸出は、この迷路の輸出で、管理ツリーに語りました。だから、リキはシェイと一緒に迷路に飛び込むことを躊躇しませんでした。迷路では、ロープをカットしながら、氷の彫刻ながら、二人の女の子は、温泉ながら、お互いを助け、最後に来てつまずきました。驚くことではないが、彼らを待って最後のオルガンもあります。

最後がm * n個のチェス盤の正方形の立っ器官である、いくつかの格子の上に人形を置いて、いくつかの場所は、直接ピットを掘りました。唯一の出口を開くために、すべての人形を奪います。しかし、奇妙な設定のために、リキとシェイは直接人形に手を触れないで、彼らはそれを収集するロボットを操作する必要があります。ロボットは非常に奇妙な移動、およびビットチェスの馬のような、しかし、馬がどの方向1 * 2ルートで行くことができ、彼らは唯一のR *のC(またはcの* rを)行く上から下への行、戻ることはできません。格子人形を通してロボットたら、グリッド上の人形がリサイクルされますこと、およびロボットが去ったとき、グリッドはピットになります。リキは、出発点として任意の人形を持ってグリッドにロボットを置くことができ、あなたはまた、任意のグリッドの人形収集ロボットを持つことができます。ウォーキングロボットがテレポートとみなすことができますが、新たな出発点を設定するたびに1時間を消費します。また、グリッドのピットであっ定住することはできません。

この重大な岐路ではなく、沙耶の人形愛好家IQの戻り0をよだれ。リキは、助けをあなたに向けるすべての人形を集めることができるようになり、時間の最小量を計算する手助けしなければなりませんでした。
 

入力

最初の行は、4つの整数M、N、R、C、問題説明意味参照を含んでいます。次のMライン毎のNの長さ

の文字列。この場所を表す文字は、人形を持っている場合は「」;この文字がある場合は「X」、この表現するために

パーティはピットです。

出力

出力整数は、最短の時間を表します。
 

サンプル入力

3 3 1 2 
...
.X。
...

サンプル出力

4
 

データ制約

データの30%、1 <= M、N < = 4,1 <= R、C <= 3。

データの70%、1 <= M <= 20,1 <= N <= 4,1 <= R、C <= 3。

データの100%、1 <= M、N < = 50,1 <= R、C <= 10。
 

ヒント

 

この質問はあまりにも厳しい、正解ネットワークフローた圧力DP、同様に考え始めている、最小パスカバレッジです。

でもエッジ:

  1.も、古いから新しいに、1の状態遷移値、注意スプリットポイントに接続された各側。

  2.ソースも古いポイント値エッジ1、シンクのエッジと1の偶数値に新しいポイントを取ることができるようにします。

  3.これらも逆側、0の値を有します。

最大流量(二部グラフマッチングに)再度実行し、空のポイントを取るマイナスマッチの数は、最終的な答えです。

 

#include <bits/stdc++.h>
using namespace std;
const int N = 6e5+10,inf = 1e9;
int n, m, S, T, ans, d[N],ed,head[N],px[5],py[5],maxflow,ma[60][60],r,c;
int tot=-1;
struct edge{
    int w;
    int next;
    int to;
}e[N];
inline void addedge(int x, int y, int z) {
    e[++tot].to=y;
    e[tot].next=head[x];
    e[tot].w=z;
    head[x]=tot;
}//建图 
int pos(int x,int y){
    return (x-1)*n+y;
}
inline bool bfs() {
    memset(d, 0, sizeof(d));
    queue<int> q;
    q.push(S);
    d[S] = 1;
    while (q.size()) {
        int x = q.front();
        q.pop();
        for (int i = head[x]; i!=-1; i = e[i].next) {
            int y = e[i].to, z = e[i].w;
            if (d[y] || !z) continue;
            q.push(y);
            d[y] = d[x] + 1;
            if (y == T) return 1;
        }
    }
    return 0;
}

int dinic(int x, int flow) {
    if (x == T) return flow;
    int rest = flow;
    for (int i = head[x]; i!=-1 && rest; i = e[i].next) {
        int y = e[i].to, z = e[i].w;
        if (d[y] != d[x] + 1 || !z) continue;
        int k = dinic(y, min(rest, z));
        if (!k) d[y] = 0;
        else {
            e[i].w -= k;
            e[i^1].w += k;
            rest -= k;
        }
    }
    return flow - rest;
}
void solve(){
    int now=0;
    while(bfs()){
        while(now=dinic(S,inf))
            maxflow+=now;
    }
    printf("%d",ans-maxflow);
}
int main() {
    memset(head,-1,sizeof(head));
    scanf("%d%d%d%d",&m,&n,&r,&c);
    char s[60];
    S=0,T=m*n*2+1;
    for(int i=1;i<=m;i++){
        scanf("%s",s);
        for(int j=1;j<=n;j++){
            if(s[j-1]=='x') ma[i][j]=1;
        }
    }
    px[1]=r;px[2]=r;px[3]=c;px[4]=c;
    py[1]=c;py[2]=-c;py[3]=r;py[4]=-r;
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            if(ma[i][j]) continue;
            addedge(S,pos(i,j),1);
            addedge(pos(i,j),S,0);
            addedge(pos(i,j)+n*m,T,1);
            addedge(T,pos(i,j)+m*n,0);
            ans++;
            for(int k=1;k<=4;k++){
                int xx=i+px[k];
                int yy=j+py[k];
                if(xx>m||yy<=0||yy>n||ma[xx][yy]) continue;
                addedge(pos(i,j),pos(xx,yy)+m*n,1);
                addedge(pos(xx,yy)+m*n,pos(i,j),0);
            }
        }
    }
    solve();
    return 0;
}

 

(我不会告诉你我的二分图匹配是直接抄的)


 

总结:好好休息。

 

おすすめ

転載: www.cnblogs.com/Nelson992770019/p/11358793.html