随笔分类 -  ZOJ

摘要:有三个面数不同的骰子,每次得分为三个骰子的点数和,但当三个骰子的点数满足某个条件时,分数会清0,问分数大于N需要投掷次数的期望。 典型的期望题,但是有环。论文中说这种题一般用高斯消元通解,但是这一题比较特殊,所有的环都是回到0点,所以可以将每个点的期望化简到一个关于E[0]的线性方程租,然后求系数即可。 1 /* 2 设E[x]为x分时到达n分的期望投掷次数,pk为掷到k分的概率,p0为回到0分的概率 3 有E[x]=∑E[x+k]*pk+p0*E[0]+1 4 假设E[x]=A[x]*E[0]+B[x] 5 则 E[x]= ∑(A[x+k]*E[0]+B[x+k])*p[k]+p... 阅读全文
posted @ 2012-08-31 15:59 Burn_E 阅读(224) 评论(0) 推荐(0)
摘要:比较恶心的一道题,主要在数位DP那里调试了好久。 题目大意:0~9可以用对应的BCD码表示,给出A~B之间的十进制数,将他们化成BCD码的形式。但有些01串是不能出现的,求能化成BCD码的数的个数。 先建图,然后将二进制转十进制,比如next[p][7]=next[p][0]->[1]->[1]->[1],如果后面这条路能走出来next[p][7]就存在,否则为-1。之后数位DP,求能走出的比X的小的数有多少种,这里要注意细节,很容易写错。求出后DP(B)-DP(A)就行了。 1 #include <stdio.h> 2 #include <string.h 阅读全文
posted @ 2012-08-13 23:32 Burn_E 阅读(285) 评论(1) 推荐(0)
摘要:还是统计串问题,只是分成了同一种串允许互相覆盖和不允许互相覆盖两种情况。 对于允许互相覆盖的情况,就是模版了。对于不允许覆盖的情况,只要记录下该串最后一次出现并且被统计的位置即可,能统计的条件是lasp[id]+len[id]<=pos。#include <string.h>#include <stdio.h>#define MAXL 600001#define MAXN 100001#define INF 0x3fffffffchar s[MAXN],s1[10];int n,type,stp[MAXN],sps[MAXN];int next[MAXL][26] 阅读全文
posted @ 2012-08-07 17:07 Burn_E 阅读(246) 评论(0) 推荐(0)
摘要:这道题好坑啊,整整调了我一下午!! 题意很简单,就是一个裸的自动机加上解码。编码是使用8位ASCII码连接字符,然后6位一取,结尾不足6位用0补上,每6位二进制数都会对应一个字符,形成了新的字符串。解码后最好用int存每一位的内容,写起来比较方便,因为可能会有'\0'这样的字符出现。。 一开始写了个位运算版本的解码,但是一直WA。于是写了个很暴力的模拟二进制解码,竟然A了,看来自动机部分没什么问题。然后又回过头来调我的位运算版解码,怎么算都没有错啊,但是就是一直WAWAWA。。。。最后绝望之中改了下数组大小,把字符串数组从2500改成了5000。。。然后,然后就神奇的A了。。跑 阅读全文
posted @ 2012-08-05 19:42 Burn_E 阅读(466) 评论(0) 推荐(0)