首页 > 其他分享 >P8816 [CSP-J 2022] 上升点列

P8816 [CSP-J 2022] 上升点列

时间:2023-04-12 23:23:40浏览次数:52  
标签:P8816 PII int 2022 pair CSP 点列

P8816 [CSP-J 2022] 上升点列

欧几里得距离\(h=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\) 。

横坐标、纵坐标值均单调不减,A点可向上和向右。

①不连接,用上所有点,序列长度为\(j + 1\)。

②从A点向前枚举
(1)判断点是否合法 (2)所用点\(j \le K\).

01背包与最长子序列结合:

\(f[i][j]\)表示从第i个点开始向前枚举所用点\(j \le K\).,最长合法子序列的值。

d为两点之间需要添加的点。

状态转移 \(f[i][j]= \max (f[i][j],f[r][j-d]+d+1)\)

小寄巧 pair排序:默认第一关键字,然后是第二关键字升序

#include <bits/stdc++.h>
using namespace std;
const int N=510;
int n,k,f[N][N],x,y;
pair<int,int> PII[N];
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>x>>y;
		PII[i]=make_pair(x,y);
	}
	sort(PII+1,PII+n+1);//升序排序
	int ans=0;
	for(int i=1;i<=n;i++){
		int xi=PII[i].first,yi=PII[i].second;
		for(int j=0;j<=k;j++){
			f[i][j]=j+1;//不连接
			for(int r=1;r<i;r++){
				int xr=PII[r].first,yr=PII[r].second;
				if(xr<=xi&&yr<=yi){//判断是否为合法的点
					int d=xi-xr+yi-yr-1;
					if(d<=j) f[i][j]=max(f[i][j],f[r][j-d]+d+1);	
				}
			}
		}
		for(int j=0;j<=k;j++) ans=max(ans,f[i][j]);
	}
	cout<<ans;
	return 0;
}

标签:P8816,PII,int,2022,pair,CSP,点列
From: https://www.cnblogs.com/lcj-blogs/p/17311845.html

相关文章

  • Matlab综合能源系统优化代码 考虑光热电站(CSP电站)和ORC的综合能源系统优化的建模求解
    Matlab综合能源系统优化代码考虑光热电站(CSP电站)和ORC的综合能源系统优化的建模求解程序中包含了新能源发电、ORC循环等,以运行成本、碳排放成本、弃风弃光惩罚成本等为目标函数,基于9节点电网、6节点气网、8节点热网、4节点冷网进行仿真分析。程序中注释详细,数据完整,计算结果可......
  • CSP20230319-4 星际网络II 题解
    〇、题目题目描述随着星际网络的进一步建设和规模的增大,一个新的问题出现在网络工程师面前——地址空间不够用了!原来,星际网络采用了传统的IPv6协议,虽然有\(2^{128}\)级......
  • csp:202104-2:邻域均值
    这道题可以用最简单的方式:四层遍历暴力求解,不过稍微计算一下时间复杂度就会发现这绝对超时。实际上,这道题略微有一点滑动窗口的思想,通过不断更新窗口来求解,可以将算法的时......
  • csp:202109-2:非零段划分
    这道题乍看之下感觉很简单,但是想到的确实O(n^2)的算法,直接超时。只要在暴力算法的基础上考虑到每趟遍历的共性,改进一下,就能通过了!下面是我的100分答案:#include<iostream......
  • csp:202206-3:角色授权
    这一题我认为,难就难在处理输入和定义数据结构。只要数据结构定义对了,那么后面的操作就很简单了。附上正确代码:#include<iostream>#include<string>#include<unordered_s......
  • csp202209-2
    题目:计算机软件能力认证考试系统01背包问题#include<bits/stdc++.h>usingnamespacestd;inta[35];intdp[300005];intmain(){intn,x;cin>>n>>x;......
  • csp201612-4
    题目:计算机软件能力认证考试系统区间DP为了使霍夫曼编码变成字典序,只需要将挑选顺序改为每次都选择相邻的即可每次合并都是累加合并字母频数*1,等同于霍夫曼编码的一单......
  • csp201612-2
    题目:计算机软件能力认证考试系统#include<bits/stdc++.h>usingnamespacestd;doubleT[10]={0,45,345,1245,7745,13745,22495};doubler[10]={3500,5000,8000,12500,......
  • CSP-J/S2022游记(寄)
    Day-29国庆假期开始了,跟clq大佬一起准备29号的复赛Day-23这个国庆每天早上89点去机房下午56点回家,前面五天做了不少题后面两天就开始摆烂了(写作业去了)也重新把自己......
  • csp201703-2
    这道题暴力能过,最离谱的是,我提交了,通过了100分,返回来看一眼代码发现我的数组只开了a[10].....这数据给的太随意了吧#include<bits/stdc++.h>usingnamespacestd;inta......