自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(189)
  • 收藏
  • 关注

原创 中超9 hdu 7072 Boring data structure problem (双向队列,思路转换)

hdu 7072 Boring data structure problem题意:双向队列,逐个在队首或队尾添加元素,在这过程中也会删除队中的一些元素,每次 ′Q′'Q'′Q′ , 询问队列最中间 (mid)(mid)(mid) 的元素是哪个分析:双向队列的妙题(绝妙!)用双向队列 qlqlql 和 qrqrqr 分别来存左侧和右侧添的元素,每进行一次操作,都要重新维护两个队列,保证 qrqrqr的 队首为 midmidmid这题我觉得最妙的就是,这样处理下来,将要删除的元素在.

2021-08-18 22:22:55 166

原创 中超7 hdu 7048 Link with EQ (DP,手模数据推规律,转换,思维)

hdu 7048 Link with EQ题意:一条长桌有 nnn 个座位第 111 个同学随机选 111 个位置坐下接下来的同学,选 111 个离最近同学的距离最大的位置坐下(choose a position whose shortest distance to other students is maximized. 这句话要多看几遍,防止读假题)当最远距离为 111 时(即再坐 111 个同学会有相邻的情况出现),称桌子满了求桌子满时,同学数的期望分析:要求的是期望,

2021-08-15 12:57:52 260

原创 Black and white(巧妙转换,思维,最小生成树)2021牛客暑期多校训练营3

2021牛客暑期多校训练营3B. Black and white题意:​ 给一个矩阵,根据游戏规则去涂色,让求最小权值和。复盘:​ 要求权值和最小,即使要涂色的格子数最小,根据规则较容易推出对于 n*m 的矩阵,需要 n+m-1 格子涂色,分别是每行对应一个格子,每列对应一个格子,减去重复的一个(例如:将第一列和第一行先涂色,n+m-1 个格子,那么剩下格子都会免费被涂色)​ 比赛时推出 n+m-1 这个结论就十分happy,直接去打了一个先遍历选出每一行的最小值(并打上标记),再在剩下的遍历去

2021-07-24 20:52:39 233 1

原创 缩点 边双点双 板子

缩点 差分约束

2022-08-10 14:16:22 204 1

原创 SPFA判负环板题

SPFA判负环

2022-07-24 15:14:29 208

原创 E Falfa with Substring

FFT 容斥 板题

2022-07-24 15:03:42 331 2

原创 F - Sanae and Giant Robot

妙妙题

2022-07-03 10:27:42 140

原创 Codeforces Round #796 (Div. 2)

div2

2022-07-03 10:26:19 134

原创 Hot Water Pipe

妙妙题

2022-07-03 10:01:00 91

原创 Game

莫队板子

2022-07-03 09:59:20 55

原创 E - AND-MEX Walk (并查集理解)

E - AND-MEX Walk分析:结论+并查集的连通性求解首先易证答案就3种:0,1,2故分类讨论(分别对30位求解连通性):0:存在某一位使得u,v连通1:存在某一位的连通块的 边的集合 存在偶数边,这样就能先到 偶数边 再到v 这样保证 ans=12:其余情况#include <bits/stdc++.h>#define int long long #define Pa pair<int,int> using namespace std;

2022-04-26 16:41:08 315

原创 E - The Journey of Geor Autumn(线性DP,前缀和)

E - The Journey of Geor Autumn分析:线性DP+前缀和令dp[i]表示前i个数的方案数贡献dp[i]=∑j=1kdp[i−j]∗(j−1i−1)∗fac[j−1]dp[i]=\sum_{j=1}^k dp[i-j]*(_{j-1}^{i-1})*fac[j-1]dp[i]=j=1∑k​dp[i−j]∗(j−1i−1​)∗fac[j−1]对于dp[i],首先找到最小的元素x,那么x必然会出现在前k个枚举这k个位置,每个位置都是将len 分为了两部分,x在

2022-04-11 16:05:19 399 1

原创 Educational Codeforces Round 126 (Rated for Div. 2)

Educational Codeforces Round 126 (Rated for Div. 2)A - Array Balancing从后往前 直接反转即可,无后效性#include <bits/stdc++.h>#define int long long #define Pa pair<int,int> #define yes cout<<"YES\n";#define no cout<<"NO\n";using namespace

