紫书上推出来的公式1-(k+1)/2^(k)
注意范围 都用的long long
#include
#include
#include
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
return b==0?a:gcd(b,a%b);
}
int main()
{
int n,kase=1;
s...
分类:
其他好文 时间:
2015-05-08 16:35:08
阅读次数:
144
归并排序:
以前学过归并排序,把意思看懂了,但要是自己写代码实现,那是真的不会,现在看了紫书上的代码,现在真的是豁然开朗,看这个的原因是也是为了实现逆序对的O(N log N)实现。
思路:其实,归并排序的实质就是二分,我们对二分并不陌生,经常用二分来查找某个值,我们可以把这个值称为二分的“附加值”(即:我们的目的),同样的在归并排序中,这个“附加值”不再是某个值,而是某个过程,这个过程就是“...
分类:
编程语言 时间:
2015-05-08 09:33:06
阅读次数:
121
正解是字典树,运用链表实现的一种数据结构,构建 方式和紫书上的二叉树差不多。因为这道题的内存给的比较紧,所以需要解决内存问题,但是如果递归释放内存会导致效率低下,解决方案是开一个内存池(数组),每次更新下标就可以重复利用了。
#include
#include
#include
#include
using namespace std;
int T,n,k;
struct pa{
cha...
分类:
其他好文 时间:
2015-05-07 22:06:44
阅读次数:
127
题意:给出n个点,m条路,每条路用5个整数表示u,v,a,b,tu表示这条路的起点,v表示终点,a表示打开时间,b表示关闭时间,t表示通过这条道路需要的时间看的紫书,因为边权不再仅仅是路上的时间,还需要处理一下是否需要等待如果不需要等待的话,这条路上的权值就为t如果需要等待的话,这条路的权值就为t+...
分类:
其他好文 时间:
2015-05-07 00:38:23
阅读次数:
141
题意:给出一个n个节点的无向图,以及某个节点k,按照字典序从小到大输出从节点1到节点k的所有路径看的题解http://blog.csdn.net/hcbbt/article/details/9755147因为节点数很少(小于20),所以可以先用floyd处理一下,判断一点是否能够到达终点然后就像紫书...
分类:
其他好文 时间:
2015-05-05 21:41:45
阅读次数:
125
// poj 1141 Brackets Sequence
// 也是在紫书上看的一题,uva就是多了一个t组数据。
// 经典区间dp
// dp(i,j)表示区间[i,j]内所需要增加的括号数目
// 则分为两种情况
// 一种是s[i]和s[j]是匹配的则
// dp[i][j] = min(dp[i][j],dp[i+1][j-1])
// 另外一种情况是不匹配
// dp[i][j] =...
分类:
其他好文 时间:
2015-05-05 00:05:14
阅读次数:
147
紫书上分析了很多很多,超详细,= ̄ω ̄=每扫描一行可以计算一个height数组,表示从这块空地向上延伸多少块空地,而且这个数组可以逐行递推。首先对于每一行来说维护一个单调栈,栈里放的是矩形的左上角,而且横坐标c和高度h也都是递增的,另外对于扫描到的同一个右下角,矩形面积的大小只与左上角的横坐标c和高...
分类:
其他好文 时间:
2015-04-29 16:27:04
阅读次数:
140
题意:给出n个点,m条边,每条边上涂有一个颜色,求从节点1到节点n的最短路径,如果最短路径有多条,要求经过的边上的颜色的字典序最小紫书的思路:第一次从终点bfs,求出各个节点到终点的最短距离,第二次bfs从起点沿着每到达一个节点d[]减少1来走,按照颜色的字典序最小的路径来走 1 #include....
分类:
其他好文 时间:
2015-04-28 22:18:00
阅读次数:
146
// uva1625 Color Length
// 这是好久之前在紫书(page 276)上看到的题目了
// 题目的意思是,给你两个长度分别为n和m的颜色序列(n,m<=5000)
// 都是由大写字母组成,要求按照顺序合并成同一个序列,即每次
// 可以把一个序列开头的颜色放在新序列的尾部
// 比如两个序列:GGBY 和 YRRGB至少有两种合并结果:
// GBYBRYRGB 和 YRR...
分类:
其他好文 时间:
2015-04-27 11:16:47
阅读次数:
93
//本来是想练一下欧拉回路的,结果紫书上那题是大水题!!!!!题意:给出n个单词,是否可以把单词排列成每个单词的第一个字母和上一个单词的最后一个字母相同解:欧拉通路存在=底图联通+初度!=入度的点至多只有两个(分别为入点和出点) 1 #include 2 #include 3 #include 4 ...
分类:
其他好文 时间:
2015-04-24 14:14:51
阅读次数:
125