首页 > 其他分享 >20240910

20240910

时间:2024-10-01 11:50:48浏览次数:7  
标签:那么 1e18 可以 编号 区间 20240910 dp

contain

我们可以发现,本质上其实就是选一个数,将其的 \(1\) 不断变为 \(0\) 是否能凑出 \(x\),那么我们可以考虑设 \(dp_i\) 表示 \(i\) 是否被 "包含",那么我们可以考虑转移 \(dp_i \rightarrow dp_{i \oplus {(1 << j)}}\) 前提是 \((bool)(i \& (1 << j)) == true\)

move

我们可以处理出每一个点有那些可以通过的时间,如图(绿色表示可通过,红色表示闸门)
image
那么我们可以将一个绿色的区间看作一个点,那么我们可以将绿色的区间之间互相连边,如图,我编个号:
第 \(1\) 列,编号为 \(1\),区间为 \([1, 1]\)
第 \(1\) 列,编号为 \(2\),区间为 \([51, 1e18]\)
第 \(2\) 列,编号为 \(3\),区间为 \([1, 1e18]\)
第 \(3\) 列,编号为 \(4\),区间为 \([1, 1]\)
第 \(3\) 列,编号为 \(5\),区间为 \([6, 1e18]\)
那么我们将区间之间建边,我们可以按照下图来建边(箭头表示边)
image
简单来说,假设有两个区间分别为 \([l, r]\),\([a, b]\) 那么如果 \(a >= l 且 a <= r\) 或 \(b >= l 且 b <= r\) 就可以建边,易得边的总数与区间的总数都是 \(n\) 的级别,我们可以用这些区间的编号跑一次 \(dij\),然后答案就是最后一列的区间中的答案的最小值

标签:那么,1e18,可以,编号,区间,20240910,dp
From: https://www.cnblogs.com/libohan/p/18442785

相关文章

  • 20240910_021725 c语言 强制转换
    关于强转大转小就需要强转演练......
  • 20240910_031725 c语言 字符做加法
    ......
  • Docker 镜像加速列表(截止到20240910)
    国内经常使用Docker的朋友,可能都会涉及到配置镜像源的操作,来加速自己的镜像拉取。然而这段时间陆续发现曾经常用的国内镜像站(各种云商和高校镜像站)现在已经不能用了,搜索互联网可用镜像站或者镜像加速地址,并测试后汇总如下,使用前请自行斟酌。Docker镜像加速列表(截止到20240910)注......
  • solidworks案例3-20240910
    使用到的命令:扫描,薄壁特征,等距实体......
  • 20240910_104851 mysql 存储过程 2006班
    修改结束符号delimiter新符号创建一个存储过程要求:查询所有的老师信息只显示id与nameDELIMITER$CREATEPROCEDUREshow1()BEGIN SELECTid,NAMEFROMteacher;END$使用存储过程CALLshow1();查看存储过程的创建语句查看名为p1的存储过程的名称showcreatep......