HDU 5009 DP
2014 ACM/ICPC
Asia Regional Xi'an Online
对于N个数 n(1 ≤ n ≤ 5×104),
把N个数分成随意个区间,每一个区间的值是该区间内不同数字个数的平方和,答案使和最小
DP思路,首先要对数据合并相连同样数字,然后离散化。
数据太弱了。。。。
。
然后直接做N*N的DP居然能AC。
。
。。比赛时候想到了。。
。不敢写。
。。
G++AC C++TLE
#include "stdio.h"
#include "string.h"
#include "queue"
#include "iostream"
#include "algorithm"
using namespace std; const int inf = 0x3f3f3f3f; struct node
{
int x,id,v;
}a[50000];
int dp[50010],vis[50010];
vector<int>q;
bool cmpx(node a,node b)
{
return a.x<b.x;
} bool cmpid(node a,node b)
{
return a.id<b.id;
} int Min(int a,int b)
{
if (a<b) return a;
else return b;
} int main()
{
int n,m,i,j,temp,x,cnt;
while (scanf("%d",&n)!=EOF)
{
m=1;
scanf("%d",&a[1].x);
a[1].id=1;
for (i=2;i<=n;i++)
{
scanf("%d",&x);
if (x!=a[m].x)
{
a[++m].x=x;
a[m].id=m;
}
} // 合并相邻同样数字
n=m;
sort(a+1,a+1+n,cmpx);
temp=1;
a[1].v=1;
for (i=2;i<=n;i++)
{
if (a[i].x!=a[i-1].x) temp++;
a[i].v=temp;
} // 离散化 sort(a+1,a+1+n,cmpid); memset(dp,inf,sizeof(dp));
dp[0]=0;
dp[n]=n;
memset(vis,0,sizeof(vis));
for (i=0;i<n;i++)
{
if (dp[i]>dp[i+1]) continue;
cnt=0;
for (j=i+1;j<=n;j++)
{
if (vis[a[j].v]==0)
{
cnt++;
q.push_back(a[j].v);
vis[a[j].v]=1;
}
if (dp[i]+cnt*cnt>=dp[n]) break; // 小优化,大于DP[n] 直接退出
dp[j]=Min(dp[j],dp[i]+cnt*cnt);
}
for (j=0;j<q.size();j++)
vis[q[j]]=0;
q.clear();
}
printf("%d\n",dp[n]);
}
return 0;
}
HDU 5009 DP的更多相关文章
- hdu 3016 dp+线段树
Man Down Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- HDU 5009 Paint Pearls(西安网络赛C题) dp+离散化+优化
转自:http://blog.csdn.net/accelerator_/article/details/39271751 吐血ac... 11668627 2014-09-16 22:15:24 A ...
- HDU 5009 Paint Pearls 双向链表优化DP
Paint Pearls Problem Description Lee has a string of n pearls. In the beginning, all the pearls ha ...
- HDU - 5009 Paint Pearls(dp+优化双向链表)
Problem Description Lee has a string of n pearls. In the beginning, all the pearls have no color. He ...
- HDU 5009
http://acm.hdu.edu.cn/showproblem.php?pid=5009 题意:一个数列,每个点代表一种颜色,每次选一个区间覆盖,覆盖的代价是区间内颜色种类数的平方,直到覆盖整个数 ...
- hdu 5009 离散化
http://acm.hdu.edu.cn/showproblem.php?pid=5009 有一段序列,涂连续一段子序列的代价为该子序列出现不同数字个数的平方,求最小代价涂完整个序列. ai有10^ ...
- HDU 1069 dp最长递增子序列
B - Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- HDU 1160 DP最长子序列
G - FatMouse's Speed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
随机推荐
- selenium - Headless Browser and scraping - solutions - Stack Overflow
yum install pygtk2-devel selenium - Headless Browser and scraping - solutions - Stack Overflow Hea ...
- 发一个讨论帖,如果结果被采纳的话可以给一份adb 代码,以及我封装的ADBLIB
如何在手机没有root 的情况下,获取系统的一些文件,比如 /data/data/xxxx 目录下的文件. 有任何想法的请说出来.
- BZOJ2440(全然平方数)二分+莫比乌斯容斥
题意:全然平方数是指含有平方数因子的数.求第ki个非全然平方数. 解法:比較明显的二分,getsum(int middle)求1-middle有多少个非全然平方数,然后二分.求1-middle的非全然 ...
- Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器
Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器 MVC概念 MVC的含义是 “模型-视图-控制器”.MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程 ...
- SDWebImage内部实现过程
入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处 ...
- [LeetCode]题解(python):020-Valid Parentheses
题目来源: https://leetcode.com/problems/valid-parentheses/ 题意分析: 这道题输入一段只包括括号的字符串,判断这个字符串是否已经配对.配对的规则是,每 ...
- (Problem 33)Digit canceling fractions
The fraction 49/98 is a curious fraction, as an inexperienced mathematician in attempting to simplif ...
- 第一章:介绍Django
django简单来说就是一个Web开发框架.Web框架为应用程序提供了一套程序框架,这样你可以专注于编写清晰.易维护的代码,而无需从头做起. models.py文件主要用一个Python类来描述数据表 ...
- Java疯狂讲义(二)
- Cocos2d-x 创建自己定义项目模板
你是否以前为cocos方便高速开发而兴奋,你是否以前为各种工具的便利开发而感动,但如今的你是否为每次创建一个新的项目都是HelloWorldScene而苦恼? 好吧,事实上我也感觉到了,每次创建一个项 ...