|
后缀自动机真是劲啊
题目 1712 [POJ3415]公共子串
2017-03-08 21:05:40
|
|
mdzz f[u][0] 写成 f[i][0]调半小时》。。
|
|
一A的01背包。。不知道自己是会背这种代码了还是真的理解了
|
|
其实这是一个多源最短路的题目
#include<cstdio> #include<cstring> #include<queue> using namespace std; int n,m; int a[200][200]; int dx[] = {0,1,0,-1}; int dy[] = {1,0,-1,0}; queue<int>q,p; void bfs(){ while(!q.empty()){ int x = q.front(),y = p.front(); q.pop();p.pop(); for(int i = 0; i < 4;i++){ int xx = x + dx[i],yy = y + dy[i]; if(xx >= 1 && xx <= n && yy >= 1&& yy <= m && a[xx][yy] != 0 ){ if(a[xx][yy] == -1){ a[xx][yy] = a[x][y] + 1; q.push(xx);p.push(yy); } else{ if(a[xx][yy] > a[x][y] + 1){ a[xx][yy] = a[x][y] + 1; q.push(xx);p.push(yy); } } } } } } void input(){ scanf("%d%d", &n, &m); memset(a,-1,sizeof(a)); for(int i = 1; i <= n; i++){ char s[200]; scanf("%s", s); for(int j = 0; j < m; j++){ if(s[j] == '1'){ a[i][j+1] = 0; q.push(i);p.push(j+1); } } } } void output(){ for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++)printf("%d ",a[i][j]); printf("\n"); } } void solve(){ bfs(); } int main(){ freopen("bit.in","r",stdin); freopen("bit.out","w",stdout); input(); solve(); output(); } |
|
后缀自动机+链剖LCA强行作一发
|
|
递归完事儿。。。
|
|
w+和w-我也搞反了。。。。
题目 1575 [NEERC 2003][POJ2125]有向图破坏
2017-03-08 10:23:11
|
|
|
|
第一次文件名打错了
![]() ![]() ![]() ![]() ![]() ![]() |
|
回复 @AntiLeaf :
啊哦!好像假如你能够造出每次都让我删除根节点的数据,我的复杂度就渣了。。不过你事先不知道我的alpha是多少,除非捆绑评测然后每个点中加几个卡不同的alpha值的替罪羊的数据,否则也是卡不动的。
题目 2623 [HZOI 2016][GDOI2016模拟3.14] hashit
2017-03-08 08:00:12
|
|
[size=155]|[/size]
题目 2535 [Keller战纪·正传·妖姬篇][HZOI 2015]Keller 异或 凤凰神
2017-03-08 07:45:05
|
|
你们真是卡得一手好常。。。
|
|
题目 2623 [HZOI 2016][GDOI2016模拟3.14] hashit
2017-03-08 07:38:10
|
|
|
|
%%%
|
|
题目 2623 [HZOI 2016][GDOI2016模拟3.14] hashit
2017-03-08 07:17:32
|
|
题目 2623 [HZOI 2016][GDOI2016模拟3.14] hashit
2017-03-07 21:42:55
|
|
$$[f(x)-e^x]^2=\sum_{i=0}^Na_i^2x^{2i}+2\sum_{i=0}^{N-1}\sum_{j=i+1}^Na_ia_jx^{i+j}-2\sum_{i=0}^Na_ix^ie^x$$
$$(x^i)'=ix^{i-1}\Rightarrow\int_0^1x^i\mathrm{d}x=\frac{1}{i+1}1^{i+1}-\frac{1}{i+1}0^{i+1}=\frac{1}{i+1}$$ 然后并没有想清楚 $x^ie^x$ 定积分怎么求,就开始手算小数据: $$(x^ie^x)'=(ix^{i-1}+x^i)e^x$$ $$\Rightarrow [(x-1)e^x]'=xe^x$$ $$\Rightarrow [(x^2-2x+2)e^x]'=x^2e^x$$ $$\Rightarrow [(x^3-3x^2+6x-6)e^x]'=x^3e^x$$ 这样归纳一下好像就推出来了: $$(e^x\sum_{i=0}^n(-1)^iA_n^ix^{n-i})'=x^ne^x\Rightarrow\int_0^1x^ne^x\mathrm{d}x=e\sum_{i=0}^n(-1)^iA_n^i-(-1)^nn!$$ 这么看来原式应该就等于 $$\sum_{i=0}^N\frac{1}{2i+1}a_i^2+2\sum_{i=0}^{N-1}\sum_{j=i+1}^N\frac{1}{i+j+1}a_ia_j-2\sum_{i=0}^N[e\sum_{j=0}^i(-1)^jA_i^j-(-1)^ii!]a_i$$ 只有二次诶,那只要对每个 $a_i$ 令偏导为 $0$ 就行了,就能得到一个一次方程组,用高斯消元解方程组就做完了,可是 $a_i=\sum_{j=0}^\infty p_{ij}\cdot e^j$ 什么鬼??难道要把多项式放进去消元,这个是要炸的呀。看了下方程组发现系数矩阵 $A$ 的数都是有理数,那么解方程 $Ax=b$($x,b$ 为列向量)得到 $x=A^{-1}b$,而 $b$ 中的数都能表示成 $p_0+p_1e$ 的形式,所以答案 $x$ 也能表示成 $p_0+p_1e$ 的形式。 出题人真坑,明明答案是 $p_0+p_1$ 的形式,只有 $p_{i0},p_{i1}$ 是有用的,题面偏要写成 $\sum_{j=0}^\infty p_{ij}$ 误导别人存整个多项式。然后又只要输出有用的那两个数。坑爹!! 推导这里就开始写,写完之后测了下样例 $N=0$ 过了,$N=1$ 的WA了。开始怀疑算法有没错。或者是哪一步推导错了。好虚啊。
题目 1743 忠诚
2017-03-07 21:39:22
|
|
写一颗勤勉删除+旋转的替罪羊是很痛苦的。。
题目 2623 [HZOI 2016][GDOI2016模拟3.14] hashit
2017-03-07 21:37:07
|
|
据说线段树结点中存指针与位运算求下标相比效果拔群(在某些题目中似乎能卡过树状数组)
题目 1266 [NOIP 2012]借教室
2017-03-07 21:35:26
|