【Atcoder】 [ABC221G] Jumping sequence

news/2024/11/7 7:53:38/

题目链接

Atcoder方向
Luogu方向

题目解法

因为上下左右是对横纵坐标分别修改的,不好操作,考虑如何只考虑一维限制
考虑一个重要套路:将坐标轴旋转 45 ° 45\degree 45°,这样终点坐标会变为 A + B , A − B A+B,A-B A+B,AB
然后对横纵坐标分开做背包,然后记录方案即可
可以发现 d p dp dp 过程可以用 b i t s e t bitset bitset 优化,所以时间复杂度 O ( n 2 d ω ) O(\frac{n^2d}{\omega}) O(ωn2d)

#include <bits/stdc++.h>
using namespace std;
const int N(2010),D(1810);
int n,A,B,tA,tB,d[N];
bitset<N*D> bs[N];
inline int read(){int FF=0,RR=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;return FF*RR;
}
int main(){n=read(),tA=read(),tB=read();A=tA+tB,B=tA-tB;int tot=0;for(int i=1;i<=n;i++) d[i]=read(),tot+=d[i];reverse(d+1,d+n+1);if(((A+tot)&1)||((B+tot)&1)){ puts("No");exit(0);}if(A+tot<0||B+tot<0||A>tot||B>tot){ puts("No");exit(0);}bs[0][0]=1;for(int i=1;i<=n;i++) bs[i]=bs[i-1]|(bs[i-1]<<d[i]);if(!bs[n][(A+tot)/2]||!bs[n][(B+tot)/2]){ puts("No");exit(0);}puts("Yes");int cur1=(A+tot)/2,cur2=(B+tot)/2;for(int i=n;i>=1;i--){bool f1=0,f2=0;if(cur1>=d[i]&&bs[i-1][cur1-d[i]]) cur1-=d[i],f1=1;if(cur2>=d[i]&&bs[i-1][cur2-d[i]]) cur2-=d[i],f2=1;
//		cout<<cur1<<' '<<cur2<<' '<<f1<<' '<<f2<<'\n'; if(f1&&f2) putchar('R');if(f1&&!f2) putchar('U');if(!f1&&f2) putchar('D');if(!f1&&!f2) putchar('L'); }return 0;
}

http://www.ppmy.cn/news/1059967.html

相关文章

git操作:将一个仓库的分支提交到另外一个仓库分支

这个操作&#xff0c;一般是同步不同网站的同个仓库&#xff0c;比如说gitee 和github。某个网站更新了&#xff0c;你想同步他的分支过来。然后基于分支开发或者其它。 操作步骤 1.本地先clone 你自己的仓库。也就是要push 分支的仓库。比如A仓库&#xff0c;把B仓库分支&am…

word文档的内部实现原理是什么?

在了解word文档的原理之前&#xff0c;先了解记事本原理。 记事本原理 记事本原理&#xff1a;文件以二进制数据在文件中储存&#xff0c;前几位为编码机制&#xff0c;标识记事本采用了哪一种字符集&#xff0c;后面按照固定位数读取。任何文件的开头都先指定编码&#xff0c…

《存储IO路径》专题:DDIO对系统性能的影响

DDIO对系统性的影响 想象一下,有一天,你在网上冲浪,突然,一个巨大的数据包从天而降,直接砸在了你的电脑上。你一看,哇,是全新的《英雄联盟》版本!你迫不及待地打开了游戏,发现加载速度简直快如闪电。 那么,这个神奇的事情是怎么发生的呢? 其实,这都要归功于DDIO技…

基于javaweb的新生报到系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

python3高级编程

文章目录 1. Python网络编程1.1 服务器端代码(Server)1.2 客户端代码(Client) 2. 多线程2.1 线程模块2.2 使用 threading 模块创建线程2.3 线程同步2.4 线程优先级队列&#xff08; Queue&#xff09; 3. 日期和时间4. SMTP发送邮件4.1 使用Python发送HTML格式的邮件4.2 Python…

JAVA笔试基础知识-final/static+abstract/interface+wait/sleep+tcp/udp

1、final关键字和static关键字的区别 /*** final修饰类&#xff1a;* 使用final修饰类的目的简单明确&#xff0c;表明这个类不能被继承。* 当程序中有永远不会被继承的类时&#xff0c;可以使用final关键字修饰。* 被final修饰的类所有成员方法都将被隐式修饰为final方法。**…

db-gpt安装指南(docker版本)

1 下载源码 下载v0.3.5的源码&#xff0c;截止今天&#xff08;20230823&#xff09;建议安装这个“稳定”版本。 2 构建镜像 依照自己硬件环境&#xff0c;看看是否要调整一下启动参数。 bash docker/build_all_images.sh \ --base-image nvidia/cuda:11.7.1-devel-ubuntu…

FastJson在Java后端方面解析使用(二)

​ JSON现在常用来做前后端数据交互&#xff0c;两个蝴蝶飞只是简单的对JSON做一下讲解和简单使用。关于JSON,我还了解的远远不够。由于本人经验有限&#xff0c;嘴皮子不溜&#xff0c;所以学术性&#xff0c;概念性&#xff0c;底层性的知识点暂时不做介绍。文章中有错误之处…