吐槽&記錄
突然才知道自己太菜了,今天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...