2022-04-11 12:20:19 492 2

原创 FFT 板子

存个偷来的多项式板子,用过的都说好(赞)constexpr int P(998244353), G(3), L(1 << 18);inline void inc(int &x, int y) { x += y; if (x >= P) x -= P;}inline void dec(int &x, int y) { x -= y; if (x < 0) x += P;}inline int mod(LL x) { return x % P;

2022-04-05 14:58:01 432

原创 E - Equal Tree Sums(树上问题)

E - Equal Tree Sums分析:神仙思维+树上问题+结论如果没有ai!=0a_i!=0ai​!=0的条件,直接全取0就是现在有这个条件,想办法往这个条件构造考虑树上的任意一条边的两个端点,往0靠,则正负取,即黑白染色每个点的权值取其度数这样就能保证这一整颗树(无根树)的权值为0,任意去掉一个“根节点”若根为正:则剩下的子树的权值和都是为-1若根伟负:则剩下的子树的权值和都是为1#include <bits/stdc++.h>#define int

2022-03-27 16:45:51 163

原创 D - K-good

D - K-good分析:推式子+分类讨论+分解因数n−(k+1)k/2≡0(mod k)n-(k+1)k/2\equiv 0(mod \ k)n−(k+1)k/2≡0(mod k)因为a[i]>0,所以不是(k−1)k/2(k-1)k/2(k−1)k/2可以看出要分两类:k为奇数:则k为n的因数k为偶数:则k2\frac{k}{2}2k​为n的因数#include <bits/stdc++.h>#define int long l

2022-03-27 16:44:44 138

原创 CodeTON Round 1 (Div. 1 + Div. 2)

CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes!)A - Good Pairs签到~#include <bits/stdc++.h>#define int long long #define Pa pair<int,int> using namespace std;const int N=1e5+5;struct node { int x,id; bool operator < (const

2022-03-27 16:42:48 716

原创 E - Star MST(组合数学+DP)

E - Star MST分析:组合数学 + DP只需要给出根节点出发的n-1条边的长度,剩下的边的长度,就是由这些边推出来的具体原理详见大佬dp[i][j]dp[i][j]dp[i][j] 表示前i条边,最大边到j时的方案(总数)#include <bits/stdc++.h>#define int long long #define Pa pair<int,int> using namespace std;const int N=255, mo

2022-03-23 21:21:58 399

原创 Educational Codeforces Round 125 (Rated for Div. 2)

Educational Codeforces Round 125 (Rated for Div. 2)A - Integer Moves签到#include <bits/stdc++.h>#define int long long #define Pa pair<int,int> using namespace std;const int N=1e5+5;void solve(){ int x,y; cin>>x>>y

2022-03-23 21:20:36 698

原创 D - For Gamers. By Gamers.

D - For Gamers. By Gamers.分析:阅读理解+打表+二分答案(神仙打表)令我方的伤害和血量分别为(a,b)(a,b)(a,b),敌方为(c,d)(c,d)(c,d), 我方的数量为n则,我方能打死敌方的条件是:KaTeX parse error: Expected 'EOF', got '&' at position 14: \frac{d}{na}&̲<&\frac{b}{c} \…b[i]b[i]b[i] 表示花费i最大的伤害

2022-03-23 19:10:51 1023

原创 B - Chessboard

B - Chessboard分析:阅读理解题,组合数学,神仙思维" the shortest distance between any two blocks would remain unchanged after they were painted"主要是这句话,不能让任意两个访问过的格子的最短距离发生改变,想一下可以发现以下几条规则:首先,从始至终都是在同一个连通块,然后不断向外扩展到最后,画满的情况下,任意两点的最短路都是曼哈顿距离最后,结束的地方一定是四角之一为了满足

2022-03-16 20:58:46 556

原创 工作安排(反悔贪心板子题)

工作安排 - 题目 - Daimayuan Online Judge分析:贪心,将set当链表用从后往前考虑(这样先入队的就一直能到最后),碰到更小的时刻,就将之前入队的 能出的全出#include <bits/stdc++.h>#define int long long #define Pa pair<int,int> using namespace std;const int N=1e5+5;struct node { int d,p; bool

2022-03-14 21:01:09 1760

原创 Codeforces Round #775 (Div. 2)

