合集-学习笔记

摘要:二进制操作 将第k位设为1x = x | (1 << k) 将第k位设为0x = x & -(1 << k) 查询第k位x & (1 << k)(x >> k) & 1如果等于0,那么第k位是0,否则是1 查询是否有相邻两位均为1x & (1 << k)(x >> k) & 1 例题1 P1896 阅读全文
posted @ 2023-10-03 12:06 LouYW07 阅读(16) 评论(0) 推荐(0)
摘要:一种可以单点修改,查询前缀和的数据结构。每次操作O(logn) void update(int x,int k) { for(;x <= n;x += x & (-x)) t[x]+=k; } int query(int x) { int res=0; for(;x;x -= x & (-x)) r 阅读全文
posted @ 2023-10-10 21:49 LouYW07 阅读(47) 评论(0) 推荐(0)
摘要:Dijkstra Dijkstra 是基于贪心的一种算法,适用于非负权的图,求解单源最短路。算法是这样的:找出全局距离最小的点 u,并用这个点去更新连接它的 v 点的距离。时间复杂度 O(n^2),使用堆优化可以优化到 O(m log m) code struct node{ int x; LL y 阅读全文
posted @ 2023-10-12 21:43 LouYW07 阅读(13) 评论(0) 推荐(0)
摘要:并查集 是一种用于处理一些不相交的集合的合并与查询问题的树形数据结构能够将两个集合合并 或者查询某个元素处于哪个集合中 基本操作代码 int find(int x){ if(fa[x] == x) return x; return fa[x] = find(fa[x]); } void merge( 阅读全文
posted @ 2023-10-13 21:11 LouYW07 阅读(14) 评论(0) 推荐(0)
摘要:序言:为了巩固树形DP简单状态设计与转移特设此文 P1352 没有上司的舞会 做法:树形DP入门经典题,显然对于每个节点u有两种可能的情况一种为选一种为不选,且满足u与子节点v不能同时选故可设计出转移方程f[u][0/1]分别表示选或不选 f[u][1] += f[v][0] f[u][0] += 阅读全文
posted @ 2023-11-13 10:46 LouYW07 阅读(17) 评论(0) 推荐(0)