SHTSC记 13.10.06
来源:互联网 发布:网络上有重名怎么办 编辑:程序博客网 时间:2024/06/06 09:38
首先还是上次课的答案
例1 设d(i,j)为从i到j的答案,所求即为d(0,n-1)转移是这样的
i>=j 0
s[i]==s[j] 则为d(i+1,j-1)
s[i]!=s[j] min(d(i,j-1),d(i+1,j))+1
这题基本属于会的秒杀,不会的肯定做不出
例2 T37
设f(i,j)为这个区间先手拿的最大值,所求即为f(1,n)
f(i,j)=max(a[i]+g(i+1,j),a[j]+g(i,j-1))
g(p,q)为这个区间后手拿的最大值
g(i,j)=s[j]-s[i-1]-f(i,j)
f(i,j)=max(s[j]-s[i]-f(i+1,j)+a[i],s[j-1]-s[i-1]-f(i,j-1)+a[j])
=max( s[j]-s[i-1]-f(i+1,j) , s[j]-s[i-1]-f(i,j-1) )
=s[j]-s[i-1] -min(f(i,j-1),f(i+1,j))
边界:f(i,i)=a[i]
例3 石子合并
线形版
法1 f(i,j)为区间答案 f(i,j)=min( f(i,k) + f(k+1,j) ) i<=k<j +a[i]+...+a[j]
法2 f(i,l)为i为起点l为长度的答案,f(i,l)=min ( f(i,k)+ f(k+i,l-k) ) 1<=k<l + a[i]+..a[i+l-1]
环状版
法1就比较麻烦了,要写两遍数组?
法2 f(i,l)=min ( f(i,k) + f( (k+i-1) % n +1 ,l-k) ) 1<=k<l +a[i]+..+a[l+i-1] (具体实现应该要讨论)
例4 T39
32^100000 mod 71
由 费马小定理 32^70 =1 mod 71
原式=32^40 mod 71
=2^200 mod 71
=2^60 mod 71
=2^ -10 mod 71
=1024 ^-1 mod 71
=30 在mod71下的逆
即求 30*ans=1 mod 71
30*ans + 71 * y=1
exgcd即可
10月6号貌似马融没迟到,不过上中的神犇们都没来(学校补课?)
余爷爷还问我:你是上中的?我。。。
讲的背包问题
例1 给出一个集合S求所有的子集和
用的是P的布尔数组,应该有点慢吧,自己用了set试试,搞了半天搞不出。。
例2 01背包
直接上滚动数组,还说他认为这个好理解。。
然后介绍的二维数组解法
例3 T44
自己曾做过,效率极低但还是过了,用背包问题来解效率高了很多 //USACO能不能控制下打表的问题
例4 T45
例5 T46
例6 T47
例7 T28
讲完之后还兴致勃勃地自己写了些标程。。
未完待续
- SHTSC记 13.10.06
- SHTSC记 13.10.19
- SHTSC记 13.10.26
- SHTSC记 13.9.14
- SHTSC记 13.9.21
- SHTSC记 13.11.16
- SHTSC记 13.11.23
- SHTSC记 13.11.30
- SHTSC记 13.12.07
- SHTSC记 13.12.14
- SHTSC记 13.12.28
- SHTSC记 14.01.04
- SHTSC 2013 的点点滴滴
- [SHTSC 2012] 信用卡凸包
- [BZOJ 3553/3554/3562/3564/3565/3566][SHTSC/HBOI 2014]解题报告
- 06国庆登南山记
- 犀牛书随手记-06
- Python探索记(06)——while
- 笔试题目:顺时针打印矩阵
- IIS6设置网站经常遇到的问题详解
- 第七周 求两个电阻并联后的阻值的程序
- 实际项目中Memcached共通开发
- spoj 1043. Can you answer these queries I (线段树)
- SHTSC记 13.10.06
- 图文例解C++类的多重继承与虚拟继承
- 导出figure为jpg、tiff等适合论文使用的图片
- 测试array[pos++]
- Python字符编码详解
- 看我七十二辩
- HDU 2546 饭卡
- 工作计划及进度安排
- lua的table长度问题