思路:水題,按照三種無向圖的結構特點判斷,具體為判斷節點度數: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...