【解题报告】[动态规划] RQNOJ - PID105 / 核电站问题
2024-08-27 01:43:10
原题地址:http://www.rqnoj.cn/problem/105
解题思路:
状态表示:
数组dp[i][j]中的j拆成M位二进制(后缀B表示)。
如:M=3时
dp[5][000B]表示第3,4,5都不放核物质的情况的总数。显然,dp[5][000B]=dp[5][001B]=dp[4][000B]+dp[4][100B]。特殊的是dp[i][111B]=0。
初始状态:
dp[0][000B]=dp[0][001B]=1,dp[0][i]=0(001B<i<=111B)
状态转移方程:
dp[i][j]=dp[i-1][ (j>>1) + (1<<(N-1)) ]+dp[i-1][j>>1]。 0<=j<((1<<n)-1)
解题代码:
#include<stdio.h>
#include<iostream>
using namespace std;
long long dp[][]={,};
int main()
{
long long n,m,i,j;
scanf("%lld%lld",&n,&m);
for(i=;i<n;i++)
{
for(j=;j<((<<m)-);j++)
{
dp[i][j]=dp[i-][(j>>1LL)+(<<(m-1LL))]+dp[i-][j>>1LL];
}
}
i--;
long long s=;
for(j=;j<((<<m)-);j++)
{
s+=dp[i][j];
}
printf("%lld\n",s);
return ;
}
最新文章
- ASP.NET Core的路由[4]:来认识一下实现路由的RouterMiddleware中间件
- AngularJs之七
- PSI and index do not match: PSI and index do not match
- Socket Receive 避免 Blocking
- EL表达式的使用
- scichart by Kline
- linux 之常见的好用命令
- 从原理上搞定编码-- Base64编码
- android的Log日志打印管理工具类(一)
- 如何对Javascript代码进行二次压缩(混淆)
- SSL协议之数据加密过程详解
- Servlet不再是烦恼
- Android打造完美的刮刮乐效果控件
- 20 【python】入门指南:常用数据结构
- InvalidateRect,invalidate,updatewindow(转)
- 逻辑回归应用之Kaggle泰坦尼克之灾
- 安装VMware-tools时,一直停在“The path ";"; is not valid path to the gcc binary.”
- 在一台服务器上搭建多个项目的SVN
- myeclipse删除项目后重新导入
- 鸡肋提权之变态root利用
热门文章
- 传说中的WCF(6):数据协定(b)
- SSH开发实践part1:Spring与Hibernate整合
- angularJS之$watch、$digest和$apply方法
- yarn介绍
- JavaPersistenceWithHibernate第二版笔记Getting started with ORM-001用JPA和Hibernate实现HellowWorld(JTA、Bitronix)
- Qt之图形(Source和Dest相互覆盖的取舍,真的很方便)
- 使用原生JavaScript
- 屏幕实战效果解析:IPS/TFT/AMOLED/SLCD
- jQuery-瀑布流-绝对定位布局(二)(延迟AJAX加载图片)
- Java —— 时区(夏令时)问题