[jzoj]2938.【NOIP2012模拟8.9】分割田地
Link
https://jzoj.net/senior/#main/show/2938
Description
地主某君有一块由2×n个栅格组成的土地,有k个儿子,现在地主快要终老了,要把这些土地分给这些儿子。分给每个儿子的土地最小的单位是一个栅格,同时,分给同一个儿子的土地要求要相邻连续的。地主觉得分给某个儿子的土地面积至少有一个栅格,但是具体多少可以随意。
请问,聪明的你,能够算出地主一共有多少种分土地的方法吗?也就是说要求把2*n的栅格分成k个连通区域,每个区域至少有一个栅格。
Solution
10~90分
应该都是正解某些细节没有处理好,或者可以打个递归暴力做一下,可以得到少量的分数
100分
这道题是道很好的DP题目,准确来说是递推,因为它有许多情况需要讨论。
我们设f[i,k,0/1]表示你选到第i列,其中分配给k个儿子,第i列两个栅格分配给不同一个儿子为0,反之,为1。
关键是很难想到转移。
其中有9种情况,其实应该有12种情况,因为有的,状态一样,但是情况不一样。
[1]、f[i,k,0]:=f[i,k,0]+f[i-1,k-2.0]
[2]、f[i,k,0]:=f[i,k,0]+f[i-1,k-2,1]
[3]、f[i,k,0]:=f[i,k,0]+f[i-1,k-1,1]*2
[4]、f[i,k,0]:=f[i,k,0]+f[i-1,k-1,0]*2
[5]、f[i,k,0]:=f[i,k,0]+f[i-1,k,0]
[6]、f[i,k,1]:=f[i,k,1]+f[i−1,k−1,0]
[7]、f[i,k,1]:=f[i,k,1]+f[i-1,k-1,1]
[8]、f[i,k,1]:=f[i,k,1]+f[i-1,k,0]*2
[9]、f[i,k,1]:=f[i,k,1]+f[i-1,k,1]
状态怎么来呢?与前一列的状态有关,具体可以分成如下9种。盗用别人的图片

