ICode9

精准搜索请尝试: 精确搜索
  • LOJ#535「LibreOJ Round #6」花火 题解2022-07-27 19:34:47

    题面 如果只能交换相邻两项,那么答案就是排列的逆序对数。 现在我们就是要求交换两个数,使得交换后的排列逆序对数最少。 不难发现我们一定不会交换满足 \(i<j,h_i<h_j\) 的 \((i,j)\),因为这样只会让逆序对变多。 考虑怎么刻画减少的逆序对: \((i,j)\); 满足 \(i<k<j,h_k<h_i\) 的 \(

  • 端午节做题记录2022-06-25 21:02:50

    前言 艹原来本来十六点就写好了,突然洛谷的博客功能不能全选了,一Ctrl+A就tm内容全没,调了半天,还得从写啊啊啊。 然后还看到一个退役的高二学长回关我了,,,55555好感动 目录 P2417 课程 P3722 [AH2017/HNOI2017] 影魔 P4568 [JLOI2011] 飞行路线 P4495 [HAOI2018] 奇怪的背包 P4728 [HN

  • LibreOJ 10011 愤怒的牛 二分2022-05-07 03:00:25

    农夫约翰建造了一座有 \(n\) 间牛舍的小屋,牛舍排在一条直线上,第 \(i\) 间牛舍在 \(x_i\) 的位置,但是约翰的 \(m\) 头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其它牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。 牛们并

  • LibreOJ 131 树状数组2:区间修改,单点查询2022-05-03 03:31:21

    题目地址 Solution 前面已经知道了树状数组的单点修改和区间查询。这里利用差分的思想:具体来说,维护 \(b\) 数组: \[b[i] = a[i]-a[i-1] \]其中 \(a\) 为原来数组。可以发现 \[a[i] = \sum_{k=1}^ib[k] \]因此我们只需要对 \(b\) 利用树状数组维护,get_sum[i]即可得到原来数组单点的

  • Libreoj 6279. 数列分块入门 32022-03-08 20:32:17

    1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N=1e5+5; 5 vector<ll>v[N]; 6 ll a[N],tag[N],blg[N],L[N],R[N],block,tot; 7 void resort(int n) 8 { 9 v[n].clear(); 10 for(int i=L[n];i<=R[n]

  • 【DS】loj#535. 「LibreOJ Round #6」花火2022-02-08 18:04:32

    题传 真难写,, 考虑冒泡排序,每一次交换相邻的减少 1 对逆序对,那么我们肯定要第二种操作尽量多地减少逆序对。 考虑第二种操作 swap(i,j) 减少的逆序对数量:\(\forall k\in(i,j),h_j<h_k<h_i\),\(k\) 的个数乘二。 考虑抽象到二维平面,点坐标为 \((i,h_i)\),那么就是以 \((i,h_i)\) 为左

  • LibreOJ 130 树状数组1:单点修改,区间查询2022-02-02 19:05:32

    题目链接:LibreOJ 130 树状数组1:单点修改,区间查询 题目大意: 题解: 树状数组模板,注意要开\(long\) \(long\)。 #include <iostream> #include <cstring> using namespace std; long long bit[1000010]; int n, q, act, l, r; int lowbit(int x) { return x & (-x); } void update

  • LibreOJ 109 并查集2022-02-02 18:31:14

    题目链接:LibreOJ 109 并查集 题目大意: 题解: 并查集模板,结果用二进制表示,注意要快读。 #include <cstdio> #include <iostream> using namespace std; int fa[4000010], ans; inline int read() { char ch = getchar(); int ans = 0, f = 1; while (ch < '0' || c

  • LibreOJ 2421 信息传递2022-02-02 16:00:28

    题目链接:LibreOJ 2421 信息传递 题目大意: 题解: 建立传递者和接收者的单向边,加边的同时判断是否成环,记录环的大小并更新最小值。 #include <iostream> using namespace std; int n, fa[200010], ans = 0x3f3f3f3f, cnt, x; int get(int x) { cnt++; return fa[x] == x ?

  • [LibreOJ - 2150] 最大子矩阵 (dp)2021-11-30 17:02:35

    [LibreOJ - 2150] 最大子矩阵 题目链接 大致题意: 在 n ∗ m n*m n∗m的矩阵中,选出 k

  • LOJ-572 「LibreOJ Round #11」Misaka Network 与求和2021-10-08 08:01:15

    Description 给定 \(N,k\),求: \[\sum_{i=1}^N\sum_{j=1}^N (f(\gcd(i,j)))^k \]其中 \(f(x)\) 表示 \(x\) 质因子分解结果中次大的质因子,重复的质因数计算多次。 Constraints \(1\le N,k\le 2\cdot 10^9\) Solution 记 \(f_k(x)=(f(x))^k\)。推式子: \[\begin{aligned} \sum_{i}^N\s

  • <题解>「LibreOJ NOIP Round #1」序列划分2021-09-06 20:00:20

    solutions 题面loj#542 对我来说,这或许已经超出了我的能力,我,只能看题解 不知道我写完这一篇题解之后,会不会对我的构造题有一点点的帮助 让我在这类题的解决上能过有一些提升 直接说明白,这就是一个构造题 这个很好判断,因为有SPJ,并且方案有很多,随便输出就可以 开头是K,结尾是K,长度也

  • [LOJ521]「LibreOJ β Round #3」绯色 IOI(抵达)2021-07-29 22:33:00

    壹、题目描述 ¶ 传送门 to LOJ. 贰、题解 ¶ 我们试图构造一些小的方案,发现一个特性: 合法方案,总是两个点互相为对方的避难节点; 这个结论并不难证明,由于最后是一棵树,故而没有环,而若不是相互避难,总有一个点找不到避难节点。 所以,对于是否有解,我们可以简单地判断一下,这个树是否存

  • LibreOJ 10148 能量项链2021-07-26 02:31:06

    题目链接:LibreOJ 10148 能量项链 题目大意: 题解: 一道典型的区间\(dp\)题。 状态转移方程: \[dp[i][j] = max\{dp[i][j], dp[i][k] + dp[k + 1][j] + a[i] * a[k + 1] * a[j + 1]\},i\leq k < j \]#include <iostream> using namespace std; #define ll long long #define N 1010

  • 图论专题100题之:「LibreOJ β Round #4」子集(二分图+基础数论)2021-07-15 20:01:13

    题目传送门 前置知识: 二分图匹配,基础数论 题意: 给定 n n n个数,选出最大的子集,使得满足子集中的任意两个元素满足: g c

  • 【单调队列优化DP】烽火传递 LibreOJ - 101802021-06-15 14:33:48

    题目来源 点我进入提交题目 反思 因为目前在学习单调队列优化DP,所以会往单调队列上面想。然后犯了一个错误就是,认为这个题目只要用单调队列就可以完成,单调队列只是用来减少时间复杂度的,遇到了求最优解的题目,最先要想到的还是贪心和DP。 题解 分析题目 n 个烽火台,连续m个烽火

  • LibreOJ #100462021-06-09 22:03:12

    Description 两个字符串 \(A\) 和 \(B\),若 \(A\) 是 \(B\) 的前缀且 \(A\ne B\),则称 \(A\) 是 \(B\) 的 proper 前缀。 两个字符串 \(C\) 和 \(D\),若 \(C\) 是 \(D\) 的 proper 前缀且 \(D\) 是 \(CC\) 的前缀,则称 \(C\) 是 \(D\) 的周期。 给出一个字符串,求它的所有前缀的最大周

  • LOJ#515. 「LibreOJ β Round #2」贪心只能过样例(bitset)2021-06-05 10:01:30

    内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: nzhtl1477 提交提交记录统计讨论测试数据   题目描述 一共有 nnn个数,第 iii 个数 xix_ix​i​​ 可以取 [ai,bi][a_i , b_i][a​i​​,b​i​​] 中任意值。 设 S=∑xi2S

  • LOJ#572. 「LibreOJ Round #11」Misaka Network 与求和2021-04-05 23:36:03

    IV.LOJ#572. 「LibreOJ Round #11」Misaka Network 与求和 首先先考虑莫反推一波式子。 \[\begin{aligned}&\sum\limits_{i=1}^n\sum\limits_{j=1}^nf^k\Big(\gcd(i,j)\Big)\\=&\sum\limits_{d=1}^nf^k(d)\sum\limits_{i=1}^n\sum\limits_{j=1}^n[\gcd(i,j)=d]\\=&a

  • 【LibreOJ NOIP Round #1】数列递推2021-03-02 22:02:21

    这要是ACM题又是一道自闭题。。。。。。 原题:     把an表示为p*a0+q*a1的形式,手玩前几项发现不难证明a1系数永远大于a0且越来越大 所以只要这俩别全0,整个数列的走向一定是这样的: 波动->出现相邻同号->起飞 原因很显然,由于a1系数越来越大,所以当n趋向于无穷时a1的符号比a0占优势

  • 【LibreOJ NOIP Round #1】DNA 序列2021-02-27 09:03:45

    思维定势太强,脑洞不够大囧 原题:     n<=5e6,k<=10    第一眼看:26进制表示连续的k个碱基,由于k能到10所以离散化一下 一看数据:n是5e6???这离散化必然会被卡 思考一下:会不会是loj跑太快了出题人要卡做法才出这么极限 我觉得不太可能,就没去写,怎么都想不到做法 第二天:字母只有四种,可能

  • 数字转换 LibreOJ - 101552021-02-17 18:34:48

    原题链接 考察:树形dp+约数 思路:         预处理约数之和,用倍数法,时间复杂度10^6次方左右,sum[i]<i的建立边.通过打表可知是不止一棵树,也就是数字建立的图是森林.对于遍历过的点标记一下,没标记的遍历即可.最后就是求树的直径.          倍数法中:j枚举了i的倍数 1

  • 「LibreOJ NOI Round #2」不等关系 (dp+NTT分治)2021-02-15 19:59:05

    description 戳我看题目哦 solution 有一道非常相似的题目 一棵树,每条边限制两个端点的大小关系(限制 a [ u ] >

  • [LOJ575]「LibreOJ NOI Round #2」不等关系2020-11-21 17:02:59

    题意:给定字符串 \(\overline{s_1s_2\dots s_n}\),仅包含 < 和 > 两种字符,计算 使得 \(p_i < p_{i + 1}\) 当且仅当 \(s_i\) 为 \(<\) 的排列 \(p_1, p_2, \dots, p_{n + 1}\) 的数量对 \(998244353\) 取模的结果。 我魔改了 [HEOI2013]SAO 的dp计数题居然直接撞原题,且原题还加强

  • #541. 「LibreOJ NOIP Round #1」七曜圣贤2020-10-08 08:01:37

    题目描述 https://loj.ac/problem/541 题解 一直在往数据随机的方向想 把<=A中的删除操作看成元素的话,那么就是求一个队列里的最小值,单调队列维护 >A的部分再维护一个未选的最小值,选了之后就和上面一样了,最后再取min code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a

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

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

ICode9版权所有