- 博客(7)
- 收藏
- 关注
原创 Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2) D. Take a Guess
题目链接 题目大意:交互题,有n个数,不超过2n次操作找到第k的数是什么? 操作:你每次操作可以任意选择俩个坐标的数获得他们的按位与或按位或。 3<=n<=1e4 思路:a&b+a|b=a+b,那么就是小学解方程。 #include <bits/stdc++.h> using namespace std; typedef long long ll; #define int long long struct node{ int a;int id; }a[10005
2021-08-30 15:37:48
291
原创 Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) E Bottom-Tier Reversals
题目链接 题目大意: 随机一段排列(n<2022且n为奇数) , 你必须在不超过5*n/2次操作的次数,将该排列变为单调递增。如果存在方法则输出操作次数以及每次操作的数,不存在则输出-1。 每次操作选择一个x(x为奇数)将1~x的数逆转 即 2 3 4 1 5 ->5 1 4 3 2。 思路 为什么要规定n为奇数并且x也为奇数呢? 纸上画一画会发现 每次逆转时,奇数位置上的数还是在奇数位置上,偶数位置上的数还是在偶数位置上。那么很明显对应的奇数位上的数必须是奇数,对应的偶数位上的数也.
2021-08-25 23:10:28
217
原创 Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) D.Up the Strip
题目链接 题目大意: 有一个从1到n的单元格,你需要从n走到1,当你处于单元格x(1<=x<=n)时,你有两种选择, 第一种选择为任意选择一个y(1<=y<x)到达x-y。 第二种选择为任意选择一个y(1<y<=x)到达x/y (向下取整)。 输出不同的方案数。 思路: 暴力O(n^2)时,很容易想到,第一种选择只需把前面各个位置的方案数加起来,前缀和即可。第二种选择我们就直接暴力加上每个的i/j。显然是会超时的。那么我们可以用数论分块来优化第二层...
2021-08-25 16:36:20
211
1
原创 POJ2763Housewife Wind
http://poj.org/problem?id=2763 树链剖分 (边权的计算) 每个儿子对应一个父亲,那么就把边权放在儿子点的位置上。在lca的部分计算时候注意一下。 #include <cstdio> #include <vector> using namespace std; typedef long long ll; const int N=100005; int n,q,s,cnt=0; int father[N],depth[N],hson[N],size
2021-08-18 16:58:36
169
原创 洛谷P3258 [JLOI2014]松鼠的新家 树上差分
https://www.luogu.com.cn/problem/P3258 题目大意:给定一棵树,给n-1个起点与终点,路径上经过的点都需要加1。 树上差分_点差分模板题 点差分 点差分时,俩点之间lca与其父-权值 俩点加权值。 边差分时,俩点加权值,lca-2*权值。 因为每个儿子都只有一个父亲所以边差分时对应的点为父亲->儿子。 最后权值计算应自底向上。 #include <bits/stdc++.h> using namespace std; t..
2021-08-17 22:30:15
262
原创 cf1076E 树上差分—深度差分
https://codeforces.com/problemset/problem/1076/E 大致题意: 给n个节点的树,m次操作给x,y,z,以x为父节点向下深度差小于等于y的点都加上权值z。 树上差分—深度差分 按深度差分。通过离线实现 1.记录所有的修改、 2.深搜每个节点,并且打上差分标记 3,算答案后应回溯(该差分是从根部开始处理) 。 /* cf1076E 树上差分—深度差分 https://codeforc...
2021-08-17 20:36:11
194
原创 Harbour.Space Scholarship Contest 2021-2022 (open for everyone, rated, Div. 1 + Div. 2) E
题意 给一组排列n,最多m次交换机会。 问:交换后的排列,可能与1,2,3,4,5....n左移多少位相同。输出可能的个数以及移动的位数。 代码 #include <bits/stdc++.h> using namespace std; int cy_cnt(vector<int> q, int n)//长度n排列a->排列b 最小交换次数等于 ai与bi建无向边 交换最小数量=n-环数 { for(int i=0;i<n;i++)q[i]--; v.
2021-07-23 12:04:17
457
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