ICode9

精准搜索请尝试: 精确搜索
  • YbtOJ 「基础算法」第3章 二分算法2022-08-14 14:02:25

    例题1.数列分段 二分每段和的最大值。check 时从左往右扫,如果当前段的和大于限制则新开一段。 code #include<bits/stdc++.h> using namespace std; const int N=1e5+5; int n,m,a[N]; int maxn,s; int check(int x) { int cnt=1,sum=0; for(int i=1;i<=n;i++) { if(sum+a[i

  • YbtOJ 递推算法 做题记录2022-08-12 22:03:31

    例题 1 错排问题 \(f_i\) 表示前 \(i\) 个数的错排。易得递推式为 \(f_i=(i-1)\times(f_{i-1}+f_{i-2})\)。 code #include<bits/stdc++.h> #define int long long using namespace std; int n,f[25]; signed main() { scanf("%lld",&n); f[1]=0,f[2]=1; for(int i=

  • YbtOJ「图论」第1章 二分图匹配 J. 祭祀 题解--zhengjun2022-06-28 21:04:09

    思路 考虑处理出原 dag 图的两两点之间能否可达(可用 Floyd),然后题中是求最大的若干点之间没有两两可达的点对。 那么建出二分图之后,发现如果出现一对匹配,那么相当于这两个点里面有一个不能选了,所以答案就是总的点数-最大匹配。 代码 #include<bits/stdc++.h> using namespace std;t

  • YbtOJ「图论」第1章 二分图匹配 K. 男孩女孩 题解--zhengjun2022-06-28 20:02:31

    思路 会发现要求一个最大的完全子图(每个点两两之间有连边),所以考虑把建出原图的反图,然后每个点两两之间有连边就转化成为了每个点两两之间没有连边,也就是二分图的最大独立子集,是需要用总点数-最大匹配即可。 代码 #include<bits/stdc++.h> using namespace std;typedef long long l

  • CF700E Cool Slogans / YbtOJ「字符串算法」第3章 后缀自动机 G. 重复子串 题解--zhengjun2022-06-11 16:05:16

    题目大意 选出一个字符串序列 \(s\),使得对于每一个 \(s_i\),都是原串的子串,且每个 \(s_i\) 在 \(s_{i-1}\) 中都出现过至少两次,求最大的序列长度。 思路 发现其实可以做到让所有选出的字符串都是上一个字符串的后缀,因为如果后面留了一个尾巴,那么前面的字符串把这个尾巴砍了是不影响

  • 【YBTOJ进阶训练指导】星星问题【树状数组】2022-03-02 19:58:22

    思路: 一道经典的二维偏序 c o d e code code #include<iostream> #include<cstdio> #include<algorithm

  • YbtOJ-序列计数【组合数学,莫队】2022-02-09 16:35:30

    正题 题目大意 求有多少个长度在\(l,r\)之间,值域是\([1,n]\)的严格上升子序列 \(1\leq T,n\leq 10^5,1\leq l\leq r\leq 10^5\) 解题思路 先转换成两个前缀和的差,那么相当于我们要快速求 \[\sum_{i=0}^m\binom{n}{i} \]的值。 考虑到我们有组合数恒等式\(\binom n m=\binom{n-1}

  • YbtOJ-连通的图【结论,线性基】2022-02-08 21:04:35

    正题 题目大意 给出\(n\)个点\(n+k-1\)条边的一张图,求有多少种删除若干条边的方案使得图依旧联通。 \(1\leq n\leq 10^5,1\leq k\leq 10\) 解题思路 注意到\(k\)很小,我们考虑先搞出一棵\(dfs\)树然后剩下的做非树边。 这里有个结论是,我们将第\(i\)条非树边权值定为\(2^i\),树边权

  • 【YBTOJ进阶训练指导】出栈序列【模拟】【贪心】2022-02-08 19:34:33

    思路: 字典序最大,所以直接贪心每次出栈的是最大 c o d e code code #include<iostream> #include<cstdio>

  • Ybtoj #735. 「动态树」毒瘤染色2022-02-08 19:31:07

    题面传送门 奇妙的被强制套上LCT的二合一。 首先考虑加边怎么做。看到仙人掌想到建圆方树,由于强制在线考虑用LCT维护。每次加入先看路径上有没有方点,如果有则不能加入,如果没有则看有没有成环,如果不成环直接加入,否则将环断开并新建立方点,并将环上所有点连向方点。就可以维护加边操

  • 【YBTOJ进阶训练指导】求f函数 【递推】2022-02-08 12:59:40

    思路: 直接按题目要求递推即可 c o d e code code #include<iostream> #include<cstdio> using namespace

  • YbtOJ-毒瘤染色【LCT】2022-02-07 21:34:43

    正题 题目大意 开始时有一张\(n\)个点没有边的图,\(q\)次操作加入一条边,如果加入后图是一个沙漠(只有边仙人掌的图)时才能够加入。 每次加入后询问:开始所有点都是白色,\(k\)次随机挑一个点染黑,求最后白色点的连通块数和黑色点的连通块数的和。 强制在线 \(1\leq n\leq 10^5,1\leq q\l

  • YbtOJ-森林之和【dp】2022-02-07 21:05:16

    正题 题目大意 一个节点的权值定义为它度数的平方,求所有 n n n个点的有标号森林的所有节点权值和。 1 ≤

  • YbtOJ-森林之和【dp】2022-02-07 21:03:24

    正题 题目大意 一个节点的权值定义为它度数的平方,求所有\(n\)个点的有标号森林的所有节点权值和。 \(1\leq n,T\leq 5\times 10^3\) 解题思路 首先因为所有节点本质相同,所以我们可以只考虑一个节点所有情况下的权值和。 然后考虑这个平方和怎么做,我们可以视为指定一个节点连出两

  • Ybtoj #891. 「高斯消元」生日礼物2022-02-06 21:03:11

    题面传送门 如果设\(f_{i,j}\)为当前位置要不要取反,那么显然可以列出\(nm\)个方程。 直接解方程是\(O(\frac{n^3m^3}{w})\)的显然过不去。 考虑每个方程的项数很少,所以可以主元法。具体的,令前两行和第一列为变量,则每个位置\((i,j)\)都可以用\((i-2,j-1)\)位置的等式表达出来,这样每

  • Ybtoj #644. 「平衡树」模糊序列2022-02-06 18:31:07

    题面传送门 考虑普通LIS其实除了树状数组还有另外一个二分栈做法。 考虑仿照二分栈设\(dp_i\)为长度为\(i\)的LIS的最小的最后一个数。 如果来了一个区间\([l,r]\),那么找到在f上对应能转移的区间\([l',r']\) 则发现对应的操作是加入一个数,删除一个数,区间加\(1\),二分,可以用一个平衡

  • Ybtoj #534. 「后缀数组」跳蚤的串2022-02-06 16:31:27

    题面传送门 最大值最小显然想到二分。 因为答案肯定是原序列的一个子串,所以直接二分这个子串在本质不同子串中的排名即可。 因为已经预处理了SA,所以在check的时候倒叙,显然一个后缀中字典序最大的串是最长的子串,所以倒叙以后,如果当前点的字典序大于二分的字典序,那么这个位置和上一

  • YbtOJ-变量观测【鸽笼原理】2022-02-05 20:00:24

    正题 题目大意 有\(n\)个数字开始都是\(0\),要求有\(q\)次操作。 新建一个观测员,观测其中的\(k\)个数,当这\(k\)个数从此刻开始变化量不小于\(t\)时观测结束。 将第\(i\)个数加\(v\),并输出此时观测结束的观测员编号。 强制在线 \(1\leq n,q\leq 2\times 10^5,1\leq k\leq 3,1\leq

  • 【YBTOJ】线性筛素数2022-02-05 13:58:40

    思路: 无( c o d e code code #include<iostream> #include<cstdio> using namespace std; long lo

  • 【YBTOJ】序列的第k个数2021-12-24 19:30:01

    思路: 分类讨论 c o d e code code #include<iostream> #include<cstdio> using namespace std; lon

  • 【ybtoj 高效进阶 1.2】 【贪心】 最大积分2021-12-18 17:03:17

    【ybtoj 高效进阶 1.2】 【贪心】 最大积分 题目 解题思路 同一件物品等级高时卖出贡献更大 那么给物品的贡献值排个序 按贡献值从小到大卖出 代码 #include<algorithm> #include<iostream> #include<cstdio> using namespace std; struct lzf{ long long k,v; }a[120];

  • 【ybtoj 字符串进阶】A. 1.生日排序2021-12-18 16:31:16

    A. 1.生日排序 题面解题思路Code ybtoj 字符串进阶 A. 1.生日排序 题面 解题思路 就……排序就好了 Code #include <bits/stdc++.h> using namespace std; struct DT{ string s; int y, m, d; }a[110]; int n; bool cmp(const DT&k, const DT&l) { if(k.y ==

  • 【ybtoj 宽搜进阶】【二分】A. 1.最小权值2021-12-18 15:59:29

    A. 1.最小权值 题面解题思路Code ybtoj 宽搜进阶 A. 1.最小权值 题面 解题思路 二分,路径上最大的数 宽搜时加上条件,下一个点不能超过mid,就一定能保证这条路的最大值不大于mid 因为二分会不断缩减到正确答案,最后答案路径的最大值一定等于mid 可以重复走,可以发现只要能

  • ybtoj&洛谷P4426:毒瘤(虚树,环套树,暴力)2021-12-05 22:02:47

    传送门 解析 顾名思义,十分毒瘤 但有一说一,相对来说这题没有之前做的那两个黑题那么(重读)恶心 而且本题如果放在考场上,暴力枚举非树边的状态dp就可以拿到70分的好成绩(改一改能改到75) 现在考虑正解 注意到,每次暴力枚举非树边的状态进行dp时,状态发生改变的其实来来回回就是少数的

  • 【ybtoj高效进阶 21185】树上询问(LCT)2021-11-15 21:30:50

    树上询问 题目链接:ybtoj高效进阶 21185 题目大意 给你一个森林,一开始有 n 个点,然后要支持三个操作: 把一个点定做它树的根,查询一个点子树大小,连接两个不在同一棵树上的点,然后指定其中一个树原来的根是新树的根。 思路 小前言 这题改半天一直都是

专注分享技术,共同学习,共同进步。侵权联系[[email protected]]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有