首页 > 其他分享 >P1004 [NOIP2000 提高组] 方格取数

P1004 [NOIP2000 提高组] 方格取数

时间:2025-01-20 11:21:31浏览次数:1  
标签:NOIP2000 int P1004 取数 mp include dp define

链接

https://www.luogu.com.cn/problem/P1004

题目

思路

dp思路:如果是走一遍,很显然可以发现(i,j)的值只与(i-1,j)和(i,j-1)有关。于是递推:

dp[i][j]=max(dp[i-1][j],dp[i][j-1])+mp[i][j]

当走两遍:转换为四维dp:dp[i][j][k][l]。当(i= =j&&k==l)时,减去mp[i][j]。

代码

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<queue>
#include<cmath>
#include<map>
#include<string.h>
#include<string>
#include<vector>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
#define int long long
const int N = 15;

int mp[N][N];
int dp[N][N][N][N];

signed main()
{
	IOS;
	int n; cin >> n;
	while (true)
	{
		int a, b, c; cin >> a >> b >> c;
		if (a == 0 and b == 0 and c == 0)break;
		mp[a][b] = c;
	}
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			for (int k = 1; k <= n; k++)
				for (int l = 1; l <= n; l++)
				{
					dp[i][j][k][l] = max(max(dp[i - 1][j][k - 1][l], dp[i - 1][j][k][l - 1]),
						max(dp[i][j - 1][k - 1][l], dp[i][j - 1][k][l - 1])) + (mp[i][j] + mp[k][l]);
					if (i == k and j == l)dp[i][j][k][l] -= mp[i][j];
				}
	cout << dp[n][n][n][n];

	return 0;
}

标签:NOIP2000,int,P1004,取数,mp,include,dp,define
From: https://www.cnblogs.com/zzzsacmblog/p/18681003

相关文章

  • 【搜索】洛谷P1123 取数游戏
    P1123取数游戏搜索顺序:按格子枚举。思想类比AcWing843.n-皇后问题按格子枚举方法,以及AcWing1116.马走日AcWing1117.单词接龙AcWing1118.分成互质组,体会恢复现场写在for循环内部与写在for循环外部的区别。最大的区别:恢复现场写在for循环外可以不用清空标记数组。......
  • 定时抓取数据:Python爬虫与定时任务实现每日数据采集与存储
    引言在现代数据驱动的世界中,实时获取和存储数据是许多应用的核心需求。无论是金融行业的实时汇率监控,还是电商行业的价格变化追踪,定时抓取数据都是一种高效的数据采集方式。本文将详细介绍如何使用Python结合爬虫技术和定时任务,实现每天定时抓取数据并将其存入数据库。一......
  • 写一个获取数组的最大值、最小值的方法
    在前端开发中,获取数组的最大值和最小值是一个常见的需求。你可以使用JavaScript的Math.max()和Math.min()函数结合扩展运算符(...)来实现这个功能。以下是一个简单的示例:functiongetMaxAndMin(arr){if(!Array.isArray(arr)||arr.length===0){return{max:null,m......
  • Solution - Luogu P10046 [CCPC 2023 北京市赛] 哈密顿
    感觉我的做法比其他题解都简单一些阿!注意到边权的形式是\(|a_i-b_j|\)的形式,要同时考虑到正负,但这明显是不想看到的。结合题目要求的是边权和最大值,那么一个方法就是把\(|a_i-b_j|\)转化为最大值的形式去维护。于是可以考虑拆分为\(\max\{a_i-b_j,b_j-a_i\}\)。......
  • Delphi7操作Excel读取数据有效性检查下拉列表内容?Formula属性
    usescomobj;//需要引用单元procedureWriteToExcel(str_filename:string);//读取原来的Excel单元格的下拉列表,自动填写varExcelApp,Workbook,Sheet,SheetHidden:OleVariant;Range:OleVariant;i,j,i_max:Integer;str_spec,str_spec2:string;strlst,strlst2:TSt......
  • 方格取数&传纸条
    linkPreface:都是对于数字金字塔模型的一种强化巩固,两道题有异曲同工之妙。Description:从矩阵的左上角走到矩阵的右下角,一共走\(2\)次,每次走过的数权值都会变成\(0\),求走\(2\)次路径的最大权值和。Solution:一个人分\(2\)次走不怎么好做,但是我们可以当做两个人走\(1......
  • 平面抓取数据集
     Clutter_Grasp_Dataset-Google云端硬盘https://drive.google.com/drive/folders/1knXlR72Z_5OcE9_lVfTz-QOZRhtWB_Yjcornell_grasphttps://www.kaggle.com/datasets/oneoneliu/cornell-graspJACQUARDDATASEThttps://jacquard.liris.cnrs.fr/ GitHub-liuchunsense/......
  • jmeter参数化取数机制
    场景:参数化文件中只有3个账户   并发数设置的是4 执行一次,如何取值 当参数化文件中所有值全部取完后,又会从头开始取值(如图所示,只有三个账户,并发数为4,第1个线程取值和第4个线程取值相同) 如果是一个线程,循环(迭代)4次,取值同上面一致 ......
  • 允许PHP从远程URL获取数据的重要性
    在开发过程中,有时需要PHP脚本从外部资源下载数据或图片。如何确保PHP能够安全地访问互联网上的资源?答案: 为了让PHP脚本能顺利从互联网获取数据,必须确保启用了allow_url_fopen选项。此选项允许PHP使用诸如file_get_contents()、fopen()等函数打开远程URL,这对于实现各种功能至关重......
  • 从excel读取数据写入一个新建excel中
    importopenpyxlimportosfile_name="file1.xlsx"ifos.path.exists(file_name):print("文件存在")#读数据workbook=openpyxl.load_workbook(file_name)sheet=workbook["Sheet1"]list_all=[]#放所有数据的list......