补题
binggui2
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2021 icpc 南京 h 树形dp
代码中第55行那个位置我没想到,导致wa了几发。 这个题被卡在了t=3的讨论上面,其实把式子推出来发现只和最大值有关系,最大值必选。 子节点的选择和子节点为头节点的子树的选择无关。 #include <bits/stdc++.h> using namespace std; #define ll long long const int N = 1e5+10, M = 2*N; int n; int h[N], ne[M], e[M], idx; ll a[N], t[N]; ll sum[N]原创 2022-01-09 16:06:51 · 752 阅读 · 0 评论 -
2021ccpc网络赛重赛题解
B Kanade Doesn’t Want to Learn CG 比赛的时候是别人写的,想了一种其他的判法,就写了一下 直接判断点和抛物线的关系就行 这个题得注意一点 球可以碰到篮板的上沿 #include <bits/stdc++.h> using namespace std; #define ll long long struct point{ ll x, y; }; struct line{ ll a, b, c; int num(point P){原创 2021-10-25 19:09:43 · 486 阅读 · 0 评论 -
2021牛客多校第七场 F trees 主席树维护dfs序 每个节点都是一个图
dfs树1是想到了,也想到了dfs过程中需用记录每一个历史节点的图,感觉空间复杂度太高了就没细想。 dfs树1,假设该节点为u。维护树2以u为根的子树中 为u树1的祖先的节点 中深度最深的,记为h[u] 该节点为树1中链底部的答案是dep[u] - h[u]。 主席树按照树2的dfs序维护每个节点的h。 dfs回退节点的时候直接用主席树中的历史节点即可。 主席树上使用懒标记,能不下放时就不下放。 #include <cstdio> #include <cstring> #includ原创 2021-08-11 09:01:51 · 200 阅读 · 0 评论 -
2021牛客多校第八场 F 离线求值+bitset存图+滚动数组
F 在线复杂度高就离线 每个点都是由下或右去转移的,只用记录两层节点即可,相当于是一个滚动数组。 对于每个节点来说,用一个bitset存图,用来记录当前点是否可以到达地图上的某个点。 更新完该点的bitset后更新从该点出发的答案。 #include <bits/stdc++.h> using namespace std; const int N = 510, M = 500050; #define node(x, y) x * m + y int n, m, k; char z[N][N原创 2021-08-11 09:00:28 · 162 阅读 · 0 评论 -
2021牛客多校第八场 D
赛场上有一个公式没推出来。 a + b = (a | b) + (a & b) 有了这个公式后直接对于每一个数字来说按位枚举情况,然后找方案数即可。过程中会有回溯去修改历史情况的值。 #include <cstdio> #include <cstring> #include <iostream> using namespace std; const int N = 100010; #define ll long long int n; int b[N], c[原创 2021-08-11 08:59:17 · 154 阅读 · 0 评论 -
【题解】牛客2020年七夕节比赛
D题 bfs + 剪枝 题解说 : 因子最多只有240个左右 #include<iostream> #include<cstdio> #include<cstring> #include<map> #include<algorithm> using namespace std; int n, all; map<int, int>m; void dfs(int x, int y) { if(x == 1){ all = min(原创 2020-08-25 22:31:23 · 271 阅读 · 0 评论 -
陕西师范大学第九届ACM程序设计竞赛 补题
传送门 G 多重背包板子 需要注意的是 如果第 i 个物品, 背包体积为 j ,选择 k 个,k >= 2 for(int k = 2; (w[i] - (1 << k-2)) >= 0 && k*t[i] <= j ;k ++) 而累加的时候是 dp[i][j] = max(dp[i][j] ,dp[i-1][j-k * t[i]] + k * w[i] - (1 << k-1) + 1); 这两步的位运算是不一样的,一个是累加了,一个没累加原创 2020-08-19 09:23:38 · 243 阅读 · 0 评论
分享