
思维
thusloop
这个作者很懒,什么都没留下…
展开
-
D. Toss a Coin to Your Graph...(二分)
D. Toss a Coin to Your Graph二分答案 x权值比小于等于x的点重新建图,之后拓扑排序,判断最长链是否大于等于k或者是否存在环//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi first#define se second#define pb push_back#原创 2022-05-16 14:50:35 · 237 阅读 · 0 评论 -
n个数 所有3个数的乘积和
141 2 2 3求所有3个数乘积和复杂度O(n)#include <bits/stdc++.h>#define int long longusing namespace std;const int inf = 2e18 + 100;const int maxn = 2e5 + 100;int a[maxn],pre[maxn];signed main(){ int tt; cin>>tt; while(tt--) { int n; cin&g原创 2021-10-10 21:26:08 · 458 阅读 · 0 评论 -
E - Gojou and Matrix Game
E - Gojou and Matrix Game因为v[i][j]的值都不同 所以先找最大值,一定先手胜利(第二个人选了之后第一个人可以无限次选最大值)之后在曼哈顿距离外的点一定不能赢在曼哈顿距离内的找一点最大值(也一定赢)……………………(不断去找 且要维护菱形的面积,可以用斜线去表示菱形)#pragma GCC optimize(2)#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>//#defin原创 2022-03-28 15:17:06 · 830 阅读 · 1 评论 -
E.Rescheduling the Exam
显然可以二分答案,check里 记录a[i]-a[i-1]-1<x的数量计为nd 计即需要移动的数量如果nd>=3 则无解nd =2 这两个需要移动的数要连续nd=1 去判断是否有可以移动到的位置nd=0 一定可以(有一点细节//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi原创 2022-03-09 10:17:30 · 477 阅读 · 1 评论 -
D. Big Brush
Big Brush题意:每次涂色2×2的矩阵 (可以覆盖),给出目标矩阵,求涂色方案。思路:反过来想,最后一次涂色一定 是2×2的矩阵内颜色相同(可以多个起点),反过来bfs修改已经处理过的矩阵为0;//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi first#define se sec原创 2022-02-15 15:57:32 · 655 阅读 · 0 评论 -
Codeforces Global Round 19 E. Best Pair
Best Pair题意:cntx 为x出现次数 f(x,y) = (cntx+cnty)*(x+y); 求不被禁用的最大f(x,y);思路:按cnt (出现次数)分类 ,最多有 根号n类 再去枚举x,y//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi first#define se s原创 2022-02-13 12:29:03 · 819 阅读 · 0 评论 -
E. String Reversal(逆序对)
Realistic Gameplay题意:给出字符串S 求 交换相邻字符后变成 S的逆序 的最小操作。思路:给S的逆序每个字符从小到大赋值 再 对应到S中 即求S的逆序对个数比如 S:aaaza 的逆序 T:azaaa t[]=1,2,3,3,3. s[]=1,3,3,2,3//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int原创 2022-01-20 14:49:47 · 681 阅读 · 1 评论 -
E. Black and White Tree
Black and White Tree题意:n个节点的树,至少有两个黑色的节点。你可以选择任意一个黑色节点向它走一步。对于任意两个相邻的操作不能选择同一个黑色的节点。 问从某个结点出发能否到达黑色结点思路:黑色结点 和黑色结点相邻的一定可以,或者 某个结点的子节点可以且子树中有2个以上黑色结点//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#defin原创 2022-01-19 12:57:19 · 531 阅读 · 0 评论 -
G - MinOr Tree(按位贪心)
题意:在一个有权无向联通图上,找出一颗生成子树,使得生成子树所有边的或最小。思路:从高位到低位贪心,如果高位为1的舍去任然可以有生成子树 则可以舍去//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi first#define se second#define pb push_back#de原创 2022-01-12 10:52:02 · 339 阅读 · 0 评论 -
E. William The Oblivious(线段树)
题意:给定只包含abc的字符串 ,q次单点修改 每次修改后问 使得不包含abc为子序列的最小操作数是多少设t[k].abc为不包含abc为子序列的最小操作数得到以下状态转移 t[k].a=t[k<<1].a+t[k<<1|1].a; t[k].b=t[k<<1].b+t[k<<1|1].b; t[k].c=t[k<<1].c+t[k<<1|1].c; t[k].ab=min(t[k<<1].a原创 2021-11-30 19:16:01 · 391 阅读 · 2 评论 -
D. Treelabeling
Treelabeling结论:每个点都能是必胜点,最高位的1在相同位子则能走,否则不能走那么可以按1的最高位子来处理(最高位的1在相同位子的进行分堆) ,对树奇偶染色,同一堆的不能分开放//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi first#define se second#def原创 2021-11-13 12:59:59 · 783 阅读 · 0 评论 -
Producing Snow(二分,前缀,差分)
Producing Snow题意:给你个数字n 表示有n天。每天堆起大小为 a[i] 的雪堆,每天的温度分别为 b[i] , 每天对于每个雪堆,会融化 b[i] 的雪。求每天分别总共要融化多少雪?思路:枚举第i天的雪,二分求融化第i天的雪需要几天 设 l 到 r 天可以融化该雪 ,l —— r- 1天 的贡献是完整的,第r天贡献是不完整的用差分维护第i天的温度的完整贡献次数。//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","i原创 2021-10-27 21:39:52 · 181 阅读 · 0 评论 -
Pchelyonok and Segments(二分+dp)
Pchelyonok and Segments题意:找出k的最大值使得连续段递增。思路:二分找k最大值,check里用dp判断是否可行 ,dp[i][j]为i之前的j个值连续的最小值复杂度:n √n*long n//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi first#define原创 2021-10-26 16:38:59 · 252 阅读 · 0 评论 -
D. Captain Flint and Treasure
Captain Flint and Treasure思路:子树中为正的留着(入队列),负的舍去(最后输出,入栈)#pragma GCC optimize(2)#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define ll long long#define fi first#define se second#define pb push_back#define pii pair<int,in原创 2021-10-24 14:27:02 · 75 阅读 · 0 评论 -
Ciel and Flowers
Ciel and Flowers//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi first#define se second#define pb push_back#define pii pair<int,int>#define IOS ios::sync_with_std原创 2021-10-22 15:43:25 · 119 阅读 · 0 评论 -
E. Gardener and Tree(拓扑)
Gardener and Tree题意:k次操作,每次删去叶子节点,问最后剩的节点思路:拓扑,度为1的就是叶子结点//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi first#define se second#define pb push_back#define pii pair<原创 2021-10-14 17:00:12 · 441 阅读 · 0 评论 -
D2. Half of Same(随机化)
Half of Same题意:给出数组,使得至少一半的数减去 k 的倍数后都相同,问k的最大值思路:若 a%k=b%k 则 a 和 b 减去k的若干倍后可以相同 ,即 (a-b)%k=0 也就是k一定是(a-b)的因数,那么可以随机选2个数,这2个数在最终答案序列中的概率为 1/4 , 不成功的概率为 3/4 ,可以取1k次 则不成功概率为 (3/4)1000(显然很小)选了2个数之后枚举差的因数,判断是否可行。//#pragma GCC optimize(2)//#pragma GCC原创 2021-10-14 16:52:03 · 443 阅读 · 0 评论 -
Staircases(思维)
Staircases题意:n*m的格子 每次操作反转一个格子,每次操作后求现在能形成的楼梯数量;思路:可以先求出操作之前总的楼梯数,之后每次操作后减去或加上该格子所做的贡献;总楼梯数可以枚举楼梯占的格子进行计数(手算一下就有规律了(分奇偶))一个格子的贡献为向 : 左上走的 ×下右走的+上左走的 × 右下走的(格子数)。//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/s原创 2021-10-11 17:25:15 · 186 阅读 · 0 评论 -
D. Returning Home(建边,dij堆优化)
Returning Home题意:给出一个 n * n 的二维平面,现在要从点 ( sx , sy ) 到达点 ( fx , fy ),在平面上有 m 个传送门,共有两次操作:1,向上、下、左、右移动一个单位,代价为一2,可以瞬间移动到同行或同列的传送门,没有代价。求起点到终点的最小代价。思路:分别按x,y排序,之后建边,跑dij//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bit原创 2021-10-07 13:48:39 · 185 阅读 · 0 评论 -
D. Three Sequences(差分维护值)
Three Sequences//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define fi first#define se second#define pii pair<int,int>#define IOS ios::sync_with_stdio(false);cin.tie(0);c原创 2021-10-03 13:53:28 · 171 阅读 · 0 评论 -
Sage‘s Birthday (hard version)
Sage’s Birthday (hard version)题意:求数组重新排列后谷的最大数量(即b[i]<b[i-1]&&b[i]<b[i+1])思路:贪心奇数位放最大的,偶数位贪心放(先放大的,若与相邻的相等则放最小的)#pragma GCC optimize(2)#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>#define int long long#define IO原创 2021-10-02 11:37:10 · 135 阅读 · 0 评论 -
Tree Tag(树的直径)
Tree Tag题目:给一棵树,Alice 位于a点,最多移动da步,Bob 位于b点,最多移动db步,问Alice能否与Bob 位于同一个思路:三个条件,一. 1步就到。二. 2da>=db(即Bob只能后退,不能跨越Alice)。三. 直径<=da2 则Alice赢,否则Bob赢#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.ti原创 2021-09-29 20:38:37 · 237 阅读 · 0 评论 -
E. Number of Simple Paths(基环树)
E. Number of Simple Paths题意:给一棵n个节点n条边的基环树,求图中简单路径的条数。思路:若两个节点间的简单路径经过环,则可以有2条路可走,否则就1条, 因此可以求出多少点之间的路径步经过环就好了。可以以环为根进行dfs 判环可以用拓扑序。#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);usin原创 2021-09-27 21:07:34 · 220 阅读 · 0 评论 -
Engineer Artem(奇偶性质)
Engineer Artem题意:a[i][j]可加1使得相邻元素不相等;思路:(i+j) 分奇偶讨论。#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);using namespace std;const int inf=2e18+100;const int maxn=2e5+100;int a[110][110];原创 2021-09-24 11:05:38 · 128 阅读 · 0 评论 -
Apollo versus Pan(位运算)
Apollo versus Pan题目:思路:求f(j), 可以预处理 第i为上1的个数,贡献即为 (1<<i )*cnt[i]。g(j)同理。#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);using namespace std;const int inf=2e18+100;const int ma原创 2021-09-22 15:46:33 · 146 阅读 · 0 评论 -
Genius‘s Gambit(构造)
Genius’s Gambit题意:由a个0和b个1组成的二进制数(不含前导0)x和y使得x-y的二进制数恰好有k个1思路:当 k<=a时比较好考虑 即 1000和 0001 类似这种,最多的1的个数为0的个数 ,当 k<=a+b-2 考虑 1111000-1011001=011111 最多可以有a+b-2个1。#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false原创 2021-09-21 16:46:55 · 189 阅读 · 0 评论 -
The Strongest Build(a,b,有序数列的和维护第k大的思想)
The Strongest Build题意 :给了n组有序数组 ,每个数组中取一个数使得和最大的取法 ,(取法不能为被禁用的取法 )思路:a,b,有序数列求和 取第k大的思想,先把a,b中最大的放入优先队列(大根堆) ,a[n-1]+b[n],a[n]+b[n-1]放入优先队列(下表不越界的情况下) ,并且每个取法只能放入一次优先队列,执行到k次的时候就是答案了 。这题就是用这个思想维护一下最大值,当最大值能取的时候直接输出。#include<bits/stdc++.h>#define原创 2021-09-21 11:57:51 · 439 阅读 · 2 评论 -
Codeforces Round #743 (Div. 2) Book
Book题意 :读完第i本书要先读完 k1,k2……的书,从上往下读书,问读完所有书要多少次。思路: 先想一个特殊情况,读1的前置条件是2,读2的前置条件是1,那么相当于形成了一个环,就永远不可能读完,因此可以想到图来解决,进一步模拟样例发现,设要读完 i 需要读完 k1,k2,k3,那么可以建立 k1->i ,k2->i,k3->i 的图,之后用类似拓扑排序来遍历图 ,拓扑排序后如果有环则输出-1,如果后续节点比当前大,则可以在同一遍内读完,否则就要比当前节点多一遍来读#inclu原创 2021-09-19 12:30:29 · 207 阅读 · 0 评论 -
Bandit in a City
Bandit in a City题意 :非叶子节点的值可以分散的转移到下面的叶子节点,求叶子节点最大值的最小值fi为i为根子树的和,yei为i为根子树的叶子节点和#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);using namespace std;const int inf=2e18+100;const int m原创 2021-09-18 17:04:46 · 101 阅读 · 0 评论 -
Dog Snacks
Dog Snacks设f[i]为以i为根节点离i最近的叶子节点的距离非根节点的子树间的转移为 k至少为f[i]+2如果是根节点 则为最大子树k至少为f[i]+1;#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);using namespace std;const int inf=2e18+100;const int原创 2021-09-15 17:10:01 · 137 阅读 · 0 评论 -
D. Grime Zoo(思维)
D. Grime Zoox>y时 前面全放0 后面全放1(0和1的数量固定时0 0和1 1不变 ,01和10的和不变)枚举分界线 维护最小值 (可以先假设问号全放0,之后从前往后 问号位放1,O(1)求出当前删除0后的失去的贡献和加上1获得的贡献)#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);using na.原创 2021-09-14 20:46:01 · 173 阅读 · 0 评论 -
Uniformly Distributed
思路:i+j 和相同的点 涂色相同#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);using namespace std;const int mod=998244353;char a[600][600];char b[1200];int qpow(int a,int b){ int ans=1; while..原创 2021-05-24 16:29:56 · 427 阅读 · 0 评论 -
Buds Re-hanging(dfs 思维)
传送门思路:以所有bud为根节点 之后断开bud与其父节点的连线。最后能形成了若干个深度为2的子树。之后将一个子树放在另一个子树的叶子节点上 使得 叶子节点总数 -1#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);using namespace std;const int inf=2e18+100;const int原创 2021-09-14 16:51:04 · 178 阅读 · 0 评论 -
Harbour.Space Scholarship Contest 2021-2022 Permutation Shift
题目连接思路:下表从0开始,之后a[i]-- 方便操作 {2,3,4,1} -->{1,2,3,0}well-known problem :若排列数组a通过交换变为排列数组b 需要建图 在 a[i]与b[i] 之间建立一条无向边 需要交换的次数为 n-c(c为联通分支数)比如 a={1,2,0,3} b= {1,2,3,0}则 1–1 2–2 0—3 建边 联通分支为c=3 则需要交换 4-3 =1 次(可用并查集实现)位移k次后 p[i]=(i-k+n)%n;k=.原创 2021-07-23 11:23:33 · 215 阅读 · 0 评论 -
Kth Excluded
d[i]为 i 之前有效元素再进行二分#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);using namespace std;const int inf=2e18+100;const int maxn=1e5+100;int a[maxn],d[maxn];signed main(){ int n,q; c.原创 2021-07-07 00:11:13 · 211 阅读 · 0 评论 -
aab aba baa(思维+组合数)
总的个数为 a+b 中取 a 个 即 dp [a+b][a] ,第一位为 a 的个数为 dp[a+b-1][a - 1] (也就是字典序在前面)1,若 k < = dp[a+b-1][a-1] 则第一位为 a2 若 k > dp[a+b-1][a-1] 则第一位为b#include<bits/stdc++.h>#define int long long#define IOS ios::sync_with_stdio(false);cin.tie(0);cout..原创 2021-07-06 22:02:42 · 670 阅读 · 0 评论