题目传送

dp是常规的;\(m^2\)的预处理:把位置存进vector然后\(O(1)\)算出想要的;WA点:要注意特意设置一下val[i][v.size()]=0,即全天都放鸽子则花费时间为0.

#include <bits/stdc++.h>
using namespace std; int T, n, m, d, ans;
int val[205][205], dp[205][205];
char s[205]; int main() {
for (scanf("%d", &T); T; T--) {
memset(val, 0x3f, sizeof val);
memset(dp, 0x3f, sizeof dp); scanf("%d %d %d", &n, &m, &d);
for (int i = 1; i <= n; i++) {
scanf("%s", s + 1);
vector<int> v;
for (int j = 1; j <= m; j++) {
if (s[j] == '1') {
v.push_back(j);
}
}
val[i][v.size()] = 0;
for (int j = 0; j < v.size(); j++) {
for (int k = j; k < v.size(); k++) {
int l = v[j], r = v[k];
int angry = v.size() - (k - j + 1);
val[i][angry] = min(val[i][angry], r - l + 1);
}
}
}
for (int i = 0; i <= d; i++)
dp[0][i] = 0;
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= d; j++) {
for (int k = 0; k <= j; k++)
if (val[i][k] < 0x3f3f3f3f && dp[i - 1][j - k] < 0x3f3f3f3f)
dp[i][j] = min(dp[i][j], dp[i - 1][j - k] + val[i][k]);
}
}
ans = 0x3f3f3f3f;
for (int i = 0; i <= d; i++)
ans = min(ans, dp[n][i]);
printf("%d\n", ans);
}
}

2019湘潭校赛 H(dp)的更多相关文章

  1. 2019湘潭校赛 G(并查集)

    要点 题目传送 题目本质是每个点必属于两个集合中的一个,伴随的性质是:如果一个人说别人true,则他们一定属于同一阵营:如果说别人fake,一定不属于同一阵营. 每个点拆为\(i\)和\(i + n\ ...

  2. 2019湘潭校赛 E(答案区间维护)

    题目传送 思路是始终维护西瓜数量的区间,即L代表目前可以达到的最少的,R是最多的,然后判断一下. #include <bits/stdc++.h> using namespace std; ...

  3. 2019沈阳网赛树形dp

    https://nanti.jisuanke.com/t/41403 2019沈阳网络赛D题 树形dp.一棵树,求任意两个点的距离之和.u-v和v-u算两次.两点之间的距离分为三类,模3等于0,1,2 ...

  4. PKU2018校赛 H题 Safe Upper Bound

    http://poj.openjudge.cn/practice/C18H 题目 算平均数用到公式\[\bar{x}=\frac{x_1+x_2+x_3+\cdots+x_n}{n}\] 但如果用in ...

  5. GDUT 校赛01 dp

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABT8AAAILCAIAAAChHn9YAAAgAElEQVR4nOy9f4il13nneUGgxrRYux ...

  6. ZOJ3956 ZJU2017校赛(dp)

    题意:给出n对(h,c) 记  sumh为选出的h的总和  sumc为选出的c的总和 你可以从中选出任意多对(可以不选) 使得  sumh^2-sumh*sumc-sumc^2 最大 输出最大值 输入 ...

  7. hdu 4028 2011上海赛区网络赛H dp+map离散

    一开始用搜索直接超时,看题解会的 #include<iostream> #include<cstdio> #include<map> #include<cst ...

  8. GDUT 校赛02 dp回文串

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABSkAAAIhCAIAAAAtmainAAAgAElEQVR4nOzdfaxkd33n+ZJacstqa3 ...

  9. 2019浙大校赛--E--Potion(签到水题)

    一丢丢思维就ok 题目大意: 魔法师要煮药,有n个等级的药,所需要的药物为a1,a2...an,意为第n级需要多少药物,下一行为库存的不同等级药物,药物可降级使用不可升级. 思路:从高级药物开始解,把 ...

随机推荐

  1. 分享知识-快乐自己:论Hibernate中的缓存机制

    Hibernate缓存 缓存: 是计算机领域的概念,它介于应用程序和永久性数据存储源之间. 缓存: 一般人的理解是在内存中的一块空间,可以将二级缓存配置到硬盘.用白话来说,就是一个存储数据的容器.我们 ...

  2. Linux下查看端口占用情况

    用启动服务的账号登录,然后运行命令: lsof -i:<端口号> 也可使用命令: netstat -apn|grep <端口号> 找到进程号以后,再使用以下命令查看详细信息: ...

  3. linux 命令:crontab

    一.crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动c ...

  4. hdu-2169 Computer(树形dp+树的直径)

    题目链接: Computer Time Limit: 1000/1000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others) ...

  5. css 3d box 实现的一些注意事项

    Test1.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  6. MySQL_产品昨日库存与历史入库历史出库成本_20161124

    产品昨日库存与历史入库历史出库成本 SELECT d.ID,a.*,e.昨日订单额 ,b.昨天入库额,b.历史2天,b.历史3天,b.历史4天,b.历史5天,b.历史6天,b.历史7天,b.历史8天, ...

  7. 51 nod 1522 上下序列——序列dp

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1522 很好的思想.考虑从小到大一对一对填数,这样也能对它的大小限制 ...

  8. Digging-贪心

    When it comes to the Maya Civilization, we can quickly remind of a term called the end of the world. ...

  9. AI-Info-Micron-Insight:通往完全自主之路

    ylbtech-AI-Info-Micron-Insight:通往完全自主之路 1.返回顶部 1. 通往完全自主之路 自动驾驶汽车正在从未来梦想演变为当代现实,随着技术成熟,个人和公共交通将永远转变. ...

  10. JavaScript:Map使用

    定义Map /** * Map * */ function Map() { /** 存放键的数组(遍历用到) */ this.keys = new Array(); /** 存放数据 */ this. ...