自己手推一下,非常容易可以的出来,故本题就迎刃而解了。没有想到递推如此强大。
Code
uses math;
const
maxn=;
var
n,m,i,k:longint;
f:array[..,-..,..] of int64;
begin
readln(n,m); f[,,]:=;
f[,,]:=; for i:= to n do
for k:= to min(i*,m) do
begin
f[i,k,]:=(f[i,k,]+f[i-,k-,]+f[i-,k-,]+f[i-,k-,]*+f[i-,k-,]*+f[i-,k,]) mod maxn;
f[i,k,]:=(f[i,k,]+f[i-,k-,]+f[i-,k-,]+f[i-,k,]*+f[i-,k,]) mod maxn;
end; writeln((f[n,m,]+f[n,m,]) mod maxn); writeln(chr());
end.
[jzoj]2938.【NOIP2012模拟8.9】分割田地的更多相关文章
- JZOJ【NOIP2012模拟8.9】2020.10.5 T1
逐个击破 题目 Description 三大战役的平津战场上,傅作义集团在以北平.天津为中心,东起唐山西至张家口的铁路线上摆起子一字长蛇阵,并企图在溃败时从海上南逃或向西逃窜.为了就地歼敌不让其逃走, ...
- 洛谷P3145 [USACO16OPEN]分割田地Splitting the Field
P3145 [USACO16OPEN]分割田地Splitting the Field 题目描述 Farmer John's NN cows (3 \leq N \leq 50,0003≤N≤50,00 ...
- JZOJ【NOIP2013模拟联考14】隐藏指令
JZOJ[NOIP2013模拟联考14]隐藏指令 题目 Description 在d维欧几里得空间中,指令是一个长度为2N的串.串的每一个元素为d个正交基的方向及反方向之一.例如,d = 1时(数轴) ...
- 【NOIP2012模拟8.7】JZOJ2020年8月8日提高组T1 奶牛编号
[NOIP2012模拟8.7]JZOJ2020年8月8日提高组T1 奶牛编号 题目 作为一个神秘的电脑高手,Farmer John 用二进制数字标识他的奶牛. 然而,他有点迷信,标识奶牛用的二进制数字 ...
- [jzoj 6092] [GDOI2019模拟2019.3.30] 附耳而至 解题报告 (平面图转对偶图+最小割)
题目链接: https://jzoj.net/senior/#main/show/6092 题目: 知识点--平面图转对偶图 在求最小割的时候,我们可以把平面图转为对偶图,用最短路来求最小割,这样会比 ...
- [jzoj 5664] [GDOI2018Day1模拟4.6] 凫趋雀跃 解题报告(容斥原理)
interlinkage: https://jzoj.net/senior/#contest/show/2703/3 description: solution: 考虑容斥原理,枚举不合法的走的步数 ...
- [jzoj 6101] [GDOI2019模拟2019.4.2] Path 解题报告 (期望)
题目链接: https://jzoj.net/senior/#main/show/6101 题目: 题解: 设$f_i$表示从节点$i$到节点$n$的期望时间,$f_n=0$ 最优策略就是如果从$i, ...
- [jzoj 6093] [GDOI2019模拟2019.3.30] 星辰大海 解题报告 (半平面交)
题目链接: https://jzoj.net/senior/#contest/show/2686/2 题目: 题解: 说实话这题调试差不多花了我十小时,不过总算借着这道题大概了解了计算几何的基础知识 ...
- [jzoj 6080] [GDOI2019模拟2019.3.23] IOer 解题报告 (数学构造)
题目链接: https://jzoj.net/senior/#main/show/6080 题目: 题意: 给定$n,m,u,v$ 设$t_i=ui+v$ 求$\sum_{k_1+k_2+...+k_ ...
随机推荐
- qt: 系统默认程序打开文件或者软件;
Qt提供了QDesktopServices类, 可以利用openUrl函数调用默认程序打开文件: 源码参考: #ifdef Q_OS_WIN32 m_szHelpDoc = QString(" ...
- mac安装postman
[在线方式]: 1. chrome扩展中搜postman,选择Postman Interceptor 添加到chrome. 2.安装完毕后,点击地址栏右边对应的按钮 点击 Postman Chrome ...
- 【.net】ASP.Net设置和取消设置web项目起始页
#在visual studio中设置和取消web项目的起始页 方法一:在所要设置的页面上右键->设为起始页 方法二:web项目上右键->属性页 website项目: tips:如果取消要取 ...
- Java多线程:向线程传递参数的三种方法
在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程 ...
- 2018-2019-2 《Java程序设计》第1周学习总结
# 20175319 2018-2019-2 <Java程序设计>第1周学习总结 ## 教材学习内容总结 第一周我根据老师提供的博客,下载和设置了各种需要的软件,并对这些软件进行初步的了解 ...
- [再寄小读者之数学篇](2014-05-23 $\ln x-ax=0$ 有两个根时的估计)
已知函数 $f(x)=\ln x-ax$, 其中 $a$ 为常数. 如果 $f(x)$ 有两个零点 $x_1,x_2$. 试证: $x_1x_2>e^2$. 证明: 由 $$\bex \ln x ...
- Collections.unmodifiableMap(Map map)
public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)返回指定映射 ...
- HTML常用知识点代码演示
1 HTML部分常用知识点 <!-- 版本声明 --> <!DOCTYPE html> <!-- 唯一根元素 --> <html> <!-- 对网 ...
- PHP循环语句深度理解分析——while, for, foreach, do while
循环结构 一.while循环 while(表达式) { 循环体;//反复执行,直到表达式为假 } 代码: $index = 1; while ($index<5) { ...
- 封装ajax,让调用变得简单优化
思考一下: 通常我们在使用ajax来发送接口请求时,每一次都会调用ajax固定的元素,比如data.url.method.success.error等.那么我们想一下能不能先把ajax封装起来,在每次 ...