首页 > 其他分享 >ABC274D

ABC274D

时间:2022-12-11 11:56:17浏览次数:45  
标签:set ABC274D int d% %% DP

date: 2022-10-23

%%
今年第一次打AT,切5题
之后就没时间了

G是原题,没时间贺了
%%

[[set]] [[DP]]

link: D - Robot Arms 2

xy轴分开考虑,考虑两个相似的DP

数据波动小(1~10),看起来状态数很少,所以直接上了set表示状态,可以自动去重,还不会爆空间
理论上极端数据会炸复杂度,但是它过了

赛时代码:

#include<bits/stdc++.h>
using namespace std;
const int N=505;
int n,x,y,a[N],b[N],ca,cb;
set<int>A[N],B[N];
int main(){
	scanf("%d%d%d",&n,&x,&y);
	for(int i=1;i<=n;i++){																																					
		if(i&1)scanf("%d",&a[++ca]);
		else scanf("%d",&b[++cb]);
	}
	A[0].insert(0);B[0].insert(0);
	for(int i=1;i<=ca;i++){
		for(auto _:A[i-1]){
			A[i].insert(_+a[i]);
			if(i!=1)A[i].insert(_-a[i]);
		}
	}
	for(int i=1;i<=cb;i++){
		for(auto _:B[i-1]){
			B[i].insert(_+b[i]);
			B[i].insert(_-b[i]);
		}
	}
	if(A[ca].find(x)!=A[ca].end()&&B[cb].find(y)!=B[cb].end())printf("Yes");
	else printf("No"); 
}

标签:set,ABC274D,int,d%,%%,DP
From: https://www.cnblogs.com/-WD-/p/16973105.html

相关文章

  • ABC274D题解
    这是一道较为简单的可行性DP。首先看到题目,很容易想到将横纵坐标一起进行处理,但显然时间会炸飞。所以我们将横纵坐标拆开分别处理,那么就有如下状态:\(dpa_{i,j}\)表示在......