自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 WebSocket+Vue实现简易多人聊天室 以及 对异步调用的理解

使用"Vue、Js、Websocket"实现多人聊天室 && 异步调用(ajax、promise、axios)

2023-12-22 16:10:29 1200

原创 C. Maximum width Codeforces Round #704 (Div. 2)

题目:链接思路: 正向遍历满足前i-1个字母第i个字母可选的最小的下标。 逆向遍历满足后n-i-1个字母第i+1个字母可选的最大的小标。 相减后取max即可。代码:#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<queue>#include<map>#include<c...

2021-02-25 22:29:44 145

原创 博弈论之SG函数(NIM博弈、反NIM博弈证明+例题)--POJ2311

目录NIM博弈:题目:代码:反NIM博弈:题目:代码:公平组合游戏ICG:有向图游戏:Mex运算:SG函数:有向图游戏的和:定理:题目:代码:参考材料:NIM博弈: 内容:给定N堆物品,第i堆物品有Ai个。两名玩家轮流行动,每次可以任选一堆,取走任意多个物品,可把一堆取光,但不能不取。取走最后一件物品者获胜。两人都采取最优策略,问先手是否必胜。 定理:NIM博弈先手必胜,当且仅当 A1 ^ A2 ...

2021-02-22 16:10:29 756

原创 Codeforces Round #703 (Div. 2) B. Eastern Exhibition

题目题目链接思路知道一个结论:在一个数轴上,求得一点x,使得数轴上所有点到该点距离之和最小。这样把二维点分配成一维上的情况相乘即可(因为这里的二维距离是一维距离绝对值之和)。具体证明链接代码#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<queue>#include<map>#include<c

2021-02-19 10:42:31 177

原创 Educational Codeforces Round 104 (Rated for Div. 2) D. Pythagorean Triples

题目链接思路首先由c×c=a×a+b×b和c=a×a-b可得: a×a = 2×c-1,b = c-1;因为a×a=2×c-1 所以a肯定是奇数 并且a×a = 2×c-1 <= 2×n-1思路一:a×a=2×c-1 只要是a是奇数 对于每一个a>=3的奇数 都存在a b c;所以二分找到最大的a满足a×a<=2×n-1。如果是偶数 --得到奇数。这时候ans/2就是相应的个数(奇数偶数除二对半分)思路二:t循环外面vector容器存下所有满足情况的代码...

2021-02-18 17:45:17 97

原创 Educational Codeforces Round 104 (Rated for Div. 2) C. Minimum Ties

目录题目思路代码题目链接思路每两个人之间都会进行一场比赛,可以建图,n个顶点,每两个顶点之间进行连线。 假设n为奇数,那么与偶数个线相连。这时候平分输赢不就好了吗?也就是顺时针数n/2个顶点都是赢,剩余的都是输。这样不会重复。理由:某个点,之前的n/2个点相比他都是输的,这时候剩余的不就是顺时针相距小于等于n/2的点吗?假设n是偶数,那么奇数条边,这时候把对角线定为平局即可。总体来说,n为奇数顺时针相距n/2的为胜,剩余的为负。 偶数把n/2这个点单独拿出来为平局即可。代码#inc

2021-02-18 17:36:42 82

原创 Codeforces Round #702 (Div. 3) E. Accidental Victory

题目链接思路先进行排序,一个选手若想赢 先将所有比他弱的选手打败,这时候判断是否可以打败第一个之前比他强的选手。如果行,打败,以此比较。这时候会发现 其实就是前缀和,并且这个选手打败第一个比他强的选手最终的实力和这一个后者选手打败所有比他弱的最终的实力一样。如果能这样持续到最后一个 那么这一个肯定行。如果有一个选手,即使打败了所有比他弱的,也无法战胜之前第一个比他强的,那么他包括他所有之前的选手都不可能活到最后。所有排序,寻找最后一个不可以完成的下标即可。代码#include<bits/s

2021-02-17 15:14:29 140

原创 Codeforces Round #702 (Div. 3)---C. Sum of Cubes 两种方法 cbrt()函数应用

文章目录题目思路代码题目题目链接思路思路一、 容易联想到枚举所有x存在的情况,用map映射。因为a取值在1e4上。 1e8的时间复杂度枚举,但是map具有自动排序费时间,炸了。 unordered_map? 编译错误 error… 那我们尝试用枚举一个a<=1e4。这时候利用二分寻找b^3= x-a^3。 复杂度O(nlogn) 可以。思路二、 函数z = cbrt(y) 就是对y立方根得到z 这时候只要zzz==y就可以了(简单)代码代码一、#includ

