AC日记——Paint Pearls hdu 5009
Paint Pearls
思路:
离散化+dp+剪枝;
dp是个n方的做法;
重要就在剪枝;
如果一个长度为n的区间,有大于根号n种颜色,还不如一个一个涂;
来,上代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm>using namespace std;#define maxn 50005int n,ai[maxn],dp[maxn],ls[maxn],size,num,map[maxn];inline void in(int &now) {char Cget=getchar();now=0;while(Cget>'9'||Cget<'0') Cget=getchar();while(Cget>='0'&&Cget<='9'){now=now*10+Cget-'0';Cget=getchar();} }int main() {while(scanf("%d",&n)==1){num=0;for(int i=1;i<=n;i++){in(ai[i]);if(ai[i]==ai[i-1]){n--,i--;continue;}ls[i]=ai[i];}sort(ls+1,ls+n+1),size=unique(ls+1,ls+n+1)-ls-1;for(int i=1;i<=n;i++) ai[i]=lower_bound(ls+1,ls+size+1,ai[i])-ls,map[ai[i]]=0;for(int i=1;i<=n;i++){if(!map[ai[i]]) num++;map[ai[i]]++,dp[i]=min(num*num,i);}for(int i=1;i<=n;i++) map[ai[i]]--;for(int i=1;i<=n;i++){if(dp[i]>=dp[i+1]) continue;num=0;for(int j=i+1;j<=n;j++){if(!map[ai[j]]) num++;if(num*num+dp[i]>=dp[n]){for(int v=j-1;v>=i+1;v--) map[ai[v]]--;break;}map[ai[j]]++,dp[j]=min(dp[j],dp[i]+num*num);}}printf("%d\n",dp[n]);}return 0; }
转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6814225.html
AC日记——Paint Pearls hdu 5009相关推荐
- HDU - 5009 Paint Pearls dp + 链表 + 下界优化
传送门:HDU 5009 题意:给出n个连续的珠子,珠子有不同的颜色,现将其划分成任意多段,每一段的代价为该段中颜色种数的平方,问划分的最小总代价和是多少. 总思路:dp[i]代表处理到第i个珠子的最 ...
- 【HDU - 5009】Paint Pearls(dp,链表优化dp)
题干: Lee has a string of n pearls. In the beginning, all the pearls have no color. He plans to color ...
- HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)
前言: 在写这篇文章之前,首先感谢给我思路以及帮助过我的学长们 以下4篇博客都是学长原创,其中有很多有用的,值得学习的东西,希望能够帮到大家! 1.手把手教你用C++ 写ACM自动刷题神器(冲入HDU ...
- AC日记——传染病控制 洛谷 P1041
传染病控制 思路: 题目想问的是: 有一棵树: 对于除1外每个深度可以剪掉一棵子树: 问最后剩下多少节点: 题目意思一简单,这个题立马就变水了: 搜索就能ac: 数据有为链的情况,按深度为层次搜索的话 ...
- AC日记——中位数 洛谷 P1168
题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], -, A[2k - 1]的中位数.[color=red]即[/color] ...
- AC日记——约瑟夫问题 codevs 1282
1282 约瑟夫问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 有编号从1到N的N个小朋友在玩 ...
- AC日记——逃出克隆岛 (bfs)
2059 逃出克隆岛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description oi小组的yh酷爱玩魔兽rpg,每天都会在u9搜 ...
- AC日记——[Hnoi2017]影魔 bzoj 4826
4826 思路: 主席树矩阵加减+单调栈预处理: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 ...
- AC日记——小书童——刷题大军 洛谷 P1926
题目背景 数学是火,点亮物理的灯:物理是灯,照亮化学的路:化学是路,通向生物的坑:生物是坑,埋葬学理的人. 文言是火,点亮历史宫灯:历史是灯,照亮社会之路:社会是路,通向哲学大坑:哲学是坑,埋葬文科生 ...
最新文章
- ionic4中使用Swiper触屏滑动--技术
- SQL中关联表并使用子表的COUNT和SUM函数作为扩展字段
- 苹果企业证书_苹果签名经常掉签原因大汇总
- 北京理工大学计算机学院赵曜,北理工学子参加第十届蓝桥杯全国软件和专业人才大赛取得佳绩...
- 微型计算机由5大部分,微机原理答案 (5)
- Ubuntu环境下的VirtualBox,连接Redhat虚拟机的步骤
- modbus测试plc软件,MODBUS RTU设备测试调试工具官方版
- 在win中搭建IOS自动化
- 虚拟机桥接模式配置网络
- qq音乐服务器的位置,QQ音乐的歌曲真实地址解析
- LidarSLAM(一):NDT
- 机械革命笔记本开关键盘亮度
- 软考分类精讲-知识产权与标准化
- 系统安全的三个方面(CIA)
- 打计算机游戏用英语怎么说,打游戏用英语怎么说
- python实用案例题
- 怎样把计算机扫描放到桌面上,Win10系统怎么把画图/扫描等小工具添加到桌面
- stm32 驱动 TFT LCD
- Python逆向进阶:Web逆向私单
- Google、Baidu、FB股权分配