博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-5009-Paint Pearls-dp
阅读量:5279 次
发布时间:2019-06-14

本文共 909 字,大约阅读时间需要 3 分钟。

由题意我们能够知道,花费最多为n。

所以单次最多涂掉sqrt(n)种颜色。

dp[i]:涂到第i个位置。之前的花费最少为多少。

biao[i][j]:在第i个位置,往前涂j-1种颜色,涂到哪个位置。

vis[i]:i颜色最后出现的位置,不存在等于-1。

我们先离散化颜色。

然后非常显然转移方程:

dp[i]=min(dp[i],dp[biao[i][j]]+(j+1)*(j+1));

重点是biao[i][j]怎么求;

假如a[i]=x;

假设vis[x]=-1,那么非常显然biao[i][j]=biao[i-1][j-1];

否则vis[x]=y:

那么假设biao[i-1][j]>y。biao[i][j]=biao[i-1][j-1];

假设biao[i-1][j]<=y,biao[i][j]=biao[i-1][j];

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;#define maxn 55000#define mod 10000007#define LL __int64int vis[maxn];int dp[maxn];int biao[2][301];int a[maxn];struct list{ int x; int id; friend bool operator <(const list &a,const list &b) { return a.x

转载于:https://www.cnblogs.com/blfshiye/p/5219747.html

你可能感兴趣的文章
心得25--JDK新特性9-泛型1-加深介绍
查看>>
安装NVIDIA驱动时禁用自带nouveau驱动
查看>>
HDU-1255 覆盖的面积 (扫描线)
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
线程池的概念
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
2017前端面试题总结
查看>>
SWIFT国际资金清算系统
查看>>
站立会议第四天
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>