SGU 121.Bridges painting】的更多相关文章

121. Bridges painting time limit per test: 0.25 sec. memory limit per test: 4096 KB New Berland consists of N (1£ N£ 100) islands, some of them are connected by bridges. There can be no more than one bridge between any pair of islands. Mr. President…
原题地址 题意: 新百慕大由N个岛屿组成,在岛屿之间有一些连接它们的桥.在任意两个岛屿之间,最多只有一座桥连接它们.总统先生下达命令,要求给所有桥上色. 每一座桥能被染成 白色 或者 黑色. 每一个岛屿至少有一座白色的桥和一座黑色的桥(当然,如果只有一座桥就不存在这些问题) Solution: 很简单的dfs,水水就能过. 代码 #include <iostream> #include <cstring> #define INF 111 using namespace std; i…
题目大意:有个一无向图,给所有的边染色,如果一个点连接的边超过两个,那么最少要染一个白色和一个黑色,能否给整个图染色?不能输出“No solution”. 分析:引用连接 http://edward-mj.com/archives/445 首先构建dfs树,无向图dfs树具有的一大优点是该点只会向自己的祖先或子孙有非树边. 然后按深度交替染色.返祖边与自己的儿子涂同样的颜色. 如果dfs树中根结点度超过1,那么就找一条边染不同的颜色. 否则看根结点是否满足条件,如果不是,那么找一个与根结点相连的…
http://acm.sgu.ru/problemset.php?contest=0&volume=1 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traffic Lights 最短路 104 Little Shop of Flowers 动态规划 105 Div 3 找规律 106 The Equation 扩展欧几里德 107 987654321 Problem 找规律 108 Self-numbers II 枚举+筛法递推 109 Magic of Dav…
SGU 121 题意:给你一张图,问你每个顶点必须有黑白两条边(如果它的边数>=2),问你怎么染色,不行就输出no 收获:你会发现不行的情况只有一个单纯的奇数环的时候,反之我们交替染色即可 #include<bits/stdc++.h> #define de(x) cout<<#x<<"="<<x<<endl; #define dd(x) cout<<#x<<"="<&l…
源代码地址 https://github.com/a1115040996/MyHTML/blob/gh-pages/echarts/roadMap.html 预览地址 https://a1115040996.github.io/MyHTML/echarts/roadMap.html 源代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></titl…
dp..dp(i, j)表示画两个点为i-j, i的最优答案. dp(i, j) = min{ dp(i-j, k) } + cost[i] (1≤k≤M-j) 令f(i, j) = min{dp(i, j)}, 那么转移时间下降为O(1).然后滚动数组..这道题卡空间..时间复杂度O(NM) -------------------------------------------------------------------------------- #include<cstdio> #in…
183. Painting the balls time limit per test: 0.25 sec.memory limit per test: 4096 KB input: standard inputoutput: standard output Petya puts the N white balls in a line and now he wants to paint some of them in black, so that at least two black balls…
题意:给n个白球,选其中一些涂为黑色,且给了涂第i个球的花费为ci,要求每m个连续的球中至少有两个黑球,问最小花费是多少? 容易想到一个方程dp[i][j]=min{dp[k][i]}+c[j] dp[i][j]表示最后上色的两个球分别是第i和第j个球(i<j)时的最优解. 我们从条件每m个连续的球中至少有两个黑球可以得出k的范围j-m<=k<i 如果我们直接按上面这个方程去做的话时间复杂度是O(n*m*m). #include <iostream> #include <…
时间限制:0.25s 空间限制:4M 题意:  在n(n<=10000)个球中,给若干个球涂色,每个球涂色的代价为Ci,使得任意连续m(m<=100)个球中有至少两个球被涂了色. Solution: 首先很直接地能想到一个DP的状态转移方程 f[i][j] 代表,当前涂第i个球,且前面最近一个被涂色的球为j的最小代价 f[i][j]=min(f[j][k])+Ci,   k>i+1-m 分析这个转移方程的时间复杂度是O(n*m*m)在此题的数据范围中高达10^8 显然我们需要更好的解法…