Codeforces Round #775 (Div. 2)A - Game签到题~#include <bits/stdc++.h>#define int long longusing namespace std;const int N=1e3+5;int a[N];void solve(){ int n,m; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; int l=1,

2022-03-13 14:46:22 552

原创 超市(优先队列,区间动态变化)

超市优先队列,区间 l,rl,rl,r 动态选择的一些小技巧本题,就是随时间增加,g[i]g[i]g[i] 入队#include <bits/stdc++.h>#define int long long #define Pa pair<int,int> using namespace std;const int N=1e5+5;struct node { int x,r,w; bool operator < (node b) co

2022-03-11 20:31:41 209

原创 Educational Codeforces Round 124 (Rated for Div. 2)

Educational Codeforces Round 124 (Rated for Div. 2)A - Playoff签到~#include <bits/stdc++.h>#define int long long using namespace std;const int N=1e5+5;void solve(){ int n; cin>>n; int ans=1; for(int i=1;i<=n;i++) an

2022-03-11 12:12:43 435 4

原创 CF770 E - Fair Share(神仙构造)

E - Fair Share分析:思维+欧拉回路首先考虑不成立的情况,当存在某一数只出现奇数次,则不成立对于每个序列都要 L R 二分,奇数号点向偶数号点建边,黑白染色后相邻两点被分别分到LR,这样以来每个序列都是LR二分的然后就是关键,最后要使LR是相同的,对于相同的数字,每两个每两个的建边最后再跑染色,是完全可以构造出来的#include <bits/stdc++.h>#define int long long using namespace std;

2022-02-26 13:39:04 281

原创 CF772 E - Cars(二分图染色,拓扑排序)

E - Cars分析:二分图染色,拓扑排序分两类情况:相遇:只能相向而行(xr<xlx_r<x_lxr​<xl​)相离:只能背向而行(xr>xlx_r>x_lxr​>xl​)因此,不管是什么情况,相邻两点方向不同,先跑一遍二分图染色,不成立,则 “NO”染完色之后,令 1向R走,0向L走,建有向图相遇:xr<xlx_r<x_lxr​<xl​ ,建 1 到 0 的边相离:xr>xlx_r>x_lxr​>xl​

2022-02-25 16:46:21 486

原创 CF773 E - Anonymity Is Important(stl迭代器的各种用法)

E - Anonymity Is Important分析:区间覆盖,set去重,剔除无效信息输出有三种情况:NO:最好处理,在之前被删除过YES:对于当前x,它前面一个,后面一个不与它共有一个有效区间,也就是说x本身有一个有效区间(有效区间是指可能有病人的区间)N/A:即其它情况,与其它(前或后)有重合区间剔除无效信息:对于每一个点,至多两个区间对其有效,一个左一点,一个右一点#include <bits/stdc++.h>#define int long

2022-02-25 14:59:40 564

原创 Codeforces Round #773 (Div. 2)

Codeforces Round #773 (Div. 2)A - Hard Way签到题,当某两个点连线与x轴平行,且第三个点在这条连线之下,才做考虑#include <bits/stdc++.h>#define int long long using namespace std;const int N=1e5+5;void solve(){ int a,b,c,d,e,f; cin>>a>>b>>c>>d

2022-02-24 10:26:35 451

原创 Educational Codeforces Round 123 (Rated for Div. 2)

Educational Codeforces Round 123 (Rated for Div. 2)A - Doors and Keys#include <bits/stdc++.h>#define int long long using namespace std;const int N=1e5+5;void solve(){ string s; cin>>s; int a=0,b=0,c=0,fg=0; for(int i

2022-02-23 16:50:06 194

原创 Codeforces Round #772 (Div. 2)

Codeforces Round #772 (Div. 2)A - Min Or Sum签到题#include <bits/stdc++.h>#define int long long using namespace std;const int N=1e5+5;int a[N];void solve(){ int n; cin>>n; int s=0; for(int i=1;i<=n;i++) cin>>a[

2022-02-22 19:11:17 271

原创 G.ACM is all you need (map 遍历,分类讨论,思维)

G.ACM is all you need分析:map 遍历,分类讨论,思维若对 a[i](1<i<n)a[i](1<i<n)a[i](1<i<n) 展开讨论,会有四种情况a[i]<a[i+1] and a[i]<a[i−1]a[i]<a[i+1] \ and\ a[i]<a[i-1]a[i]<a[i+1] and a[i]<a[i−1]:会对 ans 贡献1,当b比某个值还要大

