Tyvj P3119 核电站问题 动态规划

题目:http://tyvj.cn/p/3119

P3119 核电站问题

时间: 1000ms / 空间: 65536KiB / Java类名: Main

描述

  一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。 
  任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数

输入格式

  输入文件只一行,两个正整数N,M( 1

输出格式

  输出文件只有一个正整数S,表示方案总数。

测试样例1

输入

4 3

输出

13

题解:

动态规划

f[i][j]为到第i个,放了j个爆炸物的方案数。

数学方法不行QAQ

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long
 4 LL f[55][6];
 5 int main()
 6 {
 7     freopen("nucle.in","r",stdin);
 8     freopen("nucle.out","w",stdout);
 9     LL ans,n,m,i,j,k;
10     scanf("%lld %lld",&n,&m);
11     memset(f,0,sizeof(f));//f[i][j]为到第i个,放了j个爆炸物的方案数.
12     f[1][0]=f[1][1]=1;
13     for(i=2;i<=n;i++)
14     {
15         for(j=0;j<m;j++)f[i][0]+=f[i-1][j];
16         for(j=0;j<m;j++)f[i][j]+=f[i-1][j-1];
17     }
18     ans=0;
19     for(i=0;i<m;i++)ans+=f[n][i];
20     printf("%lld",ans);
21     /*错误的数学方法
22     for(i=1;i<=n;i++)ans*=2;
23     k=n-m+1;
24     if(k<=0)printf("%lld",ans);
25     else
26     {
27         for(i=k;i>=1;i--)ans-=i;
28         printf("%lld",ans);
29     }*/
30     return 0;
31 }
时间: 2024-11-05 15:54:40

Tyvj P3119 核电站问题 动态规划的相关文章

TYVJ P1013 找啊找啊找GF Label:动态规划

做题记录:2016-08-15 22:19:04 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊..."七夕...七夕...七夕这个日子,对于sqybi这种单身的菜鸟来说是多么的痛苦...虽然他听着这首叫做"找啊找啊找GF"的歌,他还是很痛苦.为了避免这种痛苦,sqybi决定要给自己找点事情干.他去找到了七夕模拟赛的负责人zmc MM,让她给自己一个出题的任务.经过几天的死缠烂

[SinGuLaRiTy] 动态规划题目复习

[SinGuLaRiTy-1026] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. [UVA 1025] A Spy in the Metro 题目描述 特工玛利亚被送到S市执行一个特别危险的任务.她需要利用地铁完成他的任务,S市的地铁只有一条线路运行,所以并不复杂. 玛利亚有一个任务,现在的时间为0,她要从第一个站出发,并在最后一站的间谍碰头.玛利亚知道有一个强大的组织正在追踪她,她知道如果一直呆在一个车站,她会有很大的被抓的风险,躲

【TYVJ P1014】乘法游戏

时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 太原成成中学第2次模拟赛 第四道 描述 乘法游戏是在一行牌上进行的.每一张牌包括了一个正整数.在每一个移动中,玩家拿出一张牌,得分是用它的数字乘以它左边和右边的数,所以不允许拿第1张和最后1张牌.最后一次移动后,这里只剩下两张牌.    你的目标是使得分的和最小.    例如,如果数是10 1 50 20 5,依次拿1.20.50,总分是                       10*1*50+50*2

经典的动态规划

有一个动态规划100例...看到机房里shenben的复习资料...加上垃圾的dp....整理一下. 一.资源分配问题 tyvj 1203 机器分配 题目大意:有m个设备,n个公司,v[i][j]表示第i个公司分j个设备的贡献值.怎样分配使贡献值的和最大? 状态:前i个公司分j个设备. f[i][j]表示前i个公司分j个设备,枚举第i个公司分k个设备. 状态转移方程:f[i][j]=max{f[i-1][j-k]+v[i][k]} 这个还挺简单的. 洛谷P2736 "破锣摇滚"乐队 R

Leetcode 494 Target Sum 动态规划 背包+滚动数据

这是一道水题,作为没有货的水货楼主如是说. 题意:已知一个数组nums {a1,a2,a3,.....,an}(其中0<ai <=1000(1<=k<=n, n<=20))和一个数S c1a1c2a2c3a3......cnan = S, 其中ci(1<=i<=n)可以在加号和减号之中任选. 求有多少种{c1,c2,c3,...,cn}的排列能使上述等式成立. 例如: 输入:nums is [1, 1, 1, 1, 1], S is 3. 输出 : 5符合要求5种

活动选择的贪心算法与动态规划(未完成)

// greedy_algorithm.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include<queue> using namespace std; #define NofActivity 11 int c[NofActivity + 1][NofActivity + 1]; int reme[NofActivity + 1][NofActivity + 1]; //活动的

473. 核电站问题

473. 核电站问题 ★   输入文件:nucle.in   输出文件:nucle.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] 一个核电站有 N 个放核物质的坑,坑排列在一条直线上.如果连续 M 个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定的 N 和 M ,求不发生爆炸的放置核物质的方案总数. [输入格式] 输入文件(nucle.in)只一行,两个正整数 N , M( 1<N<50 , 2 ≤ M ≤ 5) [输出格式]

求不相邻金币相加和的最大值--动态规划1

求不相邻金币相加和的最大值. 输入n个金币的金币面值(正数自定义),求这些金币不相邻和的最大值. 动态规划问题1 设f(n)为第n个金币数的最大值,f(0)=0,f(1)=a[1],输入的数组从下标为1开始. f(n)=max{a[n]+f(n-2),f(n-1)}. 代码如下: import java.util.Scanner; public class Jin_bi_zui_da_zhi { public static void main(String[] args) { Scanner s

TYVJ 2049 魔法珠 sg函数

题意:链接 方法:sg函数 解析: tyvj的题大部分都没题解啊- - 不过这样貌似会更好?感觉做这的题都需要自己动脑啊- - 虽然嘴上说着好烦然而心里觉得好评? 回归正题 设sg[x]表示数x的sg值,这好像是废话 然后对于读入的a[i],将所有的a[i]的sg值异或起来如果不是零则先手赢反之后手 维护的时候有个坑. 每次求约数的时候,数组要在sg里开,因为如果递归下去的话,全局变量的话会被更改,会被坑死. 然后就是怎么维护了 对于x,先求约数 之后枚举哪个数不取,将其他的异或(或者先都异或起