古韵之乞巧 题解 dp题
描述
闺女求天女,更阑意未阑。
玉庭开粉席,罗袖捧金盘。
向月穿针易,临风整线难。
不知谁得巧,明旦试相看。
——祖咏《七夕》
女子乞巧,是七夕的重头戏。古时,女子擅长女红被视为一种重要的德行。所以女孩子们纷纷在七夕这天祈求上天,是自己变得更加灵巧。仰头凝视,以虔诚的心去膜拜桂魄;双手合十,用坚定信念去盼望未来,祈求能有更出众的才能。一根针、一丝线、一轮月、一束影,组成了一个简单的乞巧仪式。
“年年岁岁花相似,岁岁年年人不同。”千百年后的今天,女孩子们更加看重自己的才华与能力。韵哲君参加了一个新乞巧活动:
韵哲君发现自己的面前有一行数字,当她正在琢磨应该干什么的时候,这时候,陈凡老师从天而降,走到了韵哲君的身边,低下头,对她耳语了几句,然后飘走了。
陈凡老师说了什么呢,且听下回分解。
接上回书,陈凡老师原来对韵哲君说了这些话:“还记得我传授给你的不下降子序列吗?你现在只要找出一定长度的不下降子序列的种数,你就完成任务了。”
输入
第一行有两个整数N(0<N<=100),M(0<M<=20);
N表示给出多少个整数,M表示给出的定长;
第二行有N个整数,对于每个数字(-10000<=T[i]<=10000)。
输出
输出一个整数,在给出的数列中定长不下降子序列的种数。
输入样例 1
10 5
1 2 3 4 5 6 7 8 9 10
输出样例 1
252 网址:http://dingbacode.com/contest/19/problem/D 不下降子序列,就是任选几个数,后面数大于等于前面的数,就是 “不下降子序列” 了。 dp题,类似于背包,开一个数组 dp[] dp[i]代表以i为结尾的序列 当前长度 的个数(当前长度由dp的外循环确定,当外循环到5时,即长度到了5)。 很明显的是,当长度为1时,dp的值均为1,在读入值得时候顺便完成。 然后是核心代码:
for(int i=2;i<=m;i++) //做一个循环,2 到 m ,代表长度从2到5的递推(1 已确定)
{
for(int k=n;k>i-1;k--) //更新从 n 到 i 的dp,小于 i 的由于 当长度为i时 ,必为0,所以无需更新。注意反向更新,理由同背包,这是01背包而非完全背包
{
dp[k]=0; // 将该数归零,因为其后会受其影响的已经确定,以k为末尾的序列已经累加到后面的 dp 中。
for(int j = i-1;j < k; j++) // 遍历k前面的dp,因为 i-1 前面的数,在长度为 i -1 时必然为0,所以无需累加到 dp[k] 上
{
if(a[k]>=a[j]) //判断是否不下降
dp[k]+=dp[j]; //将长度为 i-1 的序列连上 k ,成为 i 长度的序列,累加到 dp[k] 上。
}
}
}
然而这样做之后,还是会有一个点 wa,
这是后就要想到数大小的问题,将 dp 和 sum开为long long 后,就ac了。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <time.h>
#include <string>
#include <map>
#include <stack>
#include <vector>
#include <set>
#include <queue>
#define INF 0x3f3f3f3f
using namespace std;
const int N=;
long long dp[N];
int n,m,a[N]; int main()
{
// freopen("input.txt","r",stdin);
cin>>n>>m;
for(int i=;i<=n;i++)
{
cin>>a[i];
dp[i]=;
}
for(int i=;i<=m;i++)
{
for(int k=n;k>i-;k--)
{
dp[k]=;
for(int j=i-;j<k;j++)
{
if(a[k]>=a[j])
dp[k]+=dp[j];
}
}
}
long long ans=;
for(int i=m;i<=n;i++)
ans+=dp[i];
cout<<ans;
return ;
}
古韵之乞巧 题解 dp题的更多相关文章
- 【noip模拟赛1】古韵之乞巧 (dp)
描述 闺女求天女,更阑意未阑. 玉庭开粉席,罗袖捧金盘. 向月穿针易,临风整线难. 不知谁得巧,明旦试相看. ——祖咏<七夕> 女子乞巧,是七夕的重头戏.古时,女子擅长女红被视为一种重要的 ...
- 4817 江哥的dp题d
4817 江哥的dp题d 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 已知1-N的排列P的LIS(最长上 ...
- 4809 江哥的dp题c
4809 江哥的dp题c 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有两个数x,y,一开始x=1,y= ...
- 4816 江哥的dp题b
4816 江哥的dp题b 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给出两个1-N的随机排列A,B.若 ...
- 4815 江哥的dp题a
4815 江哥的dp题a 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给出一个长度为N的序列A(A1,A ...
- cf1061c 普通dp题
题解见https://blog.csdn.net/godleaf/article/details/84402128 这一类dp题是可以压缩掉一维空间的,本题枚举a1到an,枚举到ai时枚举ai的每个约 ...
- [DP题]吃糖果
1944:吃糖果 总时间限制:1000ms内存限制:65536kB 描述 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0).妈妈告诉 ...
- [DP题]采药
1775:采药 总时间限制:1000ms内存限制:65536kB 描述 辰辰是个很有潜能.天资聪颖的孩子,他的梦想是称为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给 ...
- [DP题]最长上升子序列
最长上升子序列 总时间限制:2000ms 内存限制:65536kB 描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的.对于给定的一个序列( ...
随机推荐
- ES6系列之箭头函数
本系列是在平时阅读.学习.实际项目中有关于es6中的新特性.用发的简单总结,目的是记录以备日后温习:本系列预计包含let/const.箭头函数.解构.常用新增方法.Symbol.Set&Map ...
- [STM32F103]DMA原理
DMA配置程序过程 使能DMA时钟 a) RCC_AHBPeriphClockCmd(); 初始化DMA通道参数 a) DMA_Init(); 使能串口DMA发送,串口DMA使能函数: a) USAR ...
- 数据库事务的四大特性以及事务的隔离级别(mysql)
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...
- LinuxMint 下 B站 番 blv 缓存 转 mp4
参考https://www.littleqiu.net/archives/886 (不过我使用绝对路径,ffmpeg报错,相对路径没问题) 一.安装ffmpge sudo apt-get instal ...
- springboot学习随笔(三):Controller参数映射
接上章内容,我们看看浏览器参数如何映射到我们的Controller层 我们新建UserController和User实 User.java package com.example.main; impo ...
- ESLint具体规则设置
"no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 & ...
- python杂记二
1. 写文件可以直接使用print函数 file_name = open("file_name.txt","w") print("file conta ...
- html:input的type=number的时候maxlength失效问题
<input type="text" maxlength="5" /> 效果ok,当 <input type="number& ...
- Json、JavaBean、Map、XML之间的互转
思路是JavaBean.Map.XML都可以用工具类很简单的转换为Json,进而实现互相转换 1.Map.XML与Json互转 mvn依赖 <dependency> <groupId ...
- java swing button和键盘监听冲突问题
原因: 点击button会让jframe失去焦点,然后键盘监听不起作用 解决: 让jframe重新获取焦点就行了 jf.setFocusable(true); // JFrame jf = new J ...