首页 > 其他分享 >P3800 Power收集

P3800 Power收集

时间:2022-10-03 10:12:05浏览次数:48  
标签:Power 收集 int 4001 namespace times ans P3800

暴力 \(DP\) , \(O(N\times M \times T)\) 。

#include<bits/stdc++.h>
using namespace std;
int N,M,K,T,ans;
int a[4001][4001];
int f[4001][4001];
int main()
{
	cin>>N>>M>>K>>T;
	for(int i=1,x,y,z; i<=K; i++)
	{
		scanf("%d%d%d",&x,&y,&z);
		a[x][y]=z;
	}
	for(int i=1; i<=N; i++)
	{
		for(int j=1; j<=M; j++)
		{
			for(int k=max(1,j-T); k<=min(M,j+T); k++){
				f[i][j]=max(f[i][j],f[i-1][k]);
			}
			f[i][j]+=a[i][j];
			if(i==N)
			{
				ans=max(ans,f[i][j]);
			}
		}
	}
	cout<<ans<<endl;
}

单调队列优化 \(O(N \times M)\) ,用滑动窗口来代替枚举 \(k\) 。

#include<bits/stdc++.h>
using namespace std;
int N,M,K,T,ans;
int a[4001][4001];
int que[4001];
int f[4001][4001];
int main()
{
	cin>>N>>M>>K>>T;
	for(int i=1,x,y,z; i<=K; i++)
	{
		scanf("%d%d%d",&x,&y,&z);
		f[x][y]=z;
	}
	for(int i=2; i<=N; i++)
	{
		static int head,tail,k;
		head=1;tail=0;k=1;
		for(int j=1; j<=M; j++)
		{
			while(k<=M&&k<=j+T)
			{
				while(head<=tail&&f[i-1][que[tail]]<=f[i-1][k])tail--;
				que[++tail]=k++;
			}
			while(que[head]<j-T)head++;
			f[i][j]+=f[i-1][que[head]];
			if(i==N)
			{
				ans=max(ans,f[i][j]);
			}
		}
	}
	cout<<ans<<endl;
}

标签:Power,收集,int,4001,namespace,times,ans,P3800
From: https://www.cnblogs.com/dadidididi/p/16750085.html

相关文章

  • 通过Powershell 采集电脑上安装的软件
    点击查看代码![](https://img2022.cnblogs.com/blog/1326813/202210/1326813-20221002225935257-1660369632.png)#1获取当前日期$collect_date=Get-Date-Format"yyy......
  • 13_收集表单数据
    收集表单数据<!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>收集表单数据</title><scripttype="text/javascript"src......
  • CF1438D Powerful Ksenia
    PowerfulKseniaCodeforcesCF1438DLuoguCF1438DSolutionCF为什么这么喜欢构造题(首先需要知道一些性质。性质\(1\):数列变化前后全局异或和不发生改变。这一点......
  • Power Automate Tips
    一、通过Sharepoint——“创建或者修改项” Trigger触发了新增或者修改后,通过“获取项或文件的更改”Action获取哪些字段发生了改变  通过Trigger中的ID来查询,时间......
  • Power Apps Canvas Tips
    一、EditForm为新建时设置DataCard字段的默认值1、文本If(DetailEditForm.Mode=FormMode.New,myself.FullName,ThisItem.Applicant申请人)2、时间If(DetailEditForm.Mo......
  • socket,端口,进程问答(收集整理)
    一、一台计算机有几个端口,分别是什么?作用呢?端口可分为3大类:1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。......
  • 磨练 LeetCode 问题之禅:第 117 天——Powers
    磨练LeetCode问题之禅:第117天——Powers欢迎回到LeetCode日常练习系列.今天我做了3简单的问题。让我们开始!Photoby利兹桑切斯-维加斯on不飞溅二的幂[......
  • powerdesigner外键不显示名称
    powerdesigner默认外键展示如下:  如果我们想要在外键显示名称,如下:  需要如下操作: ......
  • Linux主机信息收集
    成殇Orz10x00Linux主机渗透MSF生成LUNIX平台可执行文件msfvenom-plinux/x86/meterpreter/reverse_tcplhost=192.168.31.246lport=8882-felf-olocalmsf8882.elf......
  • k8s+log-pilot日志收集
    github地址:https://github.com/AliyunContainerService/log-pilot介绍log-pilot是一个很棒的docker日志工具。可以从dockerlog-pilot主机收集日志并将它们发送到您的......