上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 34 下一页
摘要: 第一个答案是统计图中桥的个数如果一个点-双连通分量中边的个数大于点的个数那么这个块中所有的边都是冲突的,累加到第二个答案中去。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #incl... 阅读全文
posted @ 2015-08-12 10:47 AOQNRMGYXLMV 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 求权值最小的桥,考虑几种特殊情况:图本身不连通,那么就不用派人去了图的边双连通分量只有一个,答案是-1桥的最小权值是0,但是也要派一个人过去 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include ... 阅读全文
posted @ 2015-08-12 09:32 AOQNRMGYXLMV 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 思路就是求边双连通分量,然后缩点,再用树形DP搞一下。代码和求强连通很类似,有点神奇,=_=,慢慢消化吧 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 c... 阅读全文
posted @ 2015-08-11 17:02 AOQNRMGYXLMV 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 给出一棵树,有若干次询问,每次询问距两个点u, v距离相等的点的个数。情况还挺多的,少侠不妨去看官方题解。^_^ 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 ... 阅读全文
posted @ 2015-08-11 13:13 AOQNRMGYXLMV 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 首先统计一下前m行中,有x列1的个数为0,有y列1的个数为1.设d(i, j)表示有i列1的个数为0,有j列1的个数为1,能到达这个状态的矩阵的个数。则d(x, y) = 1每一行都是两个1一起放,枚举这两个1分别放在了哪种列上面于是有状态转移:d(i - 2, j + 2) += d(i, j) ... 阅读全文
posted @ 2015-08-11 10:35 AOQNRMGYXLMV 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 赶脚官方题解写得挺清楚的说,=_=注意数据范围用long long,否则会溢出。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int maxn = 1000... 阅读全文
posted @ 2015-08-11 09:23 AOQNRMGYXLMV 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 求SCC缩点,统计出每个SCC中的点的个数。然后统计能到达u的最多的点的个数,可以反向建图,再dfs一遍统计出来。最后说一下,有必要开一个标记数组,因为测试数据中有重边,结果无限WA。 1 #include 2 #include 3 #include 4 #include 5 #i... 阅读全文
posted @ 2015-08-10 23:11 AOQNRMGYXLMV 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 给出一个带权有向图,要使整个图连通。SCC中的点之间花费为0,所以就先缩点,然后缩点后两点之间的权值为最小边的权值,把这些权值累加起来就是答案。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 usi... 阅读全文
posted @ 2015-08-10 16:10 AOQNRMGYXLMV 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 求出强连通分量,因为强连通中只要有一个人被通知到了,所有人都能被通知到。缩点以后形成一个DAG,找出那些入度为0的点,累加上它们的权值就是答案。一个点的权值等于SCC中权值最小的那个点。 1 #include 2 #include 3 #include 4 #include 5 #inclu... 阅读全文
posted @ 2015-08-10 11:34 AOQNRMGYXLMV 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 网上的题解几乎都是一样的:d(i, j, 0)表示前i行前j列,第(i, j)个格子向左运输能得到的最大值。d(i, j, 1)是第(i, j)个格子向上运输能得到的最大值。但是有一个很关键的问题没有解释:某个格子中的A矿或者B矿一定有其中一种能够运出来吗?有没有可能这个格子没有修建管道,仅仅是为了... 阅读全文
posted @ 2015-08-10 10:19 AOQNRMGYXLMV 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 约瑟夫变形,先计算出3个数时,最后三个数字的编号。然后以这三个数为起点,就可以递推出n个数对应的最后三个数字的编号。递推公式都是一样的。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const... 阅读全文
posted @ 2015-08-10 09:39 AOQNRMGYXLMV 阅读(239) 评论(0) 推荐(0) 编辑
摘要: kill[S]表示消灭机器人的集合为S,剩下的所能杀死的机器人集合。设d(S)表示杀死机器人集合为S的方法数,答案为d((1 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int maxn = 16; 8 ... 阅读全文
posted @ 2015-08-10 08:57 AOQNRMGYXLMV 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 单个边的权值修改以及询问路径上的权值之和。数据量比较大,用vector存图会超时的。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 void scan(i... 阅读全文
posted @ 2015-08-06 15:10 AOQNRMGYXLMV 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一棵树,每个顶点上有一个权值。 操作:选择一条路径,并将路径上所有的点的权值同时加或减某个数。 查询:某个点的当前权值 分析: 树链剖分完毕后,就是简单的线段树区间更新。 提交的时候注意要要加一句扩栈的代码,用C++提交。 1 #include <cstdio> 2 #include < 阅读全文
posted @ 2015-08-06 13:56 AOQNRMGYXLMV 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 人生第一道树链剖分的题目,其实树链剖分并不是特别难。思想就是把树剖成一些轻链和重链,轻链比较少可以直接修改,重链比较长,用线段树去维护。貌似大家都是从这篇博客上学的。 1 #include 2 #include 3 #include 4 #include 5 using names... 阅读全文
posted @ 2015-08-06 10:51 AOQNRMGYXLMV 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 因为shift操作中的数不多,所以直接用单点更新模拟一下就好了。太久不写线段树,手好生啊,不是这错一下就是那错一下。PS:输入写的我有点蛋疼,不知道谁有没有更好的写法。 1 #include 2 #include 3 #include 4 #include 5 #include ... 阅读全文
posted @ 2015-08-05 11:29 AOQNRMGYXLMV 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 只要枚举左右两个子天平砝码的集合,我们就能算出左右两个悬挂点到根悬挂点的距离。但是题中要求找尽量宽的天平但是不能超过房间的宽度,想不到要怎样记录结果。参考别人代码,用了一个结构体的vector,保存每个集合合法方案的左右两端最长的距离。 1 #include 2 #include 3 #incl... 阅读全文
posted @ 2015-08-05 10:00 AOQNRMGYXLMV 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 题解戳这一开始没看懂题解,后来想明白以后,d(i, j, s, x)是考虑第i本书的时候,前面已经拿走了j本书,剩下的书的种类的二进制状态为s,剩下的最后一本书的编号为x,所能得到的最小混乱度。这里状态定义的时候,先不考虑把拿出来的书放回去。最后统计答案的时候,把那些拿出来的书再加上。all是所有n... 阅读全文
posted @ 2015-08-04 17:44 AOQNRMGYXLMV 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 这道题可以和POJ 2486 树形背包DP Apple Tree比较着来做。参考题解 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int maxn = 50... 阅读全文
posted @ 2015-08-04 09:46 AOQNRMGYXLMV 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 题解 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 1000 + 10; 7 const int maxm = 30; 8 9 int n, k;10 11 char s[maxn]... 阅读全文
posted @ 2015-08-03 21:45 AOQNRMGYXLMV 阅读(158) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 34 下一页