Wannafly模擬賽3 生物課程

2021-08-09 03:55:49 字數 1343 閱讀 2329

思路:水題,按照三種無向圖的結構特點判斷,具體為判斷節點度數:x有乙個4度節點,其他的節點最多為2度;y有乙個3度節點,其他的節點最多為2度;i的節點度數最多為2度。還可以看出另乙個約束條件為:圖是連通的,加上沒有重邊和自環的限制,其實就是說明三種圖均為樹形結構。

// 生物課程2 執行/限制:27ms/1000ms

#include #include #include #include #include using namespace std;

int degree[505];

int main()

if (n != m + 1)

sort(degree + 1, degree + n + 1,greater());

//x:最大度數,y:次大度數

x = degree[1], y = degree[2];

if (x == 4 && (y == 2 || y == 1))

else if (x == 3 && (y == 2 || y == 1))

else if (x == 2 || x == 1)

else

} return 0;

}

開始寫的時候,沒注意到樹形結構,用bfs判斷的連通,麻煩了不少......

// 生物課程 執行/限制:35ms/1000ms

#include #include #include #include #include using namespace std;

//前向星存圖

struct node edges[501000];

int cnt, head[505];

int degree[505];//度數

int count;//用於搜尋

bool cmp(int a, int b)

void add(int x, int y)

void bfs(int x)

} }}int main()

::count = 1;

bfs(1);//bfs判連通

if (::count != n)

sort(degree + 1, degree + n + 1,cmp);

x = degree[1], y = degree[2];

if (x == 4 && (y == 2 || y == 1))

else if (x == 3 && (y == 2 || y == 1))

else if (x == 2 || x == 1)

else

} return 0;

}

Wannafly模擬賽3 監視任務(貪心 線段樹)

思路 把所有約束按照右端點排序。這樣每乙個前面的約束區間 l1,r1 與後面的乙個約束區間 l2,r2 的交,一定為 max l1 l2 r1 對於排序後的區間依次滿足約束,假設當前列舉到的約束還沒有滿足,就不斷把對應區間中最右端的0改為1,這些過程可以用線段樹維護來完成。時間複雜度o n m lo...

Wannafly模擬賽4 題解

a fst是一名可憐的小朋友,他很強,但是經常fst,所以rating一直低迷。但是重點在於,他非常適合acm!並在最近的區域賽中獲得了不錯的成績。拿到獎金後fst決定買一台新筆記本,但是fst發現,在 能承受的範圍內,筆記本的記憶體和速度是不可兼得的。可是,有一些筆記本是被另外一些 完虐 的,也就...

Wannafly 模擬賽A Laptop 樹狀陣列

題解 樹狀陣列 二維偏序。要同時滿足i.a j.a,i.b j.b才算完虐,然後這道題不想求逆序數那樣可以求出多對逆序,這道題只能求出多少個被完虐。所以我們排完第乙個序列之後就給編號,然後排序第二個序列,再離散化,然後就進入像計算逆序數那樣計算了,但是這裡有點不同,因為是要同時滿足i.a j.a,i...