自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Aladdin and the Flying Carpet(数论)

描述问有多少种矩形,边 x,yx, yx,y,满足 x∗y=ax*y=ax∗y=a 且 b≤x<yb \leq x < yb≤x<y。链接思路这道题是在刷 kuangbinkuangbinkuangbin 基础题题单时遇到的。至于为什么要写这篇题解,是因为网上很多题解都是不对的,所以我想写一篇我认为合适的做法来给别人作为参考。他们的做法是:预处理 10610^6106 以内所有素数,用算术基本定理计算 aaa 所有约数和,通过素数定理可知这个过程复杂度是 O(aloga)O(\f

2021-08-29 22:37:54 171 2

原创 2021“MINIEYE杯”中国大学生算法设计超级联赛(9)

HDU多校98 Integers Have Friends 2.0(数论)题目链接8 Integers Have Friends 2.0(数论)描述

2021-08-18 22:53:12 196

转载 (转载)关于uint8_t、uint_least8_t、uiuint_fast8_t等说明

在vs2017的编译器里,可以直接识别int8_t、int16_t、int32_t、int64_t、uint8_t、uint16_t、uint32_t、uint64_tint_least8_t、int_least16_t、int_least32_t、int_least64_t、uint_least8_t、uint_least16_t、uint_least32_t、uint_least64_tint_fast8_t、int_fast16_t、int_fast32_t、int_fast64_t、uint_

2021-08-18 21:00:54 765

原创 牛客数据结构专题班:前缀和与差分

文章目录智乃酱的子集与超集智乃酱的前缀和与差分智乃酱的静态数组维护问题多项式智乃酱的双塔问题(DP、前缀和、矩阵乘法、逆矩阵)牛牛的猜球游戏牛牛的Link Power I小w的糖果[NOIP2013]积木大赛[NOIP2018]道路铺设题目链接智乃酱的子集与超集题意描述分析代码智乃酱的前缀和与差分题意描述分析代码智乃酱的静态数组维护问题多项式题意描述分析代码智乃酱的双塔问题(DP、前缀和、矩阵乘法、逆矩阵)题意描述左右有两个高度为n个塔,对于每个塔可以从下一层直接到上一层。

2021-08-18 17:06:35 1226 5

原创 2021“MINIEYE杯”中国大学生算法设计超级联赛(5)

HDU多校51009 Array1009 Array描述:给定序列,找存在绝对众数的区间 (区间的众数出现次数大于区间长度一半) 个数。分析:本题与洛谷上一题除了数据范围是一模一样的。其题解。这题同样用线段树求理论上是可以过的,但是线段树常数可能大一下,以至于会被卡TLE 但是实验室有人线段树过了。考虑用常数更小一点的树状数组。要求是要维护-1,1序列的sum数组,做到区间修改,区间查询二阶前缀和。然后在树状数组中要想做到区间修改,只能对差分数组进行单点修改,这样原序列就变成了差分数组的

2021-08-09 23:40:26 241

原创 P4062 [Code+#1]Yazid 的新生舞会(权值线段树)

描述给定一个序列,问有多少个区间存在绝对众数(区间众数出现次数大于区间长度一半)。链接分析设有 k 个不同的数,首先不难想到一种 O(knlogn)O(knlogn)O(knlogn) 的做法,------枚举每个数,把这个序列中这个数改成1,其余的改成-1,转化成求有有多少个区间和是正数,对修改后的序列求一次前缀和,对于和为正数的区间 [l+1,r][ l + 1, r][l+1,r],有 suml<sumrsum_{l}<sum_rsuml​<sumr​,所以最终问题变成了对

2021-08-06 23:09:50 208

原创 Two Famous Companies(MST)

描述给定一个图,每个边是黑的或白的,求恰好有 k 条黑边的最小生成树。链接分析wqs二分参考文章1参考文章2做法:令所有黑边加上一个权值c,这样在 kruskal 算法中,由小到大选择边权时黑边会整体向前或者向后平移。通过二分找到一个 c 使得 kruskal 最后恰好用了 k 条黑边,答案就是 ans( 新图最小生成树的值) - k*c 。注意点:因为是整数二分,并且 kruskal 边排序时让黑边尽可能靠前,形式上最后可能不存在一个整数 c 使得恰好用了 k 条黑边(具体可见下面样

2021-08-05 09:45:38 153

原创 2021“MINIEYE杯”中国大学生算法设计超级联赛(3)

2021“MINIEYE杯”中国大学生算法设计超级联赛(3)1003 Forgiving Matching(fft)1003 Forgiving Matching(fft)描述给出两个长度分别为n,m (n > m) 的字符串s,t,分别由‘0’~‘9’还有通配符’*'组成,问s有多少个字串和t在允许最多k个位置不同下是匹配的,输出所有k=0 ~ m 的答案思路代码#include <bits/stdc++.h>using namespace std;const int

2021-07-29 22:02:38 222

原创 食物链(边带权/扩展域并查集)

描述三类动物,a吃b,b吃c,c吃a,给出n个动物,k个说法。说法有两类,①x和y是同类,②x吃y,每个说法属于其中一类。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。当前的话与前面的某些真的话冲突,就是假话;当前的话中 x 或 y 比 n 大,就是假话;当前的话表示 x 吃 x,就是假话。你的任务是根据给定的 n 和 k 句话,输出假话的总数。添加链接描述分析方法1:边带权思路:只要有关系,就属于同一个集合,就加入到集合中去(不管是同类or异类)精髓:只要两个元素在同一

2021-07-29 21:49:07 337

原创 Red-White Fence(计数问题,FFT/NTT)

分析#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 300010;const int mod = 998244353;const int G = 3;int a[N], b[N], Q[N], ans[N], fact[N], rfact[N];int p1[N << 2], p2[N << 2], rev[N << 2];i

2021-07-27 23:45:39 128

原创 奇偶游戏(边带权/扩展域并查集)

描述有一个长度为n的01序列,m次回答,每次会给你 l 与 r,告知 l ~ r 之间有奇数个1还是偶数个1。求一个最小的k满足1~k之间的回答存在一个01序列满足,但是1 ~ k + 1的回答不存在。链接分析用sum[i]表示 1 ~ i 之间1个的个数。l ~ r 有偶数个1,等价于 sum[l-1] 与 sum[r] 的奇偶性相同l ~ r 有奇数个1,等价于 sum[l-1] 与 sum[r] 的奇偶性不同因此,这题与“程序自动分析”很相似------给定若干变量和关系,判断这些

2021-07-26 01:50:25 213

原创 银河英雄传说(边带权并查集)

题目描述1行n列,每列有一个战舰。有两类指令,一种是让第 i 号战舰所在列的全部战舰保持原有顺序,接在第 j 号战舰所在列的尾部,另一种是问两个战舰是否在同一列,若在同一列要知道它们之间间隔了多少艘战舰。链接分析考虑要知道两艘战舰间隔了多少艘战舰,直接维护起来比较麻烦,可转化为两艘战舰到这一列队首战舰的距离,这样两艘战舰间隔的战舰数就是他们到队首距离之差的绝对值减去1。因此可以用边带权并查集来做了,合并两个集合时为了更新到父节点距离,所以还要额外维护一个集合元素个数。代码#include &

2021-07-25 23:48:48 81

原创 2021“MINIEYE杯”中国大学生算法设计超级联赛(2)

2021“MINIEYE杯”中国大学生算法设计超级联赛(2)1008 I love exam (类背包DP)1010 I love permutation (数学构造,剩余系)1008 I love exam (类背包DP)描述有t天时间复习,n种课程,m个复习资料,每个资料i可以花费yi天让一种课程增加xi分,60分及格,满分100分,刚开始每门课程都只能考0分,最多可以允许你有p个课程不及格,求在满足要求的情况下所有课程能获得的最大总分。题目链接分析代码#include <bi

2021-07-25 22:14:49 396

原创 程序自动分析(并查集,离散化)

bcj

2021-07-25 21:53:15 226

原创 搭配购买(并查集,01背包)

题目描述n件物品,每件物品都有重量w和价值v,给出m个关系,每个关系用 (a,b)表示,表示a与b必须同时买。现在能承受wei的重量,问能获得的最大价值。链接分析这其实并不是一个有依赖的分组背包,将有关系的一些物品看作一个物品就是01背包问题了。用并查集合并,并且合并时更新一下每个集合的w与v即可。代码#include <bits/stdc++.h>using namespace std;const int N = 10010;int n, m, wei;int w[

2021-07-25 15:02:06 160

原创 格子游戏(并查集判环)

描述n x n的点阵,m次操作,每次对相邻的点连边,问第一次出现封闭的圈是哪次操作链接分析复习一下并查集,模板题,将点阵的点看成离散的点,并查集判环即可。代码#include<bits/stdc++.h>using namespace std;const int N = 40010;int fa[N];int get(int x){ if (fa[x] == x) return x; return fa[x] = get(fa[x]);}int

2021-07-25 14:35:42 216 1

原创 ICPC2016 青岛 D - Lucky Coins(概率推公式)

题意:给出k类硬币和每类硬币的数量和正面朝上的概率,问每类硬币成为幸运硬币的概率是多少。成为幸运硬币的条件是每投一次将所有背面朝上的硬币去掉,继续抛掷,直至剩下一种或者一个都不剩下,那最后一种留下的硬币就是幸运硬币。分析:这题公式推导比较新颖。一般的划分状态在此题因为状态过多开销巨大而不适用,所以考虑以每次投掷硬币为依据划分阶段。设 die[i][j]die[i][j]die[i][j] 表示第 iii 类硬币在第 jjj 次投掷(包括第 jjj 次)前就已经被抛弃的概率;易得:die[i][.

2021-07-14 22:14:09 257 3

原创 数列分块入门 6

分析:以下分析内容均来自此处给出一个长为n的数列,以及n个操作,操作涉及单点插入,单点询问,数据随机生成。先说随机数据的情况之前提到过,如果我们块内用数组以外的数据结构,能够支持其它不一样的操作,比如此题每块内可以放一个动态的数组,每次插入时先找到位置所在的块,再暴力插入,把块内的其它元素直接向后移动一位,当然用链表也是可以的。查询的时候类似,复杂度分析略。但是这样做有个问题,如果数据不随机怎么办?如果先在一个块有大量单点插入,这个块的大小会大大超过√n,那块内的暴力就没有复杂度保证了。...

2021-07-12 23:47:46 477 1

原创 数列分块入门 4

数列分块入门 4传送门本题是分块入门第一题的加强。修改操作,对于整块额外用个 sumsumsum 数组记录每个块内元素的和,对块内所有元素的和直接修改;不完整的块则暴力修改,同时也要更新 sumsumsum 数组 。查询操作,对于整块直接相加,不完整的块依旧暴力相加即可。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 50010, M = 310;in

2021-07-12 21:43:15 190

原创 Codeforces Round #179 (Div. 2) B.(容斥)

Codeforces Round #179 (Div. 2)B. Yaroslav and Two Strings题目翻译:(from洛谷)首先要注意到,所有的情况中,对于所有1<=i<=n,都有s[i] >= w[i]或s[i] <= w[i]那么这样的序列是不合法的。所以可以先把所有的组合情况算出来设为ans,并且算出1、2两种情况的序列数目分别为res1、 res2,最后减去以上两种情况的序列数目。答案就是ans - res1 - res2吗?并不是

2021-06-02 15:12:03 102

原创 Codeforces Round #698 (Div. 2) D. Nezzar and Board(数论,贝祖定理)

sl

2021-02-02 22:36:16 188 1

原创 2021寒假刷题记录(部分)

2021年寒假刷题

2021-01-26 15:25:05 462

空空如也

空空如也

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

TA关注的人

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