基础dp 记录
51nod 1134 最长递增子序列
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rep(i,l,r) for (int i=l; i<=r; i++)
typedef long long ll;
using namespace std;
const int N = 5e4+;
int n, s[N];
int dp[N]; int main(){
freopen("in.txt","r",stdin);
//freopen("a.out","w",stdout); scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d", &s[i]);
memset(dp,0x3f,sizeof(dp));
for(int i=;i<=n;i++) {
int l = lower_bound(dp+,dp++N,s[i])-(dp);
dp[l] = s[i];
}
int ans = lower_bound(dp+,dp++N,0x3f3f3f3f)-dp -;
cout << ans<<endl;
return ;
}
51nod 1050 循环数组最大子段和
考虑 成环的一个最大字段和 要么是正常的字段和 要么是整个环的总和 - (负的最大的 最小子段和)
#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e4+;
int a[maxn],b[maxn],n;
typedef long long ll; ll solve (int *s)
{
ll ans =,res =;
for(int i=;i<n;i++)
{
ans+=s[i];
res = max(res,ans);
if(ans < )
ans =;
}
return res;
} int main ()
{ scanf("%d",&n);
ll res=;
for(int i=;i<n;i++)
{
scanf("%d",&a[i]);
b[i] = -a[i];
res += a[i];
}
ll ans1= solve(a),ans2=solve(b);
res= max(ans1,res+ans2);
printf("%lld\n",res);
return ;
}
51nod 1183 编辑距离
dp[i][j] 表示s1[i]和s2[j] 匹配好的,最小需要的花费
所以 dp[i][j] = min ( dp[i-1][j] + 1 //把s1[i] 删除 或者 添加s2[j]
dp[i][j-1] + 1 //把s2[j] 删除 或者 添加 s1[i]
dp[i-1][j-1] + (s1[i]==s2[j]) // 是否需要修改
#include <iostream>
#include <cstring>
#include <string.h>
using namespace std;
char s1[],s2[]; int dp[][]; int min(int a,int b,int c) {
if(b < a)
a = b;
return min(a,c);
} int main () {
scanf("%s %s", s1+, s2+);
int l1 = strlen(s1+);
int l2 = strlen(s2+);
memset(dp,0x3f,sizeof(dp));
for(int i=;i<=l1;i++)
dp[i][] = i;
for(int i=;i<=l2;i++)
dp[][i] = i; for(int i=; i<=l1; i++) {
for(int j=; j<=l2; j++) {
dp[i][j] = min(dp[i-][j]+,
dp[i][j-]+,
(dp[i-][j-]+(s1[i]!=s2[j]?:)));
//printf("%d ",dp[i][j]);
}
//puts("");
}
cout << dp[l1][l2] <<endl;
return ;
}
51nod 1051 最大子矩阵和
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
const int N = ;
int n,m;
ll s[N][N], sum[N][N]; int main ()
{
scanf("%d %d", &m, &n);
for(int i=;i<=n;i++) {
for(int j=;j<=m;j++) {
scanf("%lld", &s[i][j]);
}
}
//保存每行的信息
for(int i=;i<=n;i++) {
for(int j=;j<=m;j++) {
sum[i][j] = sum[i][j-] + s[i][j];
}
}
ll mx = ;
for(int len=;len<=m;len++) {
for(int i=;i+len-<=m;i++) { //[i,j]i列到j列
int j = i+len-;
ll ans = ;
ll res = ;
for(int k=;k<=n;k++) {
//mx = max();
ans += sum[k][j] - sum[k][i-];
if(res < ans) res = ans;
if(ans < ) ans=;
}
mx = max(res,mx);
}
}
cout << mx <<endl;
return ;
}
51nod 1086 背包问题 V2
#include <bits/stdc++.h>
using namespace std; const int MAXW = +;
const int N = ;
typedef long long ll;
ll dp[MAXW];
int v[N],val[N],cnt[N];//体积 价值 数量 int n,w;
int main () {
//freopen("in.txt","r",stdin);
scanf("%d %d", &n, &w);
for(int i=;i<=n;i++) {
scanf("%d %d %d", &v[i], &val[i], &cnt[i]);
}
for(int i=;i<=n;i++) {
if(cnt[i]*v[i]>= w) {
for(int j=v[i]; j<=w; j++) {
dp[j] = max(dp[j], dp[j-v[i]] + val[i]);
}
}else {
int k=, tot = cnt[i];
while(k<tot) {
for(int j=w; j>=k*v[i]; j--) {
dp[j] = max(dp[j], dp[j-k*v[i]]+k*val[i]);
}
tot-=k;
k<<=;
}
for(int j=w;j>=tot*v[i];j--) {
dp[j] = max(dp[j], dp[j-tot*v[i]]+val[i]*tot);
}
}
}
cout << dp[w] <<endl;
return ;
}
51nod 1101 换零钱
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
const int mod = 1e9+;
const int N = ;
int coin[] ={,,,,,,,,,,,,};
ll dp[N]; int main () {
int n;
scanf("%d",&n);
dp[] =;
for(int i=; i<; i++) {
for(int j=coin[i]; j<=n; j++) {
dp[j] = (dp[j] + dp[j-coin[i]])%mod;
}
}
cout << dp[n] <<endl;
return ;
}
51nod 1270 数组的最大代价
dp[i][0] : 表示当前A[i] 为1的最大代价
dp[i][1] : 表示当前A[i] 为B[i]的最大代价
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
const int N =+; ll b[N],dp[N][]; int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%lld",&b[i]);
for(int i=;i<=n;i++) {
dp[i][] = max(abs(-)+dp[i-][], abs(-b[i-])+dp[i-][]);
dp[i][] = max(abs(b[i]-)+dp[i-][], abs(b[i]-b[i-])+dp[i-][]);
}
cout << max(dp[n][], dp[n][])<<endl;
}
基础dp 记录的更多相关文章
- 基础dp
队友的建议,让我去学一学kuangbin的基础dp,在这里小小的整理总结一下吧. 首先我感觉自己还远远不够称为一个dp选手,一是这些题目还远不够,二是定义状态的经验不足.不过这些题目让我在一定程度上加 ...
- 「kuangbin带你飞」专题十二 基础DP
layout: post title: 「kuangbin带你飞」专题十二 基础DP author: "luowentaoaa" catalog: true tags: mathj ...
- C#基础知识记录一
C#基础知识记录一 static void Main(string[] args) { #region 合并运算符的使用(合并运算符??) 更多运算符请参考:https://msdn.microsof ...
- DataBase MongoDB基础知识记录
MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...
- MarkDown基础语法记录
基础语法记录,其中有一些博客园暂不支持 <!--标题--> # 一级标题 # ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 一级标题 ...
- 基础DP(初级版)
本文主要内容为基础DP,内容来源为<算法导论>,总结不易,转载请注明出处. 后续会更新出kuanbin关于基础DP的题目...... 动态规划: 动态规划用于子问题重叠的情况,即不同的子问 ...
- PAT L3-001 凑零钱(01背包dp记录路径)
韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有104枚来自各个星球的硬币,需要请你帮她盘算一下,是 ...
- hdu 5586 Sum 基础dp
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Desc ...
- MongoDB基础知识记录
MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...
随机推荐
- 【python-opencv】22-直方图
直方图目录: 22.1 直方图的计算,绘制与分析 22.1.1 统计直方图 22.1.2 绘制直方图 22.1.3 使用掩膜(遮罩) 22.2 直方图均衡化 22.2.1 OpenCV中的直方图均衡化 ...
- Python装饰器与面向切面编程(转)
add by zhj: 装饰器的作用是将代码中可以独立的功能独立出来,实现代码复用,下面那个用于统计函数运行时间的装饰器就是很好的例子,我们不用修改原有的函数和调用原有函数的地方,这遵循了开闭原则.装 ...
- django的contenttype表
https://blog.csdn.net/aaronthon/article/details/81714496 这篇文章已经非常详细了,供自己以后忘了...回看...... 总结: 当一张表和多个表 ...
- git clone远程branch和tag
1.查看远程分支 git branch -r 2.测试git clone romete,只是clone远程remote的master,不会clone其他的目录 -------------------- ...
- Mysql中Left Join 与Right Join 与 Inner Join 与 Full Join的区别
看看Left Join 与Right Join 与 Inner Join 与 Full Join对表进行操作后得到的结果. 在数据库中新建两张表,并插入要测试的数据. 新建表: USE [Test] ...
- vue学习之四组件系统
vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. 一.Vue.js组件系统 每一个 ...
- 【Java】系统漏洞:关于用户登录后操作的注意事项
项目背景: SpringMVC + Mybatis + MySql数据库(javaWeb项目开发) 相关模块:登录,个人详细信息修改,订单详情查询 相关漏洞介绍: 1.登录的验证码:登录的验证码一定 ...
- sql 关于存储过程的查询
--查数据库中所有的存储过程select * from sys.procedures ----------------------查数据库中所有的存储过程select o.name from sysc ...
- UNIX历史
一.Multics计划 1965年,AT&T贝尔电话实验室.通用电气公司.麻省理工学院MAC课题组一起联合开发一个称为Multics的新操作系统. Multics 系统的目标是要向大的用户团体 ...
- nginx之全局设置,location,虚拟主机,日志管理
nginx之全局设置,location,虚拟主机,日志管理 worker_processes 1;//子进程,cpu数*核数 ****************全局设置************** ** ...