核电站问题(递推)
2016-06-21 17:37
281 查看
记f[i]为第i个坑时的方案数。f[0]=1,因为没有坑只有一种方案。
很明显每个坑有两种决策:放,或者不放。
所以f[i] = f[i - 1] * 2。
但只对于i < m成立,因为当i >= m时就要考虑爆炸的问题了。
所以当i > m时,f[i] = f[i - 1] * 2 - f[i - m - 1],这里-f[i - m - 1]代表不能放的方案数。
很明显每个坑有两种决策:放,或者不放。
所以f[i] = f[i - 1] * 2。
但只对于i < m成立,因为当i >= m时就要考虑爆炸的问题了。
所以当i > m时,f[i] = f[i - 1] * 2 - f[i - m - 1],这里-f[i - m - 1]代表不能放的方案数。
#include<cstdio> #include<algorithm> #define ll long long using namespace std; ll n,m,f[100]; int main() { scanf("%lld%lld",&n,&m); f[0]=1; for (int i=1;i<=n;i++) { f[i]=f[i-1]*2; if (i-m-1>=0) f[i]-=f[i-m-1]; else if (i-m-1==-1) f[i]-=1; } printf("%lld",f ); return 0; }
相关文章推荐
- iOS 获取当前月份一共多少天 ,获取当前某年某月某日, 当前日期星期几
- SpringMVC使用@ResponseBody时返回json的日期格式及可能产生的问题
- Spring笔记(七)
- Javascript——流程控制语句
- android 获取栈顶activty的方法总结(兼容API 5.0)
- 关于Android适配华为等带有底部虚拟按键的解决方案
- Android studio gradle配置
- 百度开放云物接入IoT--MQTT测试
- Underscore学习(1)
- 4.【数组】
- 观察者模式(Observer)
- xmlns:baofooattrs="http://schemas.android.com/apk/res/com.XXXX"
- js 字符串首字母大写
- 支持ie8单选框与复选框自定义样式
- android 获取栈顶activty的方法总结(兼容API 5.0)
- android 获取栈顶activty的方法总结(兼容API 5.0)
- huapin
- Objective的字符串拼接 似乎没有Swift方便,但也可以制做一些较为方便的写法
- windbg加载sos.dll
- 关于数据库order by 的优化