自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nttttt の blog

简单的做题记录QAQ

  • 博客(120)
  • 收藏
  • 关注

原创 最小区间覆盖

1

2022-08-04 04:28:56 297 1

原创 Codeforces Round #811 (Div. 3)

1

2022-08-04 04:07:32 206

原创 Codeforces Round #809 (Div. 2)

codeforces

2022-07-19 23:10:55 274

原创 Kruskal 重构树

Kruskal 重构树

2022-07-19 23:09:15 199

原创 Codeforces Round #804 (Div. 2)

vp

2022-07-12 15:33:17 128

原创 Codeforces Round #803 (Div. 2)vp

长度为 1 的数列中,有一个数是其他数 XORXORXOR 来, 问这个数是多少随便输出数列中的一个数就行B Rising Sand当 m = 1 时, 最大的数量就是 (n−1)/2(n-1)/2(n−1)/2;m > 1 时,最大数量就是原数列 too talltoo\ talltoo tall 的个数;C 3SUM Closure当正数个数或负数个数 >= 3 时,必定不符合条件,输出 no;当0的个数大于0时,最多有一正一负且即可,否则输出 no;故,满足条件的数组元素个数最多

2022-06-30 10:46:45 117

转载 The Intriguing Obsession 组合数

有三坨小岛,分别有a,b,c个小岛,要求你连边,使得同个岛屿内的小岛若要联通,至少要经过三条边,求合法的方案数。首先不能通过一条边直接连接,说明了岛屿内部不能有边,其次不能通过两条边直接连接,说明了不能有一个点同时连接同一个岛屿的两个点,这样的话,我们就可以有以下的结论,只需要考虑两个岛屿互相直接的连边,最后三种不同连边方式(a->b,b->c,c->a)相乘即可,因为这样同一个岛屿内的点最短长度为3。接着我们考虑两个岛屿之间能怎么连边,首先,因为不能有一个点同时与另外一个岛屿的两个点相连,那么我们就可以通

2022-06-10 22:48:23 111

转载 G. Count the Trains && 楼房重建 线段树区间合并

线段树区间合并

2022-06-09 02:16:12 216

原创 最后的轻语 KMP

#include <iostream>#include <cstring>#include <algorithm>#include <string>using namespace std;const int N = 1e6 + 10;int n, m;int ne[N];char s[N], p[N];int main(){ int T; scanf("%d", &T); while (T--) {

2022-05-04 21:17:08 167

原创 区间mex -- 主席树

题目link思路如何求 mex ?我们可以在一棵权值线段树(类似桶)上维护 aia_iai​,最近一次出现的位置的编号插入到权值线段树中,那么从左到右遍历一下权值线段树(桶)第一个没被插的值就是 ans如何查询区间 ?考虑 查询区间 [l,r][l,r][l,r] 的 mexmexmex为了避免值相同的aia_iai​,对权值线段树维护值的影响我们需要利用主席树来维护插入不同值时的情况只需查询第 yyy 棵树,找到第一个小于 lll 的权值如何找到第一个小于 lll 的权值 ?通过维护

2022-05-01 23:54:03 646

原创 MySQL数据库

学习课程基础篇内容MySQL概述SQL函数约束多表查询事务MySQL概述数据库 DB数据库管理系统 DBMSSQL 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准主流关系型数据库管理系统OracleMySQLSQL ServerSQLiteMySQL 安装启动与停止​ services.msc命令行 net start mysql80 net stop mysql80客户端链接MyS

2022-04-27 02:52:16 1006

原创 背包的综合记录