2021-02-17 15:07:25 244 1

原创 D. Multiples and Power Differences:Codeforces Round #701 (Div. 2)

题目题目链接思路先假设k=0 这种情况下 只要是把1-16取lcm即可。 现在k!=0 这时候只要是用_lcm-a[i][j]得四次方即可也就是说k就是a[i][j] 这时候一定为a[i][j]得倍数,为了防止 为负 可取绝对值。因为_lcm也为a[i][j]得倍数 减法前后调换不影响差值为a[i][j]得倍数。代码#include<algorithm>#include<iostream>#include<cstring>#include&l

2021-02-13 22:06:20 107

原创 C. Floor and Mod : Codeforces Round #701 (Div. 2) 详解20行代码

题目:题目链接思路:由a/b(↓)=a%b得a=(a/b(↓))b+a%b。令k=a%b < b。则a=kb+k=(b+1)*k。由于k<b<b+1,则a=(b+1)*k>k^2。 可得k^2<a<=x。于是k得最大取值即10的4.5次方 可以枚举k。 若枚举了k确定b的值相应a也确定。也即求出b的个数即可。 b的最小取值为k+1,因为k<b。 b的最大取值为min(y,x/k(↓)-1)推导最大取值: 首先b<=y。其次 1&lt

2021-02-13 21:35:23 149

原创 D. Program:Codeforces Round 102 (Rated for Div. 2)

D. Program大致题意:给你一个长为n的字符串 由‘+’、‘-’组成,初始值x=0,遇到+就+1,遇到-就-1。给你m个询问,每一个询问存在两个整数l,r,问如果省略掉字符串中[l,r]的字符,x的不同值有多少个。思路: 首先,无论省略哪一块,x取值一定是连续的(原因:±1操作)。所以如果能知道最大值最小值,两者相减+1即可。 其次,对于一连串操作,任何数经过这些操作所改变的上下起伏是一样的。所以: 对于最大值:在下标l之前的x最大值和r之后的所有操作起伏加上a[l-1]中取最大值。

2021-01-16 22:48:55 336

原创 C. No More Inversions :Codeforces Round 102 (Rated for Div. 2)

C. No More Inversions大致题意:一个a数组,内容为1 2 3 4 … k-1 k k-2 … k-(n-k)有一个数组p,大小为k,且里面的值为k的一个全排列。(a[i]∈[0,k]) 问寻找一个数组p,使得对于i∈[1,n]有b[i]=p[a[i]]满足b数组的倒置数目不能超过n,且让b的字典序最大(一个倒置为存在一个i,j,i<j使得a[i]>a[j]即逆序数)思路:看将数组a分为两个部分1 2 3 4 … k-(n-k)-1K-(n-k) k

2021-01-16 22:44:07 215

原创 Fireworks 概率论知识+三分算法(2020icpc南京站 亚洲区域赛)

2020icpc南京站F:Fireworks详解

2020-12-23 23:36:52 1565 10

原创 2020icpc南京站部分题解

目录K Co-prime Permutation大致题意:经验:代码:Let's Play Curling大概题意: 代码:E:https://blog.csdn.net/m0_50623076/article/details/111565709 K Co-prime Permutation 大致题意: 对0~n求一个排列组合,使得有k个数pi与对应的i互质,其余不互质;经验: 不要被样例蒙蔽。 首先,...

2020-12-22 20:22:55 2916 3

原创 Evil Coordinate(70行精简代码) 2020icpc南京站

目录大致题意:思路:代码:大致题意: 在一个图中,一个人从(0,0)进行上下左右行走。有一个地雷点(mx,my)。询问可不可以通过改变行走上下左右的顺序(不改变上下左右走的次数),可以避开雷。如果有多个,输出任意一种,如果没有,输出Impossible!思路: 看似复杂,其实细细想来,只有一个点是地雷,避免不了有:雷在起点和终点,不论怎么改变都至少有一个点会走重合且那个点是雷区。 还有一点,就是说无论怎么变换,最终...

2020-12-22 20:07:45 3058 17

原创 Sum of Log(icpc上海站2020) 数位dp

思路: 如果算上i=0&&j=0的情况,其实就是求[0,x][0,y]之间任意两个整数中,满足i&j=0的个数乘以log2(i+j)+1取下整数。因为数据范围到了1e9并且测试样例1e5。所以联想到对位进行操作,于是考虑到---数位dp。 数位dp: https://blog.csdn.net/m0_50623076/article/details/111564154这个题模板题,赛场上没有想到,赛场下后悔不已。根据题意进行明确,i...

2020-12-22 19:37:13 1516 9

