摘要: 题目链接 题目思路 赛时本来用的是线段树上二分,然后T了.. 正解如下 我们考虑维护最左边两个 0的位置,设其依次为 a,b 若查询时,将 a 设为了 1,则答案为 b,否则答案为 a。 修改时,若修改了 a,则令 a=b,之后 b 一直递增,直到找到下一个0。 若修改了 b,则 b之后一直递增,直 阅读全文
posted @ 2021-08-02 20:56 hunxuewangzi 阅读(178) 评论(4) 推荐(0) 编辑
摘要: 题目链接 题目大意 其实是个简单题。。。。但是比较新颖 设$dp[i][j]$表示前$i$次操作,变为$j$的位置后的答案是多少 而每次交换只会影响$u,v$两个数的$dp$值,然后滚动一下数组即可 代码 #include<bits/stdc++.h> using namespace std; ty 阅读全文
posted @ 2021-08-02 20:34 hunxuewangzi 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目大意 走的步数是固定的,那么容易想到矩阵快速幂 然后再把每个点分为两个点有附魔的和没附魔的。 然后根据边的属性重新连边,然后在跑矩阵快速幂即可 复杂度$O(n^3logk)$ 但是hdu现在的机子跑不过去了。。。 代码 #include<bits/stdc++.h> using nam 阅读全文
posted @ 2021-08-02 20:21 hunxuewangzi 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目思路 这就是分层图啊,其实感觉就是多维最短路而已 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int 阅读全文
posted @ 2021-08-02 17:02 hunxuewangzi 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目大意 多组查询 计算$\Large\sum_{i=1}^n C(3i,x)$ 题目思路 设$dp[x][m]=\sum_{i=0}^{i=n-1}C(3i+m,x)$ \(dp[x][0]+dp[x][1]+dp[x][2]=\sum_{i=0}^{i=3n-1}C(i,x)\) 根据 阅读全文
posted @ 2021-08-02 16:37 hunxuewangzi 阅读(80) 评论(0) 推荐(0) 编辑