题意:有两个箱子,里面各放有糖n个,每天从两个之中任取一颗糖,突然有一天小孩取糖时发现一个盒子里空了,问另一个盒子里面现在有多少糖(求期望值)?
#include
#include
using namespace std;
double F[400008];
double C_N_M(int n,int m)
{
return F[n]-F[m]-F[n-m];
}
void Ini...
分类:
其他好文 时间:
2015-06-09 10:00:26
阅读次数:
542
http://acm.hdu.edu.cn/showproblem.php?pid=1538经典经济学问题,海盗分金分析http://www.guokr.com/article/41423/#include #include using namespace std;int a[15];int mai...
分类:
其他好文 时间:
2015-06-09 00:51:44
阅读次数:
139
题意:n 个点,构造一棵树,使得同一层结点的子节点个数相同,问能构建出多少种树。
分析:同一层结点的子节点个数相同,满足这个关系的树,子树必定是对称的,从根节点切开,左子树依然是对称的,右子树也是对称的,除开树根外,下面的子树(可能一棵子树,或者两棵,多棵),一定要完全相同,哪怕每棵子树是对称的,但是子树与子树之间不同,那么都挂在树根上的时候,是不能满足使到同一层的节点所拥有的子节点数相等的。
...
分类:
其他好文 时间:
2015-06-08 23:20:13
阅读次数:
146
分析:复杂的线段树操作。只有一个询问操作,就是询问[l,r]之间数的p次方之和,不可能全部查询所有的节点,会TLE,最好就是查询一段[a,b],这段区间所有的值都相等,即可以返回(b-a+1)*val 的值。根据询问操作可知要维护的是区间内所有值都相同的情况的区间。对于置初值和加乘操作,分两种情况:1、当为置初值操作,直接覆盖区间即可,并把标记的加乘操作赋为初始值。2、当为加乘操作时,先判断当前区...
分类:
其他好文 时间:
2015-06-08 19:42:19
阅读次数:
177
分析:给出1~n的环,m个操作,每次能顺时针或逆时针走w步(每次从某一个数字到达另外数字的概率为0.5),询问最后在l~r这段区间内概率。
按概率dp求出到达每个数字的概率,然后枚举从l到r的概率相加即可。dp[i][j]表示第i次操作落在数字j上的概率。
每次只需要需要取上一次的数据 ,只要开2个缓冲即可。
这题卡时限卡的非常紧,代码稍挫一点就TLE了。
#include
u...
分类:
其他好文 时间:
2015-06-08 17:33:40
阅读次数:
124
题意:a,b,c三个数,分别代表可乐,两个杯子,三个容器可以互相倒,能不能把a平分,能的话输出最小步数,不能输出NO。
分析:求最小用BFS,对6种倒法进行BFS。另外如果a是奇数的话可以剪枝,因为不能平分。
#include
#include
using namespace std;
struct Node
{
int a,b,c;
int s; //步数
};
bool v...
分类:
其他好文 时间:
2015-06-08 13:26:05
阅读次数:
123
分析:参考别人的搞。
1、AC自动机:
使用AC自动机来压缩路段,如禁掉的路段是1->2->3,那么插入字符串(123) ,注意点只有1~50,所以0~50用ASCII 压缩成字符串即可。
这样就能够完成禁止路段的在线状态转移。
2、DP部分:
两点之间的最短路。dp[i][j]表示在地点i,当前字符是j的状态。
初始化:fill(&dp0][0],&dp[maxn-1][maxp-1...
分类:
其他好文 时间:
2015-06-08 10:00:49
阅读次数:
119
题意:一个无向图,首先判定是否成环,然后求一条最长链。
分析:成环用并查集判断,最长链就是树形dp了。
#include
#include
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
#define N 100005
int ans;
int dp[N]; //dp[i]表示i节...
分类:
其他好文 时间:
2015-06-08 09:55:31
阅读次数:
120
分析:dp[i][j][k]表示第i行状态为j,i-1行状态为k时的客房士兵的最大值。
曼哈顿距离是指:|x1-x2|+|y1-y2|。
当前行不仅与前一行有关,还和前两行有关,所以开数组的时候还要记录前两行的状态,所以开设三维数组。
每行可压缩为二进制集合,状态dp[i][j][k]为第i行为集合j,第i-1行为集合k,则状态方程dp[i][j][k] = max{dp[i-1][...
分类:
其他好文 时间:
2015-06-08 01:05:56
阅读次数:
161
分析:最容易的方法就是一天一天的模拟了。
#include
using namespace std;
int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
#define Y 2013
#define M 3
#define D 24
bool leap(int y)
{
return y%400==0 || y%4==0&&y%100!=0;...
分类:
其他好文 时间:
2015-06-07 23:42:01
阅读次数:
311