DPL_1_A: Coin Changing Problem

每次均有两种选择,即选择当前的,即为在当前状态+1,否则维持原来的T[j+d[i]]

#include<iostream>
#include<cstdlib>
#include<cstring> using namespace std; const int INF=(1<<29); int main()
{
int n,m;
int d[20+5];
int T[50000 + 5];
cin>>n>>m;
for(int i=1;i<=m;i++)
cin>>d[i];
for(int i=0;i<50000+5;i++)
{
T[i]=INF;
}
T[0]=0;
//for(int i=0;i<=50000+5;i++) cout<<T[i]<<endl;
for(int i=1;i<=m;i++)
{
for(int j=0;j+d[i]<=n;j++)
{
T[j + d[i]] = min(T[j+d[i]], T[j]+1);
}
}
cout<<T[n]<<endl;
return 0;
}

DPL_1_B: 0-1 Knapsack Problem

#include<iostream>
#include<vector>
#include<algorithm> #define NMAX 105
#define WMAX 10005 using namespace std; struct Item{
int value;
int weight;
}; int N,W;
Item items[NMAX];
int C[NMAX][WMAX], G[NMAX][WMAX]; void compute(int &maxValue, vector<int> &selection)
{
for(int w=0;w<=W;w++)
{
C[0][w]=0;
G[0][w]=1;
}
for(int i=1;i<=N;i++)
C[i][0]=0;
for(int i=1;i<=N;i++)
{
for(int w=1;w<=W;w++)
{
C[i][w]=C[i-1][w];
G[i][w]=0;
if(items[i].weight>w) continue;
if(items[i].value + C[i-1][w-items[i].weight]>C[i-1][w])
{
C[i][w]=items[i].value + C[i-1][w-items[i].weight];
G[i][w]=1;
}
}
}
maxValue=C[N][W];
selection.clear();
for(int i=N,w=W;i>=1;i--)
{
if(G[i][w]==1)
{
selection.push_back(i);
w-=items[i].weight;
}
}
reverse(selection.begin(), selection.end());
} int main()
{
int maxValue;
vector<int> selection;
cin>>N>>W;
for(int i=1;i<=N;i++)
{
cin>>items[i].value>>items[i].weight;
}
compute(maxValue, selection);
cout<<maxValue<<endl;
return 0;
}

NEFUOJ P21 最长上升子序列

#include<iostream>
#include<algorithm> #define MAX 100000 using namespace std; int n,A[MAX+1],L[MAX]; int lis()
{
L[0]=A[0];
int length=1;
for(int i=1;i<n;i++)
{
if(L[length-1]<A[i])
{
L[length++]=A[i];
}
else
*lower_bound(L, L+length, A[i])=A[i];
}
return length;
} int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>A[i];
}
cout<<lis()<<endl;
return 0;
}

DPL_3_A: Largest Square

#include<iostream>
#include<algorithm>
#include<cstdio> using namespace std; #define MAX 1400 int dp[MAX][MAX], G[MAX][MAX]; int getS(int H,int W)
{
int maxWidth = 0;
for(int i=0;i<H;i++)
{
for(int j=0;j<W;j++)
{
dp[i][j]=(G[i][j]+1)%2;
maxWidth |= dp[i][j];
}
}
for(int i=1;i<H;i++)
{
for(int j=1;j<W;j++)
{
if(G[i][j])
{
dp[i][j]=0;
}
else
{
dp[i][j]=min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1])) + 1;
maxWidth=max(maxWidth, dp[i][j]);
}
}
}
return maxWidth * maxWidth;
} int main()
{
int H,W;
cin>>H>>W;
for(int i=0;i<H;i++)
for(int j=0;j<W;j++)
cin>>G[i][j];
cout<<getS(H,W)<<endl;
return 0;
}

ACM-学习记录-DP-1的更多相关文章

  1. DP学习记录Ⅰ

    DP学习记录Ⅱ 前言 状态定义,转移方程,边界处理,这三部分想好了,就问题不大了.重点在状态定义,转移方程是基于状态定义的,边界处理是方便转移方程的开始的.因此最好先在纸上写出自己状态的意义,越详细越 ...

  2. DP学习记录Ⅱ

    DP学习记录Ⅰ 以下为 DP 的优化. 人脑优化DP P5664 Emiya 家今天的饭 正难则反.考虑计算不合法方案.一个方案不合法一定存在一个主食,使得该主食在多于一半的方法中出现. 枚举这个&q ...

  3. ACM学习-POJ-1143-Number Game

    菜鸟学习ACM,纪录自己成长过程中的点滴. 学习的路上,与君共勉. ACM学习-POJ-1143-Number Game Number Game Time Limit: 1000MS   Memory ...

  4. acm学习指引

    acm学习心得及书籍推荐   一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划练练: 第 ...

  5. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  6. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  7. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  8. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  9. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

  10. UWP学习记录10-设计和UI之控件和模式7

    UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...

随机推荐

  1. Unity中常用的几种读取本地文件方式

    使用的命名空间如下 using LitJson;using System.Collections.Generic;using System.IO;using System.Text;using Uni ...

  2. sdio/mmc/sd笔记

    [SDIO] SD card 初始化及常用命令解析 https://blog.csdn.net/u010443710/article/details/107014873 cmd0命令,是单向命令,ho ...

  3. C# core 流、字节、字符串相互转换

    /// <summary> /// 将 Stream 转成 byte[] /// </summary> public byte[] StreamToBytes(Stream s ...

  4. 网络同步时钟单路耐压测试突破17V

    自动同步标准化考场时钟系统------专业LED时钟厂家![点击进入] 一.网络同步时钟耐压测试作用概述: 同步时钟耐压试验是鉴定时钟绝缘强度和稳定性最直接的方法,它对于判断NTP同步时钟设备能否投入 ...

  5. C语言初级阶段5——函数2

    C语言初级阶段5--函数2 址传递 1.地址:在定义变量,数组,函数等等,系统会自动给分配他们的内存区域(地址),把这个数据放到这个地址上面. 2.&:&a 得到a的地址编号 3.*: ...

  6. C语言初级阶段5——函数1

    C语言初级阶段5--函数1 函数的基本概念 1.函数:理解为封装功能的容器. 主函数是函数的入口 2.函数定义的基本格式: 返回值类型:常用的基本数据类型,执行完以后,函数会得到一个什么类型的值,如果 ...

  7. c语言中的链表

    线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构 非线性结构:不满足线性结构的数据结构 链表(单向链表的建立.删除.插入.打印) 1.链表一般分为: 单向链表 双 ...

  8. Jmeter检查点

    一.Response Assertion(响应断言) 1. 添加响应断言 对Web请求的响应结果进行验证,Response Assertion配置参数 2. 输入需要匹配的字符串 此处对于访问Baid ...

  9. Vue3+Vite项目中 使用WindiCSS.

    之前工作有了解过根据类名来写元素的样式,一听就发出疑问:这样写项目可读性恐怕不是很好吧... 之后来到杭州工作后,开始使用WindiCSS后发现 真香!!!  由于近期所写的项目都是自己一个人开发的 ...

  10. 关于Lua中的面向对象实现

    写在前面 最近在琢磨"Lua热重载",在测试中发现我之前对Lua中的面向对象实现有一些理解发生变化,这里记录一下. 本文提到的面向对象实现来自云风. 类实现 <Lua程序设计 ...