![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ICPC真题
文章平均质量分 52
加油
mfy的1号小迷弟
一个没有对象的野指针qaq
展开
-
2017CCPC哈尔滨B.(二分)
2017CCPC哈尔滨B.(二分)题意:从数组A的所有子连续序列取第k大构成数组B,求B数组第m大思路:B数组第m大具有单调性,枚举第m大x,双指针遍历A数组,找符合第k大数大于等于x的子序列个数res,将res与m做比较,#include<bits/stdc++.h>using namespace std;using ll=long long;const int maxn=2e5+5;int T,n,k,a[maxn];ll m;ll check(int x){ ll原创 2021-10-22 16:49:22 · 129 阅读 · 0 评论 -
2021ccpc网络赛
Jumping Monkey并查集#include<bits/stdc++.h>using namespace std;const int maxn=2e5+5;//string p1="imposter",p2="crewmate";int t,n,dep[maxn],vis[maxn],fa[maxn];vector<int>mp[maxn],mp2[maxn];struct node{ int w,id; bool operator < (const原创 2021-10-11 12:00:57 · 148 阅读 · 0 评论 -
2021ICPC网络赛第一场
A Busiest Computing Nodes题意:有k个时间片编号为0到k-1,有n个任务,对于每个任务i(从0开始编号),从第i%k个时间片开始往后找到第一个空闲的时间片运行,到k-1后下一个是0。线段树+二分二分去找最靠近左边的符合的位置#include<bits/stdc++.h>#define lson rt<<1,l,mid#define rson rt<<1|1,mid+1,rusing namespace std;typedef lo原创 2021-09-20 16:16:40 · 552 阅读 · 1 评论 -
2020CCPC长春:F. Strange Memory(树上启发式合并 + 位运算预处理)
2020CCPC长春:F. Strange Memory(树上启发式合并 + 位运算预处理)题意:一颗树,每个点的权值为aia_iai,计算∑i=1n∑j=i+1n[ai⊕aj=alca(i,j)](i⊕j)\sum_{i=1}^{n}\sum_{j=i+1}^{n}[a_i ⊕a_j=a_{lca(i,j)}](i⊕j)∑i=1n∑j=i+1n[ai⊕aj=alca(i,j)](i⊕j)思路:枚举lca,暴力统计子树,位运算预处理出子树信息用unordered_map常数太大会炸,原创 2021-06-08 20:02:15 · 199 阅读 · 0 评论 -
【树上启发式合并】2019ICPC西安邀请赛:J. And And And(对边)
【树上启发式合并】2019ICPC西安邀请赛:J. And And And(对边)题意:一颗带边权的树,统计所有的点集合中好点对(i,j)(i,j)(i,j)的个数,好点对(i,j)(i,j)(i,j)表示点iii到jjj点所有的路径异或和等于000。思路:显而易见: 以111为根节点,根据异或和的性质,若两个点i,ji,ji,j到111的异或和相等,则(i,j)(i,j)(i,j)为好点对。直接树上启发式,具体细节见代码#include <bits/stdc++.h>using n原创 2021-06-06 22:17:53 · 101 阅读 · 2 评论 -
2020浙江省赛ZJCPC C.Crossword Validation(trie树 + 思维)
咕咕原创 2021-05-25 22:38:17 · 332 阅读 · 0 评论 -
2021浙江 D. Shortest Path Query
菜哭了:(#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=4e5+5;const ll inf=1e15;typedef pair<ll,ll>P; ll n,m,k,q,to[maxn],w[maxn],head[maxn],nex[maxn],dis[maxn][20],d[maxn],vis[maxn],vis2[maxn];void add(ll x,原创 2021-05-23 22:18:12 · 547 阅读 · 2 评论 -
可持续化线段树(静态+动态)
静态#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 5e5+5;int n,m,cnt,root[maxn],a[maxn];vector<int>p;struct node{ int l,r,val;}tr[maxn*4+maxn*17];//log(1e5)=17int build(int l,int r){ int d=++cnt; if(l原创 2021-05-21 22:18:02 · 166 阅读 · 0 评论 -
2018年第十届ACMICPC四川省大学程序设计竞赛补题
2018年第十届ACMICPC四川省大学程序设计竞赛补题A:咕咕,明天写D:题意:在一棵树上存在m个点对,现在需要选一个点作为根节点,使得这m个点对中,每对点对一个节点为另一个节点的父节点,求根节点有多少种选法思路:画图可发现,首先以任意节点为根节点,对于一个点对,若其两个点不在一条链上,则这两个点对的所有子树的节点 +1 ;若在一条链上,则先把树上全部的节点+1,再把父亲到这个儿子的子树(不包括父亲节点) -1 再把儿子的子树+1;最后看节点权值为m的点有多少个,即为答案。考虑树上差分维护原创 2021-05-20 22:07:47 · 110 阅读 · 0 评论 -
2021昆明K-Parallel Sort(思维+复原排列)
2021昆明K-Parallel Sort(思维+复原排列)题意:给定长度为n的1到n的排列,一次操作你可以选择任意个下标数对:(x1,y1),(x2,y2),…(xn,yn)。要求每个下标最多只出现一次。问最少需要几次操作能够将排列恢复为原排列,同时输出每次操作选择的下标。思路:每个数应该在的位置是确定的,因此考虑每个位置上目前的数可能有三种情况:1.已经在应该的位置上,无需交换2. 不在应该的位置上,但与另一个数交换位置后,两数都到了应该的位置上,即下图的一个小有向环,这样的两个数在第一轮原创 2021-05-19 21:43:20 · 199 阅读 · 1 评论