CF
1
mfy的1号小迷弟
一个没有对象的野指针qaq
展开
-
CF刷题G
1594D - The Number of Imposters(简单遍历图) #include<bits/stdc++.h> using namespace std; const int maxn=2e6+5; string s1="imposter",s2="crewmate"; int t,n,m,k,f,ans,p1,p2,a[maxn],vis[maxn],to[maxn],head[maxn],w[maxn],nex[maxn]; void add(int x,int y,int z)原创 2021-10-11 15:52:20 · 178 阅读 · 0 评论 -
【红旗杯?】补题
D. Lowbit 输入一个数组a,对a数组有两种操作 1.l,r : [l,r][l,r][l,r]区间的ai+=lowbit(ai)a_i+=lowbit(a_i)ai+=lowbit(ai) 2.l,r :询问[l,r]区间和,取模998244353 1≤ai≤9982443521\leq{a_i}\leq{998244352}1≤ai≤998244352 思路: 一个数log n 次lowbit后,会变成2的次方,以后再lowbit,就相当于乘以2 #include <bits原创 2021-09-04 21:02:28 · 80 阅读 · 0 评论 -
【DSU ON TREE】CF246E Blood Cousins Return(对点)
【DSU ON TREE】CF246E Blood Cousins Return(对点) 题意: 给定一片森林,每次询问一个节点的K-Son共有个多少不同的名字。一个节点的K-Son即为深度是该节点深度加K的节点。 思路: 用map存储更新,注意是森林 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf=0x3f3f3f3f; const int maxn=1e5+5; const ll原创 2021-06-05 21:49:56 · 111 阅读 · 1 评论 -
【树上启发式合并】CF570D Tree Requests(对点)
CF570D Tree Requests(树上启发式合并+对点) 题意: 给定一个以 1 为根的 n 个结点的树,每个点上有一个字母(a-z),每个点的深度定义为该节点到 1 号结点路径上的点数。每次询问 a, b 查询以 a 为根的子树内深度为 b 的结点上的字母重新排列之后是否能构成回文串。 思路: 一层结点的字母是否能组成回文串,只需观察每个字母出现次数要么都是偶数,要么只有一个字母奇数次出现。 #include<bits/stdc++.h> using namespace std; t.原创 2021-06-05 20:26:26 · 95 阅读 · 0 评论 -
Codeforces Round #675 (Div. 2)D. Returning Home
Codeforces Round #675 (Div. 2)D. Returning Home 题意: 题意为在一个二维平面上给定起点和终点的坐标,每次移动你只能朝着上下左右移动1的距离。 但是这个平面上有m个特殊节点,当你的位置与这个节点的横坐标或者纵坐标相同时,你可以不花费任何时间直接到达这个节点的位置。询问从起点到终点最少要移动多少次(不包括瞬移到特殊节点的移动)。 思路: 考虑点与点之间的转移,一个点到很远的点,可以通过到x,y轴距离最相近的四个点,连边,建边跑dij #include<bit原创 2021-05-10 20:00:06 · 70 阅读 · 0 评论 -
Codeforces Round #673 (Div. 2)C+D
C. k-Amazing Numbers 题意: 有nnn个元素的数组ai(1<=ai<=n)a_i(1<=ai<=n)ai(1<=ai<=n),定义k−amazingk-amazingk−amazing为所有长度为kkk的连续子序列元素中的最小值。输出nnn个数,第iii个位置的数为i−amazingi-amazingi−amazing。若不存在i−amazingi-amazingi−amazing,输出−1-1−1 思路: 用vectorvectorvector存放原创 2021-05-09 21:02:39 · 49 阅读 · 0 评论 -
Codeforces Round #719 (Div. 3)G. To Go Or Not To Go?(模拟)
Codeforces Round #719 (Div. 3)G. To Go Or Not To Go?(模拟) #include <bits/stdc++.h> using namespace std; typedef long long ll; const ll inf=1e18; const int maxn=2e3+5; ll n,m,w,dis[maxn][maxn],sum,mp[maxn][maxn],d; bool vis[maxn][maxn]; int fx[4]={0,0,原创 2021-05-08 13:12:27 · 72 阅读 · 0 评论 -
2021-04-15
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=2e5+5; const int inf=1e9; const ll mod=1e9+7; int t,n,d; ll num[maxn],a[maxn],p[40],can[maxn]; int main(){ num[1]=num[0]=1; for(int i=2;i<=200000;i++){ num[i]=(n原创 2021-04-15 21:10:53 · 43 阅读 · 0 评论 -
Codeforces Round #713 (Div. 3)E.Permutation by Sum(贪心 + 数学归纳法结论)
#include<bits/stdc++.h> using namespace std; const int maxn=1e4; int n,t,p[maxn],l,r,s,ans[maxn],vis[maxn]; int main(){ scanf("%d",&t); while(t--){ memset(vis,0,sizeof(vis)); scanf("%d%d%d%d",&n,&l,&r,&s); int d=n,len=r-l+原创 2021-04-13 20:43:34 · 103 阅读 · 0 评论 -
Codeforces Round #709 (Div. 2)D.Playlist(思维)
Codeforces Round #709 (Div. 2)D.Playlist(思维) 题意: 从1到n反复循环,每次走两步,若当前走的第一步与第二步互质,则删除第二步的位置的元素。最后输出依次删除的元素的位置。 思路: 用堆模拟,先把所以元素放进去,每次取出头做第一步,若第二步的位置与其互质,则标记第二步的位置,以后不再走,并把当前元素重新放进堆 #include<bits/stdc++.h> using namespace std; typedef long long ll; typede原创 2021-04-07 20:15:06 · 125 阅读 · 2 评论 -
Codeforces Round #712 (Div. 2)E. Travelling Salesman Problem(大思维)
Codeforces Round #712 (Div. 2)E. Travelling Salesman Problem(思维) 题意: 有n个城市,每个城市有权值 aiaiai 和 cicici ,从城市 iii 到城市 jjj 要花费 max(aj−ai,ci)max(aj-ai,ci)max(aj−ai,ci)。求从1开始经过所有城市然后回来的最小花费。 思路: 跑环,从哪个点开始都一样。把式子变形 max(0,aj−ai−ci)+cimax(0 , aj-ai-ci)+cimax(0,aj−ai−c原创 2021-04-05 14:48:03 · 265 阅读 · 1 评论 -
Codeforces Beta Round #28 B.pSort(思维 + 并查集)
Codeforces Beta Round #28 B.pSort(思维 + 并查集) 题意: 给定一个含有n个元素的数列,第i号元素开始时数值为i,元素i可以与距离为d[i]的元素进行交换。再给定一个1-n的全排列,问初始的数列可否交换成给定的样式 思路: 考虑到,如果 i 与di是在同一个连通块里,则一定可以通过交换得到目标序列 #include <bits/stdc++.h> using namespace std; typedef long long ll; const long lon原创 2021-03-24 19:40:05 · 335 阅读 · 0 评论 -
Codeforces Round #485 (Div. 1) A. Fair(多源点BFS + 转换思维)
Codeforces Round #485 (Div. 1) A. Fair(多源点BFS + 转换思维) 题意: nnn个点每个点都有一种商品,共有kkk种商品(从1到kkk编号),mmm条边(保证连通),求每个点为起点买到sss种商品的最小距离 思路: 如果以每个点为起点进行nnn次bfsbfsbfs肯定超时,想到以每种商品进行bfsbfsbfs,求出每种商品到第iii个点的最小距离。因为只有kkk种商品,只需要进行kkk次bfsbfsbfs。最后对每个点到kkk种商品的距离排序,取前sss个即可 #i原创 2021-03-22 19:59:26 · 83 阅读 · 0 评论 -
CF. Minimum Grid Path(思维)
CF. Minimum Grid Path(思维) 题意: 你从 (0,0)(0,0)(0,0) 走到 (n,n)(n,n)(n,n) 只能 up/rightup/rightup/right 。每次最多走n步,且走完后方向转变,最多只能转变( n − 1 ) 次,所以就有n个 线段权值 ,代表第K次走的每一步的权值。问最小花费 。 思路: 从2到n枚举次数,假设当前步走到n结束。奇偶分开算 #include<bits/stdc++.h> using namespace std; typedef原创 2021-03-20 16:47:06 · 146 阅读 · 0 评论 -
思维 + 抽屉原理
Codeforces Round #707 (Div. 2, ) C. Going Home 思路: 给出这个值域是2.5e6,开个5e6的数组,n²暴力枚举就往桶里扔。也就是cnt[a[i] + a[j]] ++; 如果这个cnt >= 2那么就找到了答案。 最差情况下循环5e6 + 1次数组中必然会出现某个位置cnt[i] >= 2 #include<bits/stdc++.h> using namespace std; const int maxn=5e6+5; int a[m原创 2021-03-14 14:17:32 · 99 阅读 · 0 评论