luogu4267 TamingtheHerd (dp)
设f[i][j]为让前i天发生j次暴动需要改变的最少的值
则f[i][j]=min{f[k][j-1]+(x[k+1]!=0)+(x[k+2]!=1)+...+(x[i]!=(i-k-1))}
$O(n^3)$直接做就好了
1 #include<bits/stdc++.h> 2 #define pa pair<int,int> 3 #define ll long long 4 using namespace std; 5 const int maxn=105; 6 7 ll rd(){ 8 ll x=0;char c=getchar();int neg=1; 9 while(c<'0'||c>'9'){if(c=='-') neg=-1;c=getchar();} 10 while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar(); 11 return x*neg; 12 } 13 14 int N,num[maxn],f[maxn][maxn],dif[maxn][maxn]; 15 16 int main(){ 17 int i,j,k; 18 N=rd();for(i=1;i<=N;i++) num[i]=rd(); 19 for(i=1;i<=N;i++){ 20 for(j=i;j<=N;j++) dif[i][j]=dif[i][j-1]+(num[j]!=j-i); 21 } 22 memset(f,127,sizeof(f));f[0][0]=0; 23 for(i=1;i<=N;i++){ 24 for(j=1;j<=i;j++){ 25 for(k=0;k<i;k++){ 26 f[i][j]=min(f[i][j],f[k][j-1]+dif[k+1][i]); 27 } 28 } 29 }for(i=1;i<=N;i++) printf("%d\n",f[N][i]); 30 return 0; 31 }
转载于:https://www.cnblogs.com/Ressed/p/9628717.html
luogu4267 TamingtheHerd (dp)相关推荐
- dp,sp,px相互转化
方法一: public int sp2px(float sp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, ...
- [JS][dp]题解 | #打家劫舍(一)#
题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家, ...
- HDU 2084 数塔(DP)(JAVA版)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- dp cf 20190615
A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...
- BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)
Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit ...
- [NOI2005]聪聪与可可(期望dp)
题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间. Solution luog ...
- Codeforces 903F Clear The Matrix(状态压缩DP)
题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...
- 喵哈哈村的魔法考试 Round #1 (Div.2) 题解源码(A.水+暴力,B.dp+栈)
A.喵哈哈村的魔法石 发布时间: 2017年2月21日 20:05 最后更新: 2017年2月21日 20:06 时间限制: 1000ms 内存限制: 128M 描述 传说喵哈哈村有三种神 ...
- 尼克的任务 dp 洛谷1280
蒟蒻表示老久没看过dp题目了,,挺水的一道dp题目都没想出来,,, 首先设dp[i]表示从开始到i时间的最大空闲时间,用vector to[x] 表示从x点开始的任务结束时间,cnt[x]表示从x开始 ...
最新文章
- 关于.NET玩爬虫这些事 【初码干货】
- Swift 网络请求数据与解析
- 高校各部门老师真实生活图鉴,哈哈哈哈哈哈哈
- Python学习 Day4-1 Python3 条件控制、循环语句
- linux如何敲打中文,vim敲字如弹琴 - linux-tao的个人空间 - OSCHINA - 中文开源技术交流社区...
- ALGO-84 大小写转换
- linux删除文件未释放空间问题处理
- 凸优化第二章凸集 2.2重要例子
- Kotlin教程(一):走进Kotlin的世界
- Html光标跟随粒子特效
- html导航栏的渐变效果,html+css+js实现导航栏滚动渐变效果
- 手把手教你批量下载微博视频
- 怎么区分css还是html5,一文读懂HTML5和HTML4区别!
- k8s eviction机制
- 普通本科,开发一周年纪念日—-赠给自己的礼物
- ZigBee——在CC2530的ZStack中添加定时任务
- PHP artisan命令
- cc2640到cc2640R2F
- 计算机网络1255,国家开放大学电大本科《计算机网络》2024期末试题及答案(试卷号:1255).docx...
- vue移动端兼容性配置