瀋陽集訓day7

2021-08-02 06:57:38 字數 2957 閱讀 1409

吐槽&記錄

突然才知道自己太菜了,今天t1又因為輸出的時候少輸出了乙個換行符報零,加上就a,真傷心…linux換行和空格是乙個意思啊…t3正解過了

michael為救哥哥身陷囹圄,被關進foxriver監獄。為準備越獄,他需要散布訊息給監獄中其他人來共同協作,但是監獄中魚龍混雜,分成各個小團體,內部訊息傳遞單向傳輸。問題1:初始至少需要向多少個透漏訊息,使得監獄內所有人都獲知訊息。

問題2,至少需要新增幾條傳輸線路(邊),使任意向乙個人散步訊息後,經過若干次傳送,監獄內所有的人最終都能得到訊息。

從檔案break.in中輸入資料。

輸入的第一行包含乙個整數 n:監獄人數(2 <= n <= 100)。用前 n 個正整數標識每個人。接下來 n 行中每行都表示乙個訊息傳遞列表(分發列表)。第 i+1 行包括 i 的接收訊息的人的識別符號。每個列表用 0 結束。空列表只用乙個 0 表示。

輸出到檔案break.out中。

輸出的第一行包含乙個正整數:問題1的解。第二行應該包含問題2的解。

5 2 4 3 0

4 5 0

0 0

1 01

22a**…顯然tarjan一下然後統計出入度就可以了

#include

#include

#include

#include

#define maxn 100+10

using

namespace

std;

vector

g[maxn];

int timer,n,viss[maxn],dfnn[maxn],loww[maxn],stackk[maxn],t[maxn],topp,innn[maxn],outtt[maxn],cnt,ccc;

void tarjan(int x)else}}

if(loww[x]==dfnn[x])

topp--;

}}int main()

}for(register

int i=1;i<=n;i++)

if(ccc==1)

for(register

int i=1;i<=n;i++)}}

int innh=0,outth=0;

for(register

int i=1;i<=cnt;i++)

printf("%d\n",innh);

int maxn=max(innh,outth);

printf("%d\n",maxn);

return

0;}

用的不是linux,自認倒霉

又到了新高一年級文理分科的時候了,每年的這個時候都比較傷感,因為有的要離開到其他班,有的新加入班級。負責安排座位的大川同學制定了這樣的計畫:

比如a和b都是本班學生且是好朋友,a分到了其他班,而c則是外班進入這個班的,c和a並不熟悉,而c和b關係很好,那麼小x為了照顧a和c的情緒,就會讓b坐在a的位置,c坐在b的位置。每個學生都只願意坐到自己好朋友的座位或自己原來的座位。

當然,實際情況可能很複雜,比如乙個班裡的同學之間關係不一定好,外班進來的可能和本班很多人關係都很好。

現在告訴你,和大川所在班有關係的人一共有n個人,大川想知道有沒有乙個合理的方案來滿足自己的座位安排計畫。

從檔案class.in中輸入資料。

本題為多組資料,第一行乙個整數m,表示有m組測試資料。

對於每組測試資料,每組的第一行乙個整數n,表示一共有n個人和這個班有關係。

接下來一行n個整數,第i個整數表示第i個人是否是本班學生(0表示不是,1表示是,分到其他班的也算是本班學生)

接下來一行n個整數,第i個整數表示第i個人是否要分到其他班(0表示留在本班,1表示分到其他班,如果第i個人是由外班分進來的,那麼第i個整數就是乙個隨機整數,沒有實際意義)

接下來是乙個n行n列的乙個二維矩陣,第i行第j列的數表示第i個人和第j個人是否關係很好(1表示認識,0表示0

認識),對角線上是0,自己一定認識自己

輸出到檔案class.out中。

每組資料,如果存在乙個方案,輸出 「ˆ_ˆ」(不含引號)。

如果沒有方案,輸出 「t_t」(不含引號)。都是半形字元。

1 3

1 1 0

0 1 0

0 1 1

1 0 0

1 0 0

對於 30% 的資料滿足 1 ≤ n ≤ 12。

對於 100% 的資料滿足 1 ≤ n ≤ 50,1 ≤ t ≤ 20。

1a**,二分圖匈牙利跑得飛快

#include

#include

#include

#include

#define maxn 300+10

using

namespace

std;

int m,n;

int a[maxn],b[maxn],g[maxn][maxn],girl[maxn];

bool visit[maxn];

bool find(int x)}}

return

false;

}int main()

for(register

int i=1;i<=n;i++)scanf("%d",&b[i]);//1為到其他班,0為留在本班,其他表示是其他班分進來的

for(register

int i=1;i<=n;i++)

}for(register

int i=1;i<=n;i++)

bool judge=true;

memset(girl,-1,sizeof(girl));

for(int i=1;i<=n;i++)

}if(judge) printf("^.^\n");

else

printf("t.t\n");

}return

0;}

長沙集訓day7

恢復內容開始 這輸入法有毒哇。xf剛剛筆記本卡了,沒有儲存,還得在打qaq 已經來著乙個星期了,這星期的集訓又開始了,直接進入正題 t1 給你乙個長度為n的序列,讓你求出abs a i i 的最小值和。你可以對數列做一次操作,使得數列所有的數往前移動乙個,第一項變為第n項。看到這道題想了一會,暴力分...

瀋陽集訓day4

憂傷地吐槽 記錄 沒錯,今天已經day5了,因為day4有點失敗,沒寫,大概就是這麼意思,t1寫的正解,t2線段樹,乙個小時可以搞出來的結果非得去寫第三題正解,還寫掛了只得了十分,初三的大佬20行 貪心得了八十,只是感到心累,t4單調棧也沒寫,才得了150 400,離大佬們的距離越來越遠,上去講了兩...

2019暑期金華集訓 Day7 動態規劃

首先發現這個樹的形態沒啥用,只需要保證度數之和是 2n 2 且度數大於0即可。然後設 dp 表示前 i 個點用了 j 個度數的最小值,然後就獲得了 o n 3 的dp。不妨每個點的度數都減1,那麼總度數就變成 n 2 了。考慮原來 i 的作用是什麼 要限制選的點數不能超過 n 此時我們總度數小於 n...