树&图 记录

A - Lake Counting

 POJ - 2386

最最最最最基础的dfs 挂这道题为了提高AC率(糖水不等式

B - Paint it really, really dark gray

CodeForces - 717E

dfs 待会写题解

C - New Year Transportation

 CodeForces - 500A

简单的模拟

D - Binary Tree Traversals

 HDU - 1710

 

给树的先序中序输出后序

贴下代码

#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;
}
View Code

E - Til the Cows Come Home

 POJ - 2387

裸最短路dijkstra

 最短路+限制条件 进行n次dijkstra 每次把当前的level[i]设为最小的

毕竟每次最短路肯定有个最小的

G - 畅通工程

 HDU - 1232

基础并查集

H - 还是畅通工程

 HDU - 1233

基础最小生成树

I - Vasya and a Tree

 CodeForces - 1076E 

线段树+dfs 似乎好像是主席树吗(反正我不会

待会写发题解

J - Military Problem

 CodeForces - 1006E

dfs序 写题解

K - Cut 'em all!

 CodeForces - 982C

贪心+dfs 写题解

L - Install Air Conditioning

 HDU - 4756

最小生成树+树形dp 写题解

M - Qin Shi Huang's National Road System

 HDU - 4081

最小生成树+树形dp 写题解

N - Conscription

 POJ - 3723

最小生成树 写题解

O - Cow Contest

 POJ - 3660 

floyd传递闭包 写题解

 

一场contest下来要写8个题解wsl

 

posted @ 2019-03-11 23:01  Mrzdtz220  阅读(134)  评论(0编辑  收藏  举报