2022-01-25 20:32:06 387 1

原创 2022牛客寒假算法基础集训营1

2022牛客寒假算法基础集训营1A.九小时九个人九扇门分析:要先发现一个特点:对于多个数的合并,先求和再求根,与先分别求根 再求根的和 的根,效果是一样的,举个栗子:17+23+79=119=2,8+5+7=20=2因此,先分别将n个数求取根,就变成n个1~9的数了然后就是类似01背包的动态转移dp[i][change(x+j)]+=dp[i−1][j]dp[i][change(x+j)]+=dp[i-1][j]dp[i][change(x+j)]+=dp[i−1][j]转换

2022-01-25 20:28:09 102

原创 K. 冒险公社 (线性DP)

K. 冒险公社题意:根据预测情况,求前 n 个岛最多的绿岛数分析:没有思路的情况下,先想了一下暴力,O(3n)O(3^n)O(3n) 显然超时暴力枚举所有情况,每次都会考虑n个岛的具体颜色但实际上,对于每次预判我们只需要考虑当前岛和其前两个岛的颜色即可所以,考虑线性DP,枚举每三个岛的情况,记录状态,再状态转移即可dp[i][y][z]dp[i][y][z]dp[i][y][z] 表示前 i 个岛,第i个岛颜色为z,第i-1个岛颜色为y的情况下,最多绿岛数,那么状态转移方程为,

2022-01-25 15:38:04 444

原创 Codeforces Round #761 (Div. 2)

Codeforces Round #761 (Div. 2)A - Forbidden Subsequence分析:只有当 T=“abc”,且主串排完序后,有"abc"在子序列的时候,需要将 bc 换一下位置#include <bits/stdc++.h>using namespace std;const int N=1e6+5;char s[N];int vis[55];signed main(){ int T; cin>>T; w

2021-12-16 23:46:03 439

原创 Codeforces Round #757 (Div. 2)

Codeforces Round #757 (Div. 2)A. Divan and a Store分析:贪心#include <bits/stdc++.h>#define int long long using namespace std;const int N=1e6+5;int a[N];void solve(){ int n,l,r,k; cin>>n>>l>>r>>k; for(int i

2021-11-26 22:27:50 531

原创 Codeforces Round #756 (Div. 3)

Codeforces Round #756 (Div. 3)A. Make Even分析:就 0,1,2,−10,1,2,-10,1,2,−1 四种情况#include<bits/stdc++.h>#define int long longusing namespace std;const int N=1e6+5;char s[N];signed main(){ int T; cin>>T; while(T--) {

2021-11-26 16:43:44 466 1

原创 2021 ICPC 沈阳站 B. Bitwise Exclusive-OR Sequence(亦或,位运算,菊花图)

2021 ICPC 沈阳站B. Bitwise Exclusive-OR Sequence分析:图由链和环构成考虑环: 从一个点开始到这个点结束的亦或和为0(因为每个点权都用了两次),就是说:若出现环,且环的亦或和不为0,就输出 “-1”考虑链:从链的一端出发 设 (a1,a2,...,an)(a_1,a_2,...,a_n)(a1​,a2​,...,an​) 为链上的点权a1∧a2=w1a_1\land a_2=w_1a1​∧a2​=w1​a2∧a3=w2a_2\land a_3

2021-11-23 19:50:18 1127

原创 Educational Codeforces Round 117 (Rated for Div. 2)

Educational Codeforces Round 117 (Rated for Div. 2)A. Distance构造#include <bits/stdc++.h>#define int long longusing namespace std;const int N=1e5+5;signed main(){ ios_base::sync_with_stdio(0); int T; cin>>T; while(T--)

2021-11-22 20:17:26 822

原创 状压DP入门记录

状压DPAcWing 1064. 小国王分析:状压 DPDPDP 入门题该题当中对国王冲突的处理,即 checkcheckcheck 的位运算处理是状压题型非常经典的操作f[i][j][state]f[i][j][state]f[i][j][state] 表示前 iii 行放置 jjj 个国王,且第 iii 行的放置状态为 statestatestate 的方案数ans=∑state=0f[i][j][state]ans=\sum_{state=0}^{}f[i][j][state

2021-11-07 19:29:11 99

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除