首页 > 其他分享 >Educational Codeforces Round 39 (Rated for Div. 2) -- D. Timetable (DP)

Educational Codeforces Round 39 (Rated for Div. 2) -- D. Timetable (DP)

时间:2023-04-23 21:57:33浏览次数:47  
标签:39 Rated -- Educational Codeforces int 每行 dp

写得很折磨人,每次dp都写个一个多小时,写出来明明觉得不难 .

  1. 题目大意:可以进行K次操作,把删除1,进行k次操作后每行第一个 1 和最后一个 1 的位置 相减的绝对值加 1 得到的结果最小。

  2. 做法:每次肯定是要从左删或者从右边删,然后顺着这个思路,先把每行的进行小于等于k次操作时, 每行最小的值存下来, 我用f[i][j], i 代表第几行, j 代表几次操作。这个直接暴力,枚举所有情况。左零次,右边 1 ...... k 次这样暴力。把值求出来后,就直接套分组背包的模板就行。

const int N = 510;

char g[N][N];
int  f[N][N], dp[N][N], s[N];

void solve()
{
    int n, m, k;
    cin >> n >> m >> k;
    int sum = 0;
    memset(f, -0x3f, sizeof f);
    for (int i = 1; i <= n; i ++)
    {
    	int a[m + 1] = {0};
    	int l = 1, r = 0;
		for (int j = 1; j <= m; j ++)
		{
			cin >> g[i][j];
			if (g[i][j] == '1') a[++ r] = j;
		}
		f[i][0] = 0;
		if (r == 0) continue;
		sum += a[r] - a[l] + 1;
		int maxx = min(k, r - l + 1);
		for (int j = 1; j <= maxx; j ++)
		{
			if (j == r - l + 1) {f[i][j] = a[r] - a[l] + 1;continue;}
			for (int p = 0; p <= j; p ++)
			{
				int res = a[r - (j - p)] - a[l + p] + 1;
				f[i][j] = max(f[i][j], a[r] - a[l] + 1 - res);
			}
		}
		s[i] = maxx;
    }
    
    for (int i = 1; i <= n; i ++)
    {
    	for (int j = 0; j <= k; j ++)
    	{
    		dp[i][j] = dp[i - 1][j];
    		for (int l = 0; l <= s[i]; l ++)
    		{
    			if (j >= l) dp[i][j] = max(dp[i][j], dp[i - 1][j - l] + f[i][l]);
    		}
    	}
    }
    cout << sum - dp[n][k] << '\n';
}

标签:39,Rated,--,Educational,Codeforces,int,每行,dp
From: https://www.cnblogs.com/NNNZZZ/p/17347870.html

相关文章

  • Centos 中扩展 软件源 的安装之 epel
     EPEL(ExtraPackagesforEnterpriseLinux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和ScientificLinux.CentOS默认自带CentOS-Base.repo源,但官方源中去除了很多有版权争议的软件,而且安装的软件也不是最新的稳定版。Fedora自带的源中......
  • 2
    classPSNR(nn.Module):def__init__(self,max_val=0):super().__init__()base10=torch.log(torch.tensor(10.0))max_val=torch.tensor(max_val).float()self.register_buffer('base10',base10)self.register_bu......
  • Lab06-02
    目录与Lab06-01类似与Lab06-01类似......
  • 总结20230423
    代码时间(包括上课):3h代码量(行):100行博客数量(篇):1篇相关事项:1、完成了数据库实验报告一。2、正在努力完成小程序购物车的登录功能。3、正在努力完成小程序模拟支付的功能。......
  • 实验3 控制语句与组合数据类型应用编程
    task1源代码1importrandom23print('用列表存储随机整数:')4lst=[random.randint(0,100)foriinrange(5)]5print(lst)67print('\n用集合存储随机整数:')8s1={random.randint(0,100)foriinrange(5)}9print(s1)1011print('......
  • Django4全栈进阶之路11 view视图
    在Django4中,视图(View)是一个处理请求并返回响应的Python函数或类的组合。视图函数通常是处理请求的主要逻辑,因此它是DjangoWeb应用程序的重要组成部分。视图函数的基本结构如下:fromdjango.httpimportHttpResponsedefmy_view(request):#处理请求的代码r......
  • redis之哈希类型-列表类型-集合类型-有序集合-慢查询-pipeline-发布订阅-Bitmap位图-H
    目录redis之哈希类型-列表类型-集合类型-有序集合-慢查询-pipeline-发布订阅-Bitmap位图-HyperLogLog-GEO地理位置昨日内容回顾今日内容详细1哈希类型2列表类型3集合类型4有序集合5慢查询6pipeline与事务7发布订阅8Bitmap位图9HyperLogLog10GEO地理位置redis之哈希类型......
  • 给虚拟机win2003装DNS插件出现问题
    已经配置给2003配置好ip地址和子网掩码了,安装DNS插件的时候报下面错误 有个红叉没法用 重启一下虚拟机就好了,可能是之前配置ip的时候和其他虚拟机重名了,我改了之后还有缓存。(还可以恢复快照或者重装一下虚拟机) ......
  • 树莓派安装数据库 mariadb-server
    安装mariadb-serversudoaptinstallmariadb-server配置mariadb-server进入数据服务器sudomysql为root用户设置密码:ALTERUSER'root'@'localhost'IDENTIFIEDBY'your_password';将'your_password'替换为您想要设置的密码。创建一个新用户并为其设置密码:CREA......
  • check_crystal_oscillator_size_in_the_code
    #如何在代码里面查看晶振的大小目录概述方案注参考文章概述不同晶振的类型,大小有所不同,它们适合的使用场合也有所不同。主系统时钟一般会使用大一点的晶振,这样通过倍频之后,可以轻松得到想要的主频。RTC时钟一般使用32.768K晶振。RTC的晶振频率为什么是32768Hz?①RTC时间......