- 博客(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 longstruct node{ int a;int id;}a[10005
2021-08-30 15:37:48
268
原创 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
192
原创 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
182
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
135
原创 洛谷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
223
原创 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
160
原创 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
421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人