A - Lake Counting
最最最最最基础的dfs 挂这道题为了提高AC率(糖水不等式
B - Paint it really, really dark gray
dfs 待会写题解
C - New Year Transportation
简单的模拟
D - Binary Tree Traversals
给树的先序中序输出后序
贴下代码
#include <algorithm> #include <cstdio> #include <stack> using namespace std; const int maxn = 1e3 + 10; int preorder[maxn], inorder[maxn]; stack<int> st; int n; void build(int l1, int r1, int l2, int r2) { int i, j; st.push(preorder[l1]); for (i = l2; i <= r2; i++) if (inorder[i] == preorder[l1]) break; j = l1 + (i - l2 + 1); if (j <= r1 && i + 1 <= r2) build(j, r1, i + 1, r2); if (l1 + 1 <= j - 1 && l2 <= i - 1) build(l1 + 1,j - 1, l2, i - 1); } int main() { while (~scanf("%d", &n)) { for (int i = 0; i < n; i++) scanf("%d", &preorder[i]); for (int i = 0; i < n; i++) scanf("%d", &inorder[i]); build(0, n-1, 0, n-1); while (!st.empty()) { printf("%d", st.top()); st.pop(); if (!st.empty())putchar(' '); } puts(""); } return 0; }
E - Til the Cows Come Home
裸最短路dijkstra
最短路+限制条件 进行n次dijkstra 每次把当前的level[i]设为最小的
毕竟每次最短路肯定有个最小的
G - 畅通工程
基础并查集
H - 还是畅通工程
基础最小生成树
I - Vasya and a Tree
线段树+dfs 似乎好像是主席树吗(反正我不会
待会写发题解
J - Military Problem
dfs序 写题解
K - Cut 'em all!
贪心+dfs 写题解
L - Install Air Conditioning
最小生成树+树形dp 写题解
M - Qin Shi Huang's National Road System
最小生成树+树形dp 写题解
N - Conscription
最小生成树 写题解
O - Cow Contest
floyd传递闭包 写题解
一场contest下来要写8个题解wsl