01背包求方案数思路cnt[i][j]cnt[i][j]cnt[i][j] 表示 考虑第 iii 个 物品,体积不超过 jjj 的最大价值的方案数类似于最短路求方案数cnt[i][j]=cnt[i+1][j−v[i]]cnt[i][j] = cnt[i+1][j-v[i]]cnt[i][j]=cnt[i+1][j−v[i]] ( f[i][j]<f[i+1][j−v[i]]+w[i]f[i][j] < f[i+1][j-v[i]]+w[i]f[i][j]<f[i+1][j

2022-04-24 14:46:09 219

原创 「计组」计算机的基本组成

冯·诺依曼计算机的特点五大部件组成 运算器 控制器 存储器 输入\出设备指令和数据以同等地位存于存储器,可按地址寻访指令和数据用二进制表示指令由操作码和地址码组成存储程序以运算器为中心记: 冯·诺依曼计算机以运算器为中心,运算器会成为瓶颈现代计算机硬件框图存储器的基本组成存储体 - 存储单元 - 存储元件(0/1)存储单元 存放一串二进制代码存储字 存储单元中二进制代码的组合存储字长 存储单元中二进制代码的*每个存储单元赋予一个地址

2022-04-23 10:49:07 1393

原创 H. Maximal AND

题目link思路知识点记录每一位111 的个数从高位到低位补 111 满 nnnvoid solve(){ int n,k; cin>>n>>k; vector<int> a(n+1); forr(i,1,n) cin>>a[i]; map<int,int> bit; forr(i,1,n){ for(int j = 0; j < 31;j++){

2022-04-22 15:23:49 466

原创 E. 2-Letter Strings

题目link思路对于一个字符串分别用a[],b[]a[],b[]a[],b[]来记录每个字符的个数,以及字符串的个数对答案的贡献就是 在这个字符串前面的 第一个字符的个数+第二个字符的个数−2∗字符串个数第一个字符的个数+第二个字符的个数-2*字符串个数第一个字符的个数+第二个字符的个数−2∗字符串个数因为字符串本身也会贡献两个字符的个数,所以减去 222 个int n;ll a[N],b[N],c[N][N];void so1ve(){ cin>>n; ll ans = 0;

2022-04-22 15:11:52 438

原创 区间合并板子

时间复杂度 O(n)O(n)O(n)贪心using pll = pair<int,int>;vector<pll> seg;void merge(){ vector<pll> res; int st = -inf,ed = -inf; for(auto s:seg){ if(ed < s.first){ if(st!=-inf) res.push_back({st,ed});

2022-04-21 19:35:51 130

原创 平面半交板子

Test P4196 [CQOI2006]凸多边形 /【模板】半平面交#include<bits/stdc++.h>using namespace std;typedef pair<double,double> pdd;#define x first#define y secondconst double eps = 1e-8;struct Line{ pdd st,ed;};int sgn(double x){ if(fabs(x) < e

2022-04-20 21:11:41 183

原创 D. Optimal Partition 线段树优化dp

题目link参考思路考虑 f[i]f[i]f[i] 为以iii结尾的最大价值 ,s[i]s[i]s[i] a[]a[ ]a[] 的前缀和数组那么容易想到 f[i]=max(f[i],f[j]+s[i]−s[j])j∈[0,i);f[i] = max(f[i],f[j] + s[i]-s[j]) j \in [0,i);f[i]=max(f[i],f[j]+s[i]−s[j])j∈[0,i);O(n2)O(n^2)O(n2) 的复杂度 考虑优化上式可转化为f[i]={f[j]−j+i,s[i

2022-04-20 12:42:08 622 3

原创 H. Are You Safe? 凸包裸题

题目link思路求凸包判点是否在凸包内注意输出凸包的顺序 Graham算法会方便一些#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>#include<string>#include<vector>#include<map>#include<queue>

2022-04-19 20:25:12 113

原创 求解凸包的两种算法

Graham 算法O(n∗logn)O(n*logn)O(n∗logn)求得凸包点按逆时针转Templateint dcmp(double x, double y){ if(fabs(x - y) < eps) return 0; if(x > y) return 1; return -1;}struct Point{ double x,y; Point(double x = 0,double y = 0):x(

2022-04-19 17:52:53 293

原创 末日将至(简单计算几何)

题目link思路简单计算几何读题!double a,b,k,k1;Point p[100005];bool check(int i){ if(p[i].y- (p[i].x-a)*k1-b > eps) return true; return false;}void solve(){ cin >>a>>b>>n>>k; forr(i,1,n){ cin>>p[i].x>&

2022-04-18 10:51:43 178

原创 彩虹(状压dp)

题目link思路经典状压 dpdpdp用 [0,7m)[0,7^m)[0,7m) 来表示状态每列的涂色状态注意判断相邻同色的方法!代码int qmi(int a,int b){ int res =1; while(b){ if(b&1) res = res*a; a = a*a; b >>= 1; } return res;}int n,m;vector<int> stat

2022-04-18 10:27:15 211

原创 Digital Demonstration 思维

题目link思路思维构造题先用 2和n−22 和 n - 22和n−2 构造到大于114514 然后在用 111 和 $n - 1构造到 114514114514114514signed main(){ int n;cin>>n; if(n <= 4) puts("-1"); else{ vector<int> a; while(n < 114514){ a.push_back

2022-04-18 09:23:05 93

原创 Sakura Substring思维

题目link思路思维题发现 m 与 0 交错出现值最大signed main(){ int n,m;cin>>n>>m; cout << n*(n-1)/2*m << endl; int f = 0; forr(i,1,n){ if(!f) cout << m << " ",f = 1; else cout << 0 << " ",f =

2022-04-18 00:21:06 58

原创 Integers Have Friends 区间gcd + 双指针

题目link思路对于相邻的两个数 a b区间模 ppp 同余 a%p=k1∗x+c,b%p=k2∗x+ca\%p = k1*x+c , b\%p = k2*x+ca%p=k1∗x+c,b%p=k2∗x+c 推出 (a−b)%p=k∗x(a-b) \% p = k*x(a−b)%p=k∗x考虑差分数组,若在差分数组中一段区间 [l,r],gcd>1[l,r] ,gcd >1[l,r],gcd>1 .则在原数组区间 [l−1,r][l-1,r][l−1,r] 模同一个

2022-04-11 19:51:41 157

原创 POJ - 2955 Brackets 区间dp

题目link思路经典区间 dpdpdp 转移方式题目已经给了考虑 dp[i][j]dp[i][j]dp[i][j] 表示在 [i,j][i,j][i,j] 区间内可以匹配的括号对的数量状态转移f[i][j]=f[i+1][j−1]+check(i,j);f[i][j] = f[i+1][j-1] + check(i,j);f[i][j]=f[i+1][j−1]+check(i,j);f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]);f[i][j] = max(f[i]

2022-04-11 19:36:12 155

原创 ST表模板

Templateint f[MAXN][21];void ST(){ // 不用初始化 forr(i,1,n) f[i][0] = b[i]; forr(i,1,20)for(int j = 1;j+(1<<i)-1 <= n;j++){ f[j][i] = max(f[j][i-1],f[j+(1<<(i-1))][i-1]); }}int query(int l,int r){ int s = __lg(r-

2022-04-11 17:49:14 99

原创 Guaba and Computational Geometry

题目link代码int a[300005],b[300005],c[300005],d[300005],w[300005];int n;struct node{ int l,r,w; bool operator<(const node&t)const{ return l < t.l; }}nod[300005];int ans = -1;int mx[300005];void work(){ sort(nod+1,nod

2022-04-11 11:09:16 525 4

原创 Substring Inversion (Easy Version)

题目link思路记录如果在有序的map中, key是int,或者string,它们天然就能比较大小,本身的就是有序的。不用额外的操作。按照键值升序排列map<string, int, greater<string> > mp;代码nt n;string s;int num[550];void solve(){ cin >> n; cin >> s; int res = 0; mem(num,0);

2022-04-11 10:00:14 345

原创 Array Division(背包)

题目link思路考虑 f[i]f[i]f[i] 表示以 iii 结尾最多可以分的区间个数显然 当 a[i]−a[j]>=b[i]−b[j]&&f[j]!=−1a[i] - a[j] >= b[i] - b[j] \&\& f[j] != -1a[i]−a[j]>=b[i]−b[j]&&f[j]!=−1时f[i]=max(f[j]+1,f[i]),j∈[0,i−1]f[i] = max(f[j]+1,f[i]) ,j \in [0,i

2022-04-11 01:06:32 399

原创 Sum of Numerators 思维

题目link思路不约分 res=n∗(n+1)/2res = n*(n+1)/2res=n∗(n+1)/2考虑约分 对于 nnn 来说 有 t=n/2t = n/2t=n/2 个偶数,每次除222相当于把偶数再减少一半,减去 t∗(t+1)/2t*(t+1)/2t∗(t+1)/2 当!n!n!n或!k!k!k时停止int n,k;void solve(){ cin>>n>>k; int res = (n+1)*n/2; while(n&&

2022-04-10 20:34:57 596 3

原创 「Tarjan」无向图强连通分量

学习资源https://www.bilibili.com/video/BV1Q7411e7bM?spm_id_from=333.337.search-card.all.click代码实现-- 算法进阶指南 lydlydlyd结论(法则)1.割点判定法则判断点 xxx 是否为割点,对应边为 x→yx \rightarrow yx→y若xxx不为根节点,low[y]>=dfn[x]low[y] >= dfn[x]low[y]>=dfn[x],则 xxx 为割点若 xxx 为

2022-04-08 21:28:21 552

原创 「Tarjan」有向图强连通分量

内容tarjan求解有向图强连通分量tarjan求无向图割点与桥,tarjan解决2-SAT问题Tarjan求有向图强连通分量学习资源https://www.bilibili.com/video/BV19J411J7AZ?spm_id_from=333.337.search-card.all.click算法竞赛进阶指南-lyd一些结论有向图Tarjan缩点后图为拓扑图且与连通分量相反有向图转化为强连通分量图需要加 max(p,q)max(p,q)max(p,q) 条边,其中pp

2022-04-08 20:13:11 418

原创 “华为杯“ 武汉大学21级新生程序设计竞赛 J.传闻档案

题目link思路反向建图,贪心跑bfs反向建图权值从大到小跑bfs,来确定当前权值可以到达的点,在正常图(正向建边)中即是能到达它的点,然后开个visvisvis数组记录一下点是否来过,贪心下每个点只更新一次,线性复杂度.Codeconst int inf = 0x3f3f3f3f;const int INF = ~0ULL;const int N = 1e6+10;int n,m;struct node{ int id,w; bool operator<(con

2022-04-05 12:25:29 182

原创 2022牛客寒假补题记录 2

A.小沙的炉石数学结论/二分感觉考虑区间合并会更好做一些,不过不好想考虑在有限次的攻击中能造成伤害的最大和最小值攻击最大次数 maxn=min(n,m+1)maxn=min(n,m+1)maxn=min(n,m+1);设攻击 aaa 次,回蓝bbb次,易想到一次攻击一次回蓝造成的伤害是最低的,伤害序列为 1,3,5,7....1,3,5,7....1,3,5,7....,伤害为 a2a^2a2先使用完法术牌再使用攻击牌伤害是最高的,伤害序列为1+b,2+b,3+b....1+b,2+b,3+

2022-03-31 20:50:51 286

原创 D. 388535

学习博客题目link关于异或性质a⨁a=0a \bigoplus a = 0a⨁a=0a!=ba !=ba!=b , a⨁x!=b⨁xa \bigoplus x != b \bigoplus xa⨁x!=b⨁x由于题目讲到 xxx一定存在,根据性质2 那么可知序列aaa中没有相同的元素那么我们可以考虑找到一个xxx使得 xxx异或序列aaa的最大值为RRR,最小值为LLL,因为没有两个元素相同那么xxx 异或序列 aaa 会得到[L,R][L,R][L,R]对于求异或最值很容易想到01

2022-03-29 23:04:03 344

转载 线性筛+质因数分解优化

快速分解质因数,就是我们改变线性筛中的标记数组即vis数组的含义,将其改编为vis[i]表示为i的最小质因子,这样我们就能在O(质因子个数)的复杂度下分解质因数,而传统的分解质因数方法,在数据较强的情况下会被卡来自vector<pair<int, int>> d; int last = vis[x], t = 1; x /= vis[x]; while (vis[x] > 1) { if (vis[x] == last) { t++; } else

2022-03-28 17:19:34 321

原创 Codeforces Round #771 (Div. 2)

20220324A.Reverse找到首个不在自己位置的数翻转一下就可以了// Problem: A. Reverse// Contest: Codeforces - Codeforces Round #771 (Div. 2)// URL: https://codeforces.com/contest/1638/problem/A// Memory Limit: 256 MB// Time Limit: 1000 ms// // Powered by CP Editor (https:/

2022-03-24 10:02:48 397

原创 daimayuan 每日一题-平方计数

题目link学习博客思路ai2+aj=x2a_i^2+a_j=x^2ai2​+aj​=x2移项得: aj=x2−ai2a_j=x^2-a_i^2aj​=x2−ai2​平方差公式得: aj=(x+ai)(x−ai)a_j=(x+a_i)(x-a_i)aj​=(x+ai​)(x−ai​)可以发现 aja_jaj​ 为其两个因子的乘积且满足 (x+ai)−(x−ai)=2∗ai(x+a_i) - (x-a_i) = 2*a_i(x+ai​)−(x−ai​)=2∗ai​1e61e61e6范围内数因

2022-03-21 23:51:45 330 1

原创 daimayuan每日一题- 最大公约数

题目link学习博客思路答案 ans=g=gcd(第一段,第二段.....第k段)ans = g = gcd(第一段,第二段.....第k段)ans=g=gcd(第一段,第二段.....第k段),因为每一段都是ggg的倍数,所以 ∑ai\sum a_i∑ai​ 也是ggg的倍数,因而答案为 ∑ai\sum a_i∑ai​的因子这样可以枚举∑ai\sum a_i∑ai​ 的因子xxx,来计算该因子可以将环分成几段,用cotcotcot来记录因子xxx将环分成的个数的最大值,记录答案 res[cot]

2022-03-21 23:37:25 218

空空如也

空空如也

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

TA关注的人

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