摘要:
很水的TARJAN求强联通图的问题。#include #include #include #include using namespace std;const int N=10010;const int M=100010;int head[N],dfn[N],low[N],stack[N],st;s... 阅读全文
摘要:
烦。。早上在写HDU 4338,发现细节太多了,写不了。原因其实是自己对TARJAN算法忘得差不多了。唉。。把之前想的一道循环节的题过了吧。。。再练练Tarjan,把4338也过了,加油。。。#include #include #include using namespace std;char s[... 阅读全文
摘要:
利用降幂公式。。呃,还是自己去搜题解吧。知道降幂公式后,就不难了。#include #include #include #include #define LL unsigned long long using namespace std;bool mod[100005];LL PHI(LL P){ ... 阅读全文
摘要:
把两种状态化成2*n-2的一条线上的一种状态即可。很容易想到。高斯列主元法,不知为什么WA。要上课了,不玩了。。。逃了一次课呢。。#include #include #include #include #include #include using namespace std;double cons... 阅读全文
摘要:
树状数组,主要是抓住要求连续1的个数。这样,初始时,相同的加1,不同的加0.查询时,用二分搜索右边界。就是比较当前mid-l+1的值与他们之间1的个数(这可以通过树状数组求区间和得出),记录右边界即可。#include #include #include #include #include #def... 阅读全文
摘要:
本来以为是一道水题,好吧,做了才知道,出题的人有多牛。二分搜索是不可能的了,因为会超内存。。。看到别人的搜索两个集合的提示,我就自己一边去想了。终于想出来了:可以这样做,先把每两个集合的和值枚举出来并成一个大集合,排序,去重。剩下一个集合,于是,共三个集合。枚举小的那个集合的元素,搜索两个大的集合。... 阅读全文
摘要:
一开始就想到了扩展KMP,因为只有扩展KMP才是处理后缀的。但忽然短路以为扩展KMP求的是最长公共后缀,囧。。。。又浪费了很多时间,都是对这个算法练得不多再看那个扩展KMP算法之后,就很确定要的就是这个算法了。嗯,如果直接用扩展KMP,是会超时的。后来看了别人一个很巧妙的处理,把一个串复制一下两个串... 阅读全文
摘要:
顶好的一道题。其实,是POJ 2411的升级版。但POJ 2411我用的插头DP来做,一时没想到那道题怎么用状态DP,于是回头看POJ 2411那一道的状态DP,其实也很简单,就是每一行都设一个状态,用位来表示,如果上一行为0,则当前行必定是要竖着放的。填1.否则,当前行的位置可以横放填两个格子为1... 阅读全文
摘要:
dp求期望的题。 设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望。E[1]即为所求。 叶子结点: E[i] = ki*E[1] + ei*0 + (1-ki-ei)*(E[father[i]] + 1); = ki*E[1] + (1-ki-ei)*E[... 阅读全文
摘要:
概率DP期望,逆推即可。使用状态压缩。注意,要全部输出。。。看DIS才发现题目输出是个坑。。#include #include #include #include using namespace std;double state[(1=0;i--){ if(i==al){ state[i]... 阅读全文
摘要:
很简单的概率题了设dp[x]为能力值 为x时出去的期望 天数#include #include #include #include #include using namespace std;double dp[20005];int ci[125];double is=0.5*(1+sqrt(5));... 阅读全文
摘要:
很容易列出方程设dp[i][j]为排在第i位置,总共有j个人排队到达目标状态的概率i=1dp[i][j]=p4+p1*dp[i][j]+p2*dp[j][j]2kdp[i][j]=p1*dp[i][j]+p2*dp[i-1][j]+p3*dp[i-1][j-1]设p2=p2/(1-p1),p3=p3... 阅读全文
摘要:
矩阵快速乘求概率,不难。但有注意的一点是,一定要注意地雷连着的情况,一旦出现两个雷相邻,就必定为0了。#include #include #include #include using namespace std;int pos[15];struct matrix{ double m[3][3];}... 阅读全文
摘要:
方程很明显有d[i]=sum(pk*d[i+k])+p0*d[0];其中pi可以在开始时枚举求出。设d[i]=A[i]*d[0]+B[i],代入上式d[i]=(sum(pk*A[i+k])+p0)+sum(pk*B[i+k])+1可得A[i]=sum(pk*A[i+k])+p0B[i]=sum(pk... 阅读全文
摘要:
求概率。其实跟枚举差不多,输入n即是要进行n轮比赛。对每一支球队,设求1的概率,首先1要与2比赛为p1,这是第一轮,第二轮时,1要与3(打败3为p2),4(打败4为p3)中胜者比赛,由于是概率,则两者都要比,求出概率。所以,1要在第二轮胜的概率=p1*(p2*3第一轮胜出的概率+p3*4在第一轮胜出... 阅读全文