ICode9

精准搜索请尝试: 精确搜索
  • 【ybtoj高效进阶 21289】头文件 C(图论)(dfs)2021-10-27 07:31:07

    头文件 C 题目链接:ybtoj高效进阶 21289 题目大意 给你一个无向图。 多次询问,每次给你一个区间,你只能保留区间内的点,然后如果一条边连接的点中有不在的或两个点的编号差大于 K 那这个边也不存在。 所有询问的 K 相同,然后对于每个询问输出当前情况下图的连通块数。 思路 考虑一开始

  • 【ybtoj高效进阶 21252】逛动物园(线段树)(dfs)2021-10-27 07:00:32

    逛动物园 题目链接:ybtoj高效进阶 21252 题目大意 给你 n 个点,值可能是 a,b,c(等概率),然后有以下规则:a 优于 b,b 优于 c,c 优于 a。 然后要你处理若干次操作:把两个点放在一起,保留优的点。然后问你有多少的概率使得 x 点到现在还存在。 思路 首先考虑赢的概率,不难发现本场赢的是 \(\frac

  • 【ybtoj高效进阶 21253】序列修改(分类讨论)(set)(树状数组)2021-10-27 07:00:25

    序列修改 题目链接:ybtoj高效进阶 21253 题目大意 给你一个序列,然后一个序列的费用是每个前缀的大小乘里面的数字种类的和。 然后你可以至多修改一个数,费用是原来到现在的绝对值,要你最小化序列费用和修改费用的和。 思路 首先我们可以简单算出一开始不修改的费用,然后考虑修改之后会

  • 【ybtoj高效进阶 21254】摆放鞋子(二分图匹配)(网络流)2021-10-27 07:00:07

    摆放鞋子 题目链接:ybtoj高效进阶 21254 题目大意 给你一个网格,然后每个点可能是两个类型的其中一种,四个方向的一种,然后你可以无限次操作,每次选两个相邻的点,一个顺时针转 90 度,一个逆时针转 90 度。 然后两个相邻的点能匹配要他们是不同类型的,而且它们的方向要满足四个条件的其中一

  • 【ybtoj高效进阶 21268】数塔路径(DP)2021-10-19 21:02:15

    数塔路径 题目链接:ybtoj高效进阶 21268 题目大意 给你一个三角形的数塔,然后多次询问,每次不准走一个点,问你从左上到右下的最长路径和是多少。 (只能向下或右下走) 思路 首先我们不难 DP 出最优答案,但它会 ban 点。 那我们考虑它 ban 掉的点会不会对最优答案造成影响,如果有影响,就

  • 【ybtoj高效进阶 21253】序列修改(分类讨论)(set)(树状数组)2021-10-07 13:30:36

    序列修改 题目链接:ybtoj高效进阶 21253 题目大意 给你一个序列,然后一个序列的费用是每个前缀的大小乘里面的数字种类的和。 然后你可以至多修改一个数,费用是原来到现在的绝对值,要你最小化序列费用和修改费用的和。 思路 首先我们可以简单算出一开始不修改的费用,然后考虑修改

  • Ybtoj-排列计数【矩阵乘法,分块幂】2021-10-06 16:03:37

    正题 题目链接:http://noip.ybtoj.com.cn/contest/596/problem/1 题目大意 \(T\)组询问给出\(n\)求有多少个\(n\)的排列满足第一个是\(1\)并且相邻的差不超过\(2\)。 \(1\leq T\leq 10^6,1\leq n\leq 10^9\) 解题思路 考虑一下如果我们要不断向前填满前面的一段的话,那么填的方案

  • YBTOJ&洛谷P4331:数字序列(左偏树)2021-09-28 19:29:53

    文章目录 题目描述数据范围 解析代码 题目描述 数据范围 n < = 1 e 6

  • 【ybtoj】【矩阵快速幂】公式推导2021-09-27 08:33:41

    题意 题解 被思维定式坑了... 一开始想的都是怎么用矩阵转移。 等差数列很好转移,矩阵里一个 \(1\) 一个 \(d\) 即可。 组合数不好转移,只能想到 \(C_n^m=C_n^{m-1} \times \frac{n-m+1}{m}\) ,然而由于 \(m\) 是不断变化的,而且矩阵不好维护除法的形式,思考无果。 实际上是快速幂的

  • YBTOJ&洛谷P4074:糖果公园(树上莫队)2021-09-26 21:02:21

    文章目录 解析代码 所谓树上莫队,就是在树上的莫队 (逃) 传送门 解析 似乎就是树上的这道题 考虑如何转化为序列问题呢? 考虑dfs序 但是又一个问题。。。 似乎这条链的dfs序不连续啊 树剖一下就好啦 考虑更阳间的方法 求出这棵树的欧拉序,在这个欧拉序上询问 那么我们发现,

  • YBTOJ 路径求和2021-09-22 08:34:13

    题面: 题目分析: 考虑每一条边对于答案的贡献,根据树的性质,每一条边一定将整棵树分成了两个子树,而该边的贡献=子树1中叶节点数子树2中节点总数+子树2中叶节点数子树1中节点总数。 由于树有一个重要性质: 树的任意一个点都可以作为树的根 然后?没了。 哦不是,还有一个重要的点: 要注意

  • 【YBTOJ】【DFS】最多约数2021-09-21 22:04:54

    最多约数 给定一个正整数 \(n\) ,对于所有不超过 \(n\) 的正整数,找到包含约数最多的一个数。如果有多个这样的数,那么回答最小的那个。 \(n\leq 10^{16}\) 题解 首先有一个结论: 若正整数 \(N\) 被唯一质因数分解为 \(N=p_1^{c_1}p_2^{c_2}\dots p_m^{c_m}\) ,且满足 \(p_1<p_2<\do

  • YBTOJ 比较大小2021-09-18 08:36:35

    题目算法要素:Floyd 题目分析: 最开始我想当作差分约束处理,但是没调过,只有20tps。 这个题的正解思路很有意思,很容易发现点数最多只有100,边数最多只有10000,因此可以用floyd维护f[a][b]表示a是否大于b。 若f[a][b]=true,则a>b。 若f[b][a]=true,则a<b。 若f[a][b]==0,则ab关系未知。 总

  • 【ybtoj】【kmp】公共子串2021-09-17 15:01:51

    题意 题解 本题的瓶颈在于不容易判断多个字符串中,两两匹配的公共子串是否是相同的。 模式串和匹配串的概念有点绕...在这里把要对自身求 \(nxt\) 的串记为 A,另一个串记为 B. 不要太着急,想到“定一移一”的方法,先单独取出任意一个字符串(本文取的是 \(s_1\))作为初始的 A 串,长度为

  • 【哈希表模板(链前版本)】【ybtoj】【特殊序列】2021-09-17 09:05:16

    题意 根据一个递推式不断求出元素,判断这个数出没出现过。 题解 以前只写过邻接表的哈希表,没写过链前的哈希表,贴一下代码。 代码 #include<bits/stdc++.h> using namespace std; #define ll long long const int INF = 0x3f3f3f3f,N = 2e6+10,mod = 1e6+7; inline ll read() { ll

  • 【ybtoj】【单调队列】出题方案2021-09-17 08:36:38

    题意 现在小泽的手上有 n 道难题,编号分别为 1∼n ,第 i 道题的难度系数是 ai 。 小泽想用这些题出比赛,他会把题目按照编号划分为若干个非空连续区间,每个区间对应了一场比赛。 特别的,如果某场比赛的题目难度系数之和超过了给定的常数 m ,这场比赛会过于毒瘤,所以他不希望出现这样的情

  • YBTOJ 小白逛公园2021-09-16 17:33:41

    题面:洛谷传送门 题目的算法要素:线段树&返回值为结构体的线段树 题目分析: 线段树的单点赋值+区间查询(查询区间内和最大的一段序列)。 因为某一段区间内和最大的一段序列是从它的小区间中合并出来的,需要不断与其他区间比较,且小区间内的最大序列不一定是大区间内的最大序列的一部分。

  • 【YBTOJ】【单调队列】粉刷木板2021-09-15 13:04:05

    粉刷木板 有 \(N\) 块木板从左到右排成一行,有 \(m\) 个工匠对这些木板进行粉刷,每块木板至多被粉刷一次。 第 \(i\) 个木匠要么不粉刷,要么粉刷包含木板 \(S_i\) 且长度不超过 \(L_i\) 的连续的一段木板,每粉刷一块可以得到 \(P_i\) 的报酬。不同工匠的 \(S_i\) 不同。 请问如何安排

  • YBTOJ 数独游戏2021-09-15 08:03:11

    题面 题目分析: 选择一个当前可选的数最小的位置,依次填入各个可能填入的数。 考虑怎么实现: 为了快速地得到每个位置可以选择的位置,可以将当前树所在的行、列、九宫格的填入状态压入一个二进制中储存。 Code #include<bits/stdc++.h> using namespace std; const int INF=1e9+7; i

  • YBTOJ 取模问题2021-09-15 08:01:50

    一道特别水的线段树基础题。 不过发生了一些有意思的事情: 我最开始没算复杂度,就直接去想怎么对区间取模操作写懒标记和pushdown。 其实因为取模不会进行太多次,而且在中间可以特判结束向下递归,因此直接单点修改即可。 #include<bits/stdc++.h> using namespace std; #define mid

  • 【ybtoj】【堆的应用】内存管理2021-09-13 15:32:49

    题意 题解 容易想到:开两个队列分别维护空闲内存块序列的编号\((q1)\),被占用的内存块的的编号与过期时间\((q2)\) 同时更新\(ocu\)数组,记录代码块是否被占用 但是我卡在了细节的地方很久:if(ocu[y]) ocu[y]++,q2.push(mp(y,x)); 询问的时候没有打上判断就直接\(push\)到\(q2\)里

  • 【YBTOJ】【树形dp】权值统计2021-09-13 14:04:19

    权值统计 给出一个 \(n\) 个结点的无根树以及每个结点的权值,求出树的每一条路径的权值积的和,单独的一个结点也算作一条路径。 解析 要求每一条路径。 规定每条路径的权值为途径的点权之积。 对于这类问题,我们可以用 \(dp_u\) 表示以 \(u\) 为根的子树内所有答案。 但是,因为题目规

  • 【YBTOJ】【树形dp】块的计数2021-09-13 08:32:17

    题意 给定一棵 \(n\) 个节点的树,每个点有个喜欢程度。求 选联通块,并且这个联通块包含最大的点权的方案数。 分析 很难想的一道题…… 原本思路:将权值最大的点设为根,跑一遍树形dp即可。 但是考虑到,权值最大的点可能不止一个,于是此做法失效。 考虑设\(dp_u\)表示在\(u\)的子树内,必

  • 【ybtoj】【RMQ问题】与众不同2021-09-11 16:31:07

    题意 题解 虽然在\(RMQ\)的章节里,但是这题的重点不在\(RMQ\),只是一个优化 考虑如何找到一段完美序列 记录\(lst[val]\)表示val值上次出现的位置,\(pre[i]\)表示以\(i\)为结尾的完美序列的起点 那么转移式很显然 代码 #include<bits/stdc++.h> using namespace std; #define ll lo

  • 【ybtoj】【强连通分量】软件安装2021-09-09 08:32:39

    题意 题解 这在洛谷上是一道紫题...不枉我费了半个上午 首先可以想到,一个环里的点,要选择的话一定一起选,所以先想到缩点形成一个DAG 考虑如何建边,注意到题目关键:一个软件最多依赖另外一个软件,那么从被依赖想依赖建边,形成的还是一棵树 问题就转化成了:在一个树上每个点都有重量和价

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

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

ICode9版权所有