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 记录的更多相关文章

  1. 基础dp

    队友的建议,让我去学一学kuangbin的基础dp,在这里小小的整理总结一下吧. 首先我感觉自己还远远不够称为一个dp选手,一是这些题目还远不够,二是定义状态的经验不足.不过这些题目让我在一定程度上加 ...

  2. 「kuangbin带你飞」专题十二 基础DP

    layout: post title: 「kuangbin带你飞」专题十二 基础DP author: "luowentaoaa" catalog: true tags: mathj ...

  3. C#基础知识记录一

    C#基础知识记录一 static void Main(string[] args) { #region 合并运算符的使用(合并运算符??) 更多运算符请参考:https://msdn.microsof ...

  4. DataBase MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...

  5. MarkDown基础语法记录

    基础语法记录,其中有一些博客园暂不支持 <!--标题--> # 一级标题 # ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 一级标题 ...

  6. 基础DP(初级版)

    本文主要内容为基础DP,内容来源为<算法导论>,总结不易,转载请注明出处. 后续会更新出kuanbin关于基础DP的题目...... 动态规划: 动态规划用于子问题重叠的情况,即不同的子问 ...

  7. PAT L3-001 凑零钱(01背包dp记录路径)

    韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有104枚来自各个星球的硬币,需要请你帮她盘算一下,是 ...

  8. hdu 5586 Sum 基础dp

    Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Desc ...

  9. MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...

随机推荐

  1. javaScript高级教程(二)Scope Chain & Closure Example

    <!DOCTYPE html> <html> <head> <meta charset=gb2312 /> <title>js</ti ...

  2. python中实现mysql连接池

    python中实现mysql连接池 import pymysql from DBUtils.PooledDB import PooledDB MYSQL_HOST = 'localhost' USER ...

  3. win8 metro 自己写摄像头拍照项目

    这个项目不是用的系统自带的CameraCaptureUI.是自己写的摄像头的调用,界面做的不好所以,不放了.可是能够实现拍照功能: 以下是using 程序命名空间: using Windows.Med ...

  4. 【剑指offer】斐波那契数列

    一.题目: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 二.思路: 式子: n=0时,f=0:n=1或者n=2时f=1:否则f=f(n-1)+f(n ...

  5. excel用法

    1:求大于某一值的个数:使用COUNTIF(区间,标准)    要大写 =COUNTIF(B2:B48,">=95") 2:求某一区间的个数用:大区间个数减小区间个数 =CO ...

  6. Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子(转载)

    1. 究竟是怎么运行的? 很多的博客里大量的讲了什么是RDD, Dependency, Shuffle.......但是究竟那些Executor是怎么运行你提交的代码段的? 下面是一个日志分析的例子, ...

  7. Air Jordan 1 Los Primeros Will be unveiled

    This new pair of Air Jordan 1 Los Primeros is part of the popular Air-Jordan- Line signature and is ...

  8. try except else

    try except 语句还有一个可选的else子句,如果使用这个子句,那么必须放在所有的except子句之后.这个子句将在try子句没有发生任何异常的时候执行.例如: for arg in sys. ...

  9. CMPXCHG指令

    一.CMPXCHG汇编指令详解. 这条指令将al\ax\eax\rax中的值与首操作数比较: 1.如果相等,第2操作数的直装载到首操作数,zf置1.(相当于相减为0,所以0标志位置位) 2.如果不等, ...

  10. 问题排查之'org.apache.rocketmq.spring.starter.core.RocketMQTemplate' that could not be found.- Bean method 'rocketMQTemplate' in 'RocketMQAutoConfiguration' not loaded.

    背景 今天将一个SpringBoot项目的配置参数从原有的.yml文件迁移到Apollo后,启动报错“Bean method 'rocketMQTemplate' in 'RocketMQAutoCo ...