题目地址:Anya and Cubes
比赛的时候居然没想起中途相遇法。。。这题也是属于想起来就很简单系列。
中途相遇法也叫折半搜索。就是处理前一半,把结果储存起来,再处理后一半,然后匹配前一半存储的结果。
代码如下:#include
#include
#include
#include
#include <algo...
分类:
其他好文 时间:
2015-03-27 22:17:27
阅读次数:
224
题目地址:HDU 2586
LCA第一发。
纯模板题。
偷懒用的vector,结果一直爆栈。把G++改成C++就过了。。
代码如下:#include
#include
#include
#include
#include
#include
#include ...
分类:
其他好文 时间:
2015-03-27 22:16:23
阅读次数:
176
题意:m个H和n个D,从左开始数H的累积个数总不比D的累计数少的排列有多少种。例如,3个H和1个D共有3种符合要求的排列H D H H,H H D H,H H H D。
分析:状态方程为,DP[m][n]=DP[m-1][n]+DP[m][n-1]。另外当n=0的时候无论m如何取值都是1。
理解:假设3个H和2个D是由2个H和2个D还有3个H一个D推来的,2个H和2个D共有H D H D,H...
分类:
其他好文 时间:
2015-03-16 14:34:35
阅读次数:
141
解析:一支队伍分组的情况,如果这支队伍有n个人,就有n种情况分别是一个组,两个组,。。。。。。;
i个人分成j组有两种方式:
1、i-1个人分成j-1组之后,第i个人独立分成一组;DP[i][j]=DP[i-1][j-1]。
2、i-1个人分成j组,第i个人随便加入j组中的任何一组;DP[i][j]=DP[i-1][j]*j。
3、因此状态转移方程为DP[i][j]=DP[i-1][j-1...
分类:
其他好文 时间:
2015-03-16 14:32:10
阅读次数:
109
最短路,简单题,floyd实现,在求最短路时一定要是是最大节点编号maxnum而不是输入的n,否则是错的。
#include
using namespace std;
int map[105][105]; //无向图
void Init()
{
int MAX=1000000,i,j;
for(i=1;i<=104;i++)
for(j=1;j<=...
分类:
其他好文 时间:
2015-03-15 23:45:08
阅读次数:
459
遇到卡时间比较死的题目的时候可以用
#include
#include
#include
#include
#include
using namespace std;
//适用于正负整形数
template
inline bool scan_d(T &ret)
{
char c; int sgn;
if (c = getchar(), c == EOF) return 0...
分类:
其他好文 时间:
2015-03-15 23:05:30
阅读次数:
166
解析:又是一个并查集。
1、题意:王老师需要一些男生帮他做事。要求男生之间都是朋友关系,可以直接的,也可以间接地。最多可以挑选出几个男生(最少挑一个)?
2、并查集,求所有集合中最大集合的元素个数。
3、要注意一个地方是:当n=0时,要输出1。
#include
#include
using namespace std;
int p[10000001],num[100000...
分类:
其他好文 时间:
2015-03-15 16:52:47
阅读次数:
107
分析:题意是判断是不是连通无环的图,使用并查集可以很好的解决。
1、判断是否成环,只需判断输入边的两个点。有共同的祖先,那么这两点就成环。
2、判断是否连通,只要判断根节点数为1即可。
3、注意:当输入数据只有0 0时,也是满足条件的,应输出 "Yes"。
#include
#include
using namespace std;
int p[100001];
bool...
分类:
其他好文 时间:
2015-03-15 15:18:57
阅读次数:
140