转载 数位dp-从入门到模板+例题(新手推荐)

转自巨佬:https://blog.csdn.net/wust_zzwh/article/details/52100392目录基础篇实战篇第二:相减。新的领域--计数转求和基础篇数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦!之所以要引入数位的概念完全就是为了dp。数位dp的实质就是换.

2020-12-22 18:55:24 450 4

原创 2020icpc上海站(正式赛) 部分题解

目录B. Mine Sweeper II大致题意:思路:代码:D. Walker大致题意:思路:注意:第一种:第二种:第三种:代码:I. Sky Garden大致题意:思路:代码:G. Fibonacci(正宗签到题)大致题意:思路:代码:M. Gitignore大致题意:思路:代码:B. Mine Sweeper II大致题意:给你一个n×m的矩阵,X代表雷,.代表没有雷。扫雷的游戏。为X.

2020-12-15 22:02:02 4896 1

原创 Fansblog  HDU-6608(费马小定理、威尔逊定理)

1e14以内的素数间隔最大不超过700(我也不会证明,网上看的)威尔逊定理:https://blog.csdn.net/m0_50623076/article/details/109894993 p-1!≡-1(mod(p))化为p-1p-2……Q+1Q!≡-1modp=(p-1)(modp)只需要根据费马小定理求出(p-1)….(Q+1)的逆即可。ap-1 ≡1(mod(p))代码:#include<algorithm>#include&l...

2020-11-21 12:50:11 123

原创 费马小定理、威尔逊定理

目录费马小定理:威尔逊定理:费马小定理:若p为质数且a%p!=0 则 等价于也就是对于mod(p)而言,模乘法a的逆为证明: 对于质数p,任意a都满足a%p!=0且(p-1)!%p != 0(因为p-1所有的质因子不可能含有p,因为本身就比p小。这也就是为什么p需要是素数,不仅仅是满足a%p!=0)。 存在a 2a 3a …….(p-1)a 使得%p后的余数为0~(1-p)的排列。反证法:假设存在n,m(n>m&a...

2020-11-21 12:46:09 363 1

原创 慢速乘与快速幂

目录慢速乘(防一次乘法就爆long long):快速幂(加快次方速度):混合用:慢速乘(防一次乘法就爆long long):有可能两个数相乘直接爆掉long long。化乘为加。a*b任意数都可以拆分二进制,如果对应位是1,加上,否则右移。注意b二进制右移一位,a就要乘2。因为二进制每一位权值对应*2。注意ans初始化为0,因为0加任何数都不变。ll mul(ll a,ll b){//a*b %p ll ans = 0; while...

2020-11-21 12:42:10 398

原创 tarjan思想延伸应用-割点割边的数量求解

目录割点:割边:Tarjan求强连通分量的个数,前面介绍过,在这里稍微一略过。在有向图中,寻找一个点所能到达的最小的时间戳(回溯的被遍历个数最小的编号)。对于一个结点u,那么low[u]肯定是本身++time和所有子节点low[v]的最小的一个(v可到达的,u都可以到达),更友好的是,点可以多次经过(存在重边或者两点形成环等),所以可得核心代码: for(int i = head[u];i != -1;i = edge[i].next){ int ...

2020-11-19 15:40:48 224

原创 洛谷-最大乘积(01背包应用与高精度大数乘法)

目录题目:思路:代码:题目:题目描述一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4。现在你的任务是将指定的正整数nn分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。输入格式只一个正整数n,(3≤n≤10000)。输出格式第一行是分解方案,相邻的数之间用一个空格分开,并且按由小到大的顺序。第二行是最大的乘积。思路: ln(a)+ln(b)=ln...

2020-11-18 16:41:21 309

原创 洛谷-缩点(tarjan算法模板题)

目录题目描述输入格式输出格式思路:代码:题目描述给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。输入格式第一行两个正整数n,m第二行n个整数,依次代表点权第三至m+2行,每行两个整数u,v,表示一条u→v的有向边。输出格式共一行,最大的点权之和。思路:强连通区域:有向图中,区域内任何两点都可...

2020-11-18 16:13:24 424

原创 HDU5877 Weak Pair(dfs+树状数组+离散化数据)详细讲解

目录题意:数据范围:思路:代码:题意:给你一颗树,计算有多少个(u,v){u是v的祖先},满足a[u]*a[v]<=k。数据范围:1≤N≤10^50≤ai≤10^90≤k≤10^18思路:根据范围,只能遍历一遍,dfs深搜遍历。dfs深搜有个特性,对于搜到的一个点v,此时经过的点都是他的祖先(同层次的回溯之后就已经不算了,已经从这个树枝出来了)。于是边搜索边记忆所有的结点值,每到新节点v时就暴力遍历看看那些满足。显然超时,根据这个思路,想想...

2020-11-12 23:41:38 192

原创 Social Circles(贪心)

题意:你可以用1个及以上的圆桌,给n个人排座位,每个人左边需要有Li个空凳子,右边需要有Ri个空凳子,问你最少用多少个凳子?数据范围:(1⩽n⩽10^5).(0⩽li,ri⩽10^9).思路:尽可能是发生重叠。避免消耗,应当让一个和他的右边最相近的人的左边进行重叠(一个凳子最多重叠两次,自然只用一次的越少越好),这样最好。因为不限制多少个circle,所以对左右手进行排序,取max(ls[i],rs[i])作为空凳子,然后加上一个人需要坐的。假设ls[i] ls[j] rs[i]..

2020-11-12 23:39:18 444

原创 Alyona and Spreadsheet (思维题)

题意:给出n*m的矩阵,k次查询,如果至少有一列从第l行到r行是非递减的,则输出Yes,否则输出No数据范围:(1 ≤ n·m ≤ 100 000)(1 ≤ ai, j ≤ 109)(1 ≤ k ≤ 100 000)(1 ≤ li ≤ ri ≤ n).思路分析:根据数据范围,暴力和开二维数组不适用。可以用一个数组a[i]表示第i列的位置到a[i]列组成的区间[a[i],i]是非递减的。输入过程中以行输入。所以用c[j]维护目前最新的第j列对应的数。b[j]表示...

2020-11-12 23:38:10 76

原创 树形dp 树形背包dp(CodeForces - 1118F1  Tree Cutting、选课、二叉苹果树)

目录树形dp:CodeForces - 1118F1 Tree Cutting思路:代码:树形背包dp:洛谷-选课:分析:核心代码:洛谷-二叉苹果树代码 :运用链式前向星:树形dp: 树形dp,在树上进行的dp。首先考虑存树。第一种是用结构体存,但是需要固定的孩子结点,不方便。第二种既方便又好理解使用vector,每一个vec[i]里面存放的是i结点下一个孩子(如果输入时无法确定父子关系,双向存储,遍历的时候标记父节点,因为树的...

2020-11-12 00:25:47 252

原创 分组背包-有依赖的背包

分组背包:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。可以转化为01背包,只不过是一组中每一个的选与不选。for i = 1:n//枚举每个组 for j = m:0//背包容量 for k= ...//i组所有的物品 dp[j]=max(d...

2020-11-12 00:20:59 147

原创 拓扑排序(POJ-1094) 拓扑排序+优先队列

目录拓扑排序:2.拓扑排序+优先队列拓扑排序:POJ-1094题意:给出大小关系,判断到达某步可以确定所有的大小关系或者确定无解。或者无法确定哪一种,有多种关系。拓扑排序: 对级别进行的排序,也就是给元素赋予了等级,对等级划分排序。抽象到有向图中,就是0度点为低层次,加入到一个数据结构中(栈或者队列都可以),然后对应指向结点的入度对应-1,然后再把现在的0度点加入….(第i层在第i-1层删除之后,i层最底层,入度肯定为0)。由此可知,如果出现一次性加入了...

2020-11-08 23:52:27 691

原创 整除分块(数论) 余数和

拓扑排序:【题意】给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值。例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7。【输入格式】输入仅一行,包含两个整数n, k。【输出格式】输出仅一行,即j(n, k)。【数据范围】1≤n,k≤10^9【输入样例】5 3【输出样例】7整除分块: 此题目中,...

2020-11-08 23:50:52 355

原创 数据结构-树与二叉树-二叉树的递归遍历(Tree   UVA - 548||Not so Mobile UVA - 839||The Falling Leaves UVA - 699)

目录二叉树的递归遍历:Tree UVA - 548题目大意:基本思路:输入控制:代码:Not so Mobile UVA - 839The Falling Leaves UVA - 699二叉树的递归遍历: Depth-First Search(DFS):先序遍历 中序遍历 后序遍历Tree UVA - 548题目大意: 知道中序遍历和后序遍历的顺序,算出该二叉树并求出最小权值路径对应的叶结点权值(结点值为...

2020-11-02 23:43:43 95

原创 二叉树的前序遍历、中序遍历、后序遍历!!!

代码:前序遍历先打印自己,再打印left,再打印right。以下两个一样。void pre_order(node* u){ if(u == NULL) return ; printf("%d ",u->v); pre_order(u->left); pre_order(u->right);}中序遍历void mid_order(node* u){ if(u =...

2020-11-02 23:39:25 49

原创 数据结构-树与二叉树-二叉树的层次遍历(UVA - 122      Trees on the level)以及函数sscanf strchr的介绍与应用

目录动态二叉树结构体定义与生成新结构点:指针:数组:二叉树的层次遍历:UVA - 122 Trees on the level函数的应用:指针代码:数组代码:动态二叉树结构体定义与生成新结构点:指针:struct node{ bool have_value; int v; node *left,*right; node():have_value(false),left(NULL),r...

2020-11-02 23:37:23 90

原创 数据结构-树和二叉树-二叉树的编号 小球下落(Uva679)

目录小球下落大致题意:编号特点:***如果从1开始编号,第k个结点左结点为2*k,右结点为2*k+1。***如果从0开始编号,第k个结点左结点为1+2*k,右结点为2*k+2。暴力代码:TLE分析与解决:核心代码转换:代码:小球下落大致题意:所有结点都有一个开关,初始状态全部为关。当小球达到一个结点时,如果该结点关闭状态就想左走,否则向右走,并且转变开关状态。现在问给定的深度d求下落的第l个球最深层的结点编号;编号特点:***如果从1开始编号.

2020-11-01 21:48:05 213

原创 数据结构-链表的应用(破损的键盘Uva11988 移动盒子Uva12657)

目录链表:破损的键盘 Uva11988题意:注意:代码:Lrj代码:移动盒子Uva12657思路分析:代码:链表: 优势在于插入删除操作复杂度为O(1),劣势在于读取元素的慢,没有随机存取的特性。当遇到需要大量的移动元素(插入、删除、调换元素……) 优先考虑链表的数据结构。有时候静态的好写一些。破损的键盘 Uva11988题意:其实就是一个字母一个字母拼接起来,如果遇到[,就从最前面拼接,如果遇到],就从后面拼接。这...

2020-11-01 20:29:05 127

原创 数据结构-栈的应用(UVA-514 Rails/PTA 列车厢调度)

目录Rails题意:基本思想:代码:PTA(列车厢调度)代码:Rails题意:A顺序1-n,给出到达B的顺序。中间可以先放到station,但是从station中只能从顶端取出。经典模拟栈:基本思想:一个指向A,一个指向B,如果pa=pb,直接从A移动到B。否则就看station的top是不是和pb相同,相同的话就直接从station移动到B(注意判空)。如果也不行,那么就从A进station(前提A不为空,即A<=n)。如果还不行的话,那么就.

2020-11-01 00:02:55 395

原创 HDU-4217 树状数组的应用

思路:如果用数组暴力的话,每次都要删除操作,复杂度过高。树状数组比较喜欢和前缀和相联系运用。比如逆序对。先对每一个最深层结点复为1,这样find(x)就可以得到x值。如果某个点已被删除,就标记为0,也就是对其-1。这样查询时,如果在该删除值的前面,无影响。在后面,这样第一个肯定就是。注意:如果一个数的前一个数和后一个数都已经被删除,这时候第一个和为x的才是,后者也为x因为该点为0,加于不加都一样。这就是需要左侧边界的二分搜索;具体见:https://www.cnblogs.com/kyo..

2020-11-01 00:00:11 127

原创 子矩阵操作以及尺取法

目录尺取法(双指针法)二维化一维:一、二、码1:思路:码2:二分+枚举尺取法(双指针法)顾名思义,像尺子一样取一段,满足条件就继续扩大区间,不满足就剔除后端直到满足,然后前端继续前行。二维化一维:例如二维求子矩阵最大和,可以枚举行长度O(n^2),然后对于每一列这段和可以理解为1个元素,所有m列就对应了m个元素,也就是化作了怎么用O(n)的时间求最大连续子序列和。例如二维求最大子矩阵和不超过零的元素个数,同理可以枚举行长度O(n^2),然后对于每一列.

2020-10-31 23:14:05 437

原创 大数阶乘幂乘的位数以及前几位数求法、无限循环小数的分数表示求法。

目录大数阶乘 大数幂乘等的位数以及结果的前几位数。无限循环小数的分数表示求法:大数阶乘 大数幂乘等的位数以及结果的前几位数。思路:用对数运算。log10(1)+...log10(n)=log10(1*2*3*...*n)=log10(m*10^x)=log10(m)+log10(10^x)(1<m<10)(int)之后就是x,也就是转化阶乘为1*10^x,位数就是x+1。例如前五位数,最终数字肯定在m里面,所以求出m。ans-(int)ans就是log10(m).

2020-10-31 23:13:47 300

空空如也

空空如也

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

TA关注的人

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