DP Cleaning Up 打扫卫生
来源:互联网 发布:分答软件下载 编辑:程序博客网 时间:2024/04/28 13:30
问题 A: Cleaning Up 打扫卫生
时间限制: 1 Sec 内存限制: 128 MB
题目描述
[Usaco2009 Mar]Cleaning Up 打扫卫生
Description
有N头奶牛,每头那牛都有一个标号Pi,1 <= Pi <= M <= N <= 40000。现在Farmer John要把这些奶牛分成若干段,定义每段的不河蟹度为:若这段里有k个不同的数,那不河蟹度为k*k。那总的不河蟹度就是所有段的不河蟹度的总和。
Input
第一行:两个整数N,M
第2..N+1行:N个整数代表每个奶牛的编号
Output
一个整数,代表最小不河蟹度
Sample Input
13 4
1
2
1
3
2
2
3
4
3
4
3
1
4
Sample Output
11
我承认我没打正解。。正解N^1.5,我打了个假N^2.
对于f[i],应该是把j~i一段合并起来,f[i]=min(f[j-1]+s*s);
s为区间j~i中出现的个数。
剪枝:倒着找,s*s>i则直接跳出。
就这样水过了。。。
#pragma GCC optimize("O3")#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#define N 40005#define ll long longusing namespace std;int read(){ int sum=0,f=1;char x=getchar(); while(x<'0'||x>'9'){if(x=='-')f=-1;x=getchar();} while(x>='0'&&x<='9'){sum=(sum<<1)+(sum<<3)+x-'0';x=getchar();} return sum*f;}int n,m,tot,a[N],f[N];bool vis[N];int main(){ n=read();m=read();int x; memset(f,120,sizeof(f)); for(int i=1;i<=n;i++) { x=read();if(x==a[tot])continue; a[++tot]=x; } f[0]=0; for(int i=1;i<=tot;i++) { memset(vis,0,sizeof(vis));int s=0;f[i]=i; for(int j=i;j>0;j--) { if(s*s>i)break; if(!vis[a[j]])vis[a[j]]=1,s++; if(f[i]>f[j-1]+s*s)f[i]=f[j-1]+s*s; } //cout<<f[i]<<endl; } cout<<f[tot];}
阅读全文
0 0
- DP Cleaning Up 打扫卫生
- bzoj 1584 Cleaning Up 打扫卫生 dp
- 【BZOJ1584】[Usaco2009 Mar]Cleaning Up 打扫卫生【DP】
- bzoj1584 [Usaco2009 Mar]Cleaning Up 打扫卫生 dp
- bzoj1584【Usaco2009 Mar】Cleaning Up 打扫卫生
- [bzoj1584] [Usaco2009 Mar]Cleaning Up 打扫卫生
- 1584: [Usaco2009 Mar]Cleaning Up 打扫卫生
- [BZOJ1584][Usaco2009 Mar]Cleaning Up 打扫卫生(dp+数学相关优化)
- BZOJ 1584 [Usaco2009 Mar]Cleaning Up 打扫卫生 动态规划
- 哪里有打扫卫生
- [bzoj1584]打扫卫生
- 今天在家打扫卫生了
- 如何计算自己哪天打扫卫生
- 先打扫卫生,然后在写规划
- [Usaco2009 Mar]Cleaning Up
- codechef Cleaning Up 题解
- 关于宿舍卫生打扫分配工作的程序
- Cleaning Up PL/SQL Practices
- 构造器和继承体系
- spring注解注入属性
- PDFBox – How to read PDF file in Java
- python 爬虫 豆瓣 评论及评分
- unity中ProtoBuffer的使用
- DP Cleaning Up 打扫卫生
- adapter
- JAVA的基本数据类型
- 第三周项目4-删除指定区间的元素
- 侧滑菜单--DrawerLayout的使用
- Unique Paths
- Java变量类型
- mybatis 使用说明
- C++希尔密码的实现以及运用