ural

阿紫 发表于 2005-08-15 10:15:36

刚刚开始做ural,就被气得不得了。。。。

ural 1005
dp要用到状态压缩。。。我最弱的地方。。。所以把搜索进行到底~

ural 1009  ural 1012  ural 1013(+滚动数组)
wa一次,因为初始化错误!@#$%
我用的容斥原理:
f[ i ]:从高位向低位数,到第i位可以达到的数目
g[ i ]:从高位向低位数,到第i位构成...X0的数目(x=0..9)
g[ i ]=f[ i-1 ]
f[ i ]=f[ i-1 ]*k-g[ i-1 ]+g[ i-2 ]-g[ i-3 ]+...+/-g[1]
易知:
f[1]=k-1
g[1]=0
所以可以递推下去

论坛上的方法:
f[1]=k-1
f[2]=f[1]*k
f[ i ]=(f[ i-1 ]+f[ i-2 ])*(k-1)
其中f[ i-1 ]*(k-1)表示第i位不是0的所有可能情况
   f[ i-2 ]*(k-1)表示第i位 是 0的所有可能情况
1009&1012 mine ok
1013 mine tle

ural 1010
真是对不起lmz&jsf,我忘了输入有可能不是整数的情况。。。

ural 1011
可恶的一道题,wa>=10,要注意的情况是:
a=n*p/100
b=n*q/100
如果trunc(b)=b & trunc(b)>trunc(a),但是题目意思说售票员人数不到Q%,所以继续 inc(n)

ural 1014
可恶````要另外考虑n=0和n=1的情况

ural 1019
wa1次,因为统计的时候,最后有一种情况没有考虑

ural 1021
用hash的弱题,但是由于没有判断范围,wa一次。。。

ural 1022
拓扑排序,弱题

ural 1025
弱题

ural 1026
弱题,排序

ural 1048
开始用高精度mle,其实用压位高精longint也应该可以的
后来看看别人的讲解,突然发现译题有问题,输出有规定,一定是n位,于是乎就可以一位一位地处理。但是开始以为规定n位就不存在9进位的问题,可是后来在test4错了,然后又回来看论坛,发现还是要处理9的问题:
c 计算连续9出现的次数
a 前一个不是9的数
b 当前位的x+y
if b=9 then inc(c);
if b<9 then 输出a99...99(c个9)
if b>9 then 输出(a+1)0000(c个0)

to be continued...

最新评论

发表评论

*昵称

已经注册过? 请登录

Email
网址
*评论