SHTSC记 13.10.06
2013-10-13 11:53
176 查看
首先还是上次课的答案
例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
讲完之后还兴致勃勃地自己写了些标程。。
未完待续
例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
讲完之后还兴致勃勃地自己写了些标程。。
未完待续
相关文章推荐
- java的正确思路!
- 重启nginx后丢失nginx.pid,如何重新启动nginx
- java 三层架构ssh
- 英语写作模板(适合高考、四六级英语和考研英语)
- public private 和protected 继承
- 1
- 学习java的方案!!
- 小问题大思考之C++里的inline函数
- Sqrt等函数的妙用之性能测试对比
- Oil Deposits
- 第九周项目2-用if-else语句求应缴税和税后收入
- Single Number [LEETCODE]
- 详解udev
- XmlnsDefinitionAttribute Is Pretty Nifty
- 极化SAR图像基础知识(2)
- Tempter of the Bone
- java的学习法测!
- HD Tune Pro: WDC WD1600AAJS-00B8D 160g inMyRitMachi
- 连接各种数据库语句
- Gnome Tetravex