自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ACM知识清单模版笔记

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参

2021-04-22 00:19:02 138

原创 暑假补题[7-1](交互题)

给出一个奇数长度的排列,两两进行位置互换,那最后必有一个元素未交换位置,每次询问可以得到一段区间内的所有数,在15次询问内找到这个数。思路:我们通过询问可以知道有多少数是原来这个区间的,因为一开始的数组必是1~n排列。那么这些数有两种可能,一是与这个区间的值进行了交换,两一种情况是未进行交换。若没进行交换的元素在这个区间,那么这个区间长度必为奇数,否则没有交换的区间一定在别的区间,对于这样的考虑,使用二分,可以满足在15次询问内得到答案。(交互题输出后加 “fflush(stdout) or cout.fl

2022-07-01 16:20:48 160

原创 暑假补题【7-1】(codeforces)Educational Codeforces Round 121 (Rated for Div. 2)

代码:

2022-07-01 14:54:32 165 1

原创 暑假补题[6-30](AtCoder)

三个数字,每次选择两个-1,或者全部-1,问最少多少次操作全是0.没法全是0就输出-1.思路:排序以后看差值就好了。B:给你nn的矩阵,这个矩阵由1~nn组成且满足一个条件:每个格子的行都有一个比他小,每一列都有一个比他大。思路:总方案数-不合法方案不合法的方案中, 不合法的格子(即既是一行中的最小又是一列中的最大)只会有一个, 那么我们可以枚举这个格子上的元素是什么, 把比它小的放在同一列, 比它大的放在同一行, 然后把其他的元素填在剩余的 (nn - (2 * n - 1))个格子中就行

2022-06-30 20:58:07 198

原创 暑假补题[6-29](牛客)

牛客练习赛101:A.贪心,(n - 1) * (最大值-最小值)B.第一个位置可以是0,或者1,那么后面就可以随便放置,因为如果a1后面的数字和是偶数,a1=1,如果是奇数,a1=0.思路:贪心的考虑每一位是不是能为0,该位为0的条件是先设该位置为1,如果说ai&该位置为1时>ai+1&该位置为1时,那么该位置为0,把剩下的位数都这样去构造。如果说最后构造的数字不能满足条件,那么当前位置就为1.D:思路:分为两种情况:1.当图上有环时,那么环上连通就可以无限路径.2.当是一颗树

2022-06-29 11:34:40 99

原创 C#作业-陆上八百里-疫情交流社区情感系统

C#的大作业

2022-06-26 12:11:24 97

原创 经典水题板

二进制中1的个数:__builtin_popcount(n).区间选点,最大不相交区间数量#include <bits/stdc++.h>using namespace std;#define x first#define y secondconst int N = 1e5 + 100;pair<int,int> p[N];int cmp(pair<int,int> p1, pair<int,int> p2){ return p1.

2022-05-12 18:03:07 77

原创 算法模板-2022

目录:树和图字符串和字典树记忆化搜索排序及逆序对离散化树链剖分素数筛法:同余定理单调栈数学期望LCA树和图Acwing285. 没有上司的舞会Ural 大学有 N 名职员,编号为 1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行

2022-05-12 13:29:03 598

原创 Codeforces Round #782 (Div. 2)

#include<bits/stdc++.h>#define ll long long#define pd() printf("\n")#define pr(x) printf("%d", x)#define x first #define y second using namespace std; const int N = 4000; int main() { int T; scanf("%d", &T); while(T --){ ..

2022-04-27 19:37:26 198

原创 Acwing每日一题

#include <iostream>#include <cstring>#include <algorithm>#include <set>using namespace std;const int N = 10;char a[N][N];set<set<char>> ans[2];void insert(vector<vector<int>> ps){ set<char&..

2022-04-17 22:31:35 218

原创 ACwing线段树专题

#include<bits/stdc++.h>using namespace std;const int N = 5e5 + 10;int n, m, a[N];struct Node{ int l, r; int lmax, rmax, tmax, sum;}tr[N * 4];void pushup(Node &u, Node &l, Node &r){ u.sum = l.sum + r.sum; u.lmax =..

2022-04-11 10:27:59 358

原创 BFS模板

#include<bits/stdc++.h>using namespace std;typedef long long ll;int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int T; cin >> T; while(T--) { int n, m; cin >> n >> m; vector..

2022-04-10 22:15:32 330

原创 dp复习【第一章】

import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = new String(); string = scanner.next(); char[] st = new char[string.length()]; st = string.toChar..

2022-04-06 17:45:52 468

原创 第三届算法设计与编程挑战赛(冬季赛)

先小记录一下自己的排名 ,只能说很可惜,差个20名就金奖啦。但是只能说自己还是有东西没学,D题应该是可以做出来的,但是最后也没做出来,最后罚坐了两个小时.B题:题目很简洁,存在一个上升序列b使得原序列a和序列b的绝对值差值不超过eps,这道题的话一眼就觉得是个二分的题目,为什么这么说呢,因为对于eps来说,我们设答案的eps为ans,那么可得每个大于ans的eps都是符合题目要求的,对于每个可以符合要求的答案,我们用二分取最小的那个.(拿例子举例,如果eps是1000,那么肯定是符合题意的,但是10

2022-03-30 13:39:19 292

原创 数论-扩展欧几里得

ax + by = gcd(a,b).x = x0 + k*(a/d).y = y0 - k*(b/d).因为: a = 1(mod b).所以d = 1.x = x0 + k * b.y = y0 - k * a.所以 x = x0 + k * b.最小为(x0 % b + b) % b#include<bits/stdc++.h>using namespace std;#define ll long longll a,b; int exgcd(int a, int b.

2022-03-10 21:14:29 100

原创 最小生成树(Kruskal)

#include<bits/stdc++.h>using namespace std;const int N = 600, M = 360000;int n, k, xi[N], yi[N], tot;int fa[N];int find_fa(int x){ if(x == fa[x])return x; return fa[x] = find_fa(fa[x]);} vector<int> res;struct p{ int x,...

2022-03-10 20:21:58 104

原创 AcWing1295.X的因子链

分析:先把X分解质因数,即x = p1^k1 * p2 ^k2 …pct^kct.那么前面能分解后面的即是p1, p1p2, p1^2 p2, p1^2 * p2^2,… ,p1^k1 * p2 ^k2 …pct^kct这样的规律下去,那么这一条链子的最大长度就是k1+k2+…+kct.那么我们就可以得到序列:a1,a2,a3…,at.那么这样的序列一共有多少个呢?我们可以做一个映射:a1,a2/a1,a3/a2,…,at/at-1那么该序列就是原序列的增量序列,即改序列有多少种排法那么序列就有多少种,.

2022-03-07 20:27:20 211

原创 Acwing提高课:最小生成树

#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 500;int n;int dist[N], g[N][N];bool st[N];int prim(){ memset(dist, 0x3f, sizeof(dist)); dist[1] = 0; int res = 0; f.

2022-03-05 10:41:37 82

原创 Tarjan算法例题及模板

#include<bits/stdc++.h>using namespace std;const int N = 10010 , M = 50010;int n, m;int h[N], e[M], ne[M], idx;int dfn[N], low[N], timestamp; // 时间戳int stk[N], top;bool in_stk[N];int id[N], scc_cnt; // 每个点所属分量编号int dout[N], Size[N]; // 出

2022-02-05 16:44:37 564

原创 学生免费使用JB账号

JB对于学生来说是免费的:我们可以用学校的邮箱登录这个-> https://www.jetbrains.com/student/然后进去以后.点击Apply now.继续点击.看到这个以后去自己的邮箱点开链接.就可以使用JB账号了

2022-01-13 08:15:25 2572

原创 codeforces的镜像网站

codeforces.mlcodeforc.es

2021-12-16 20:27:45 5320

原创 Codeforces Round #491 (Div. 2)--Codeforces--problem/991/E

题目链接:https://codeforces.com/problemset/problem/991/E思路:多重集合的排列前置知识:比如说有1,2,3三个数字那么他们构成的排列为全排列:1 2 3,1 3 2,1,2 1 3,2 3 1,3 1 2,3 2 1.那么就是n!(n=3)321=6种.那么如果说是有重复的,比如说1 1 2 3,那么就是也就是4!/(2!*1!*1!*1!)种情况了.那么这道题里面把每个数字出现的次数存储起来,然后dfs一下.sum为全部数字(包括前导0的情况

2021-12-08 21:27:13 122

原创 数位DP(包含例题和模板)

如上题所示意:f®-f(l-1)就是答案.那么f(n)要怎么求呢?先把n分解为m进制的l位.那么对于第i位来说,就只有0或者1,因为题目里面没有系数.如181818=242^424+212^121.而没有282828=242^424+3∗223*2^23∗22.从最高位到最低位,那么对于第i位来说如果第i位>1那么第i位可以是0(组合数学,第i位下面的i-1位可以填k-last(已经填了的1的个数)个1,即C[i-1][k-last] (下标从1开始,若是从零开始就是C[i][k-last..

2021-11-23 13:44:37 574

原创 KMP算法必备工具之---可视化KMP算法(输入母串和子串可以看到变化,再也不用手动一个一个去试了)

每次算KMP的时候都要消耗一张纸来进行模拟,非常的不方便,于是打算用计算机做一个可视化的kmp算法出来,花费了几十分钟的努力终于搞出来了.可以说是呕心沥血了.代码如下://^_^#pragma warning(disable:4996)#include<stdio.h>#include<stdlib.h>#include<string.h> #include<stdio.h>#include<cstring>#define MAX

2021-11-20 17:07:59 1200 3

原创 树状数组:楼兰图腾

在完成了分配任务之后,西部 314 来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(V),一个部落崇拜铁锹(∧),他们分别用 V 和 ∧ 的形状来代表各自部落的图腾。西部 314 在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了 n 个点,经测量发现这 n 个点的水平位置和竖直位置是两两不同的。西部 314 认为这幅壁画所包含的信息与这 n 个点的相对位置有关,因此不妨设坐标分别为 (1,y1),(2,y2),…,(n,yn),其中 y1∼yn 是

2021-11-16 22:09:53 458

原创 ACwing第一章-动态规划dp之最长上升子序列模型

AC代码:#include<bits/stdc++.h>using namespace std;const int N = 150;int a[N],dp[N];int main(){ int T; scanf("%d",&T); while(T--){ int n; scanf("%d",&n); for(int i=1;i<=n;i++){ dp[i]=1; scanf("%d",&a..

2021-11-07 18:07:57 66

原创 心血来潮写一下组合数

组合数模板:#define ll long longconst ll mod = 555555555;ll c[5000][5000];void init(){ int i,j; c[0][0]=1; for(i=1;i<=4000;i++){ c[i][0]=1;c[i][i]=1; for(j=1;j<i;j++){ c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod; } }}设被行变换的数量为a,列变化的数量

2021-11-07 17:55:42 65

原创 ACwing第一章-动态规划dp之数字三角形模型

第一题:AC代码:(1)空间复杂度为O(n^2)的算法:#include<bits/stdc++.h>using namespace std;const int N = 150;int dp[N][N],a[N][N];int main(){ int T; scanf("%d",&T); while(T--){ memset(dp,0,sizeof(dp)); int r,c; scanf("%d%d",&r,&c); for(i

2021-10-25 18:27:01 100

原创 整数划分问题

dp优化:#include <iostream>using namespace std;const int N = 1010, MOD = 1e9 + 7;int dp[N];int main(){int n; cin >> n; dp[0] = 1; for(int i = 1; i <= n; i ++ ){ for(int j = i; j <= n; j ++ ){ dp[j]+=dp[j.

2021-10-03 16:39:56 56

原创 糖果传递与七夕祭

今天学了一个新的知识:ACwing122:糖果传递题解:如图,a1给an的糖果数目设为x1,a2给a1的糖果数目设为x2.已知最后每个人得到的糖果数目一样设为(avg).那么可以知道对于a1来说有方程->a1-x1+x2=avg.对于a2来说有方程->a2-x2+x3=avg…以此类推.我们可以把a1-x1+x2=avg转化成x1-x2=a1-avg.a2-x2+x3=avg转化为x2-x3=a2-zvg.…即x1-x2=a1-avg.x2-x3=a2-avg.…xn

2021-10-03 14:33:50 101

原创 2021-09-26动态规划

1.免费陷阱可以从后面一个时间开始往前推前面时间的状态:当前状态t-1获得的陷阱加上上个时间获得的陷阱.dp[t-1][x]+=max(dp[t][x],dp[t][x-1],dp[t][x+1]).AC代码:#include<iostream>#include<algorithm>#include<cstring>using namespace std;int dp[100011][15];int mmax(int a,int b,int c){

2021-09-27 11:34:54 88

原创 并查集例题及边带权和扩展域

A题:输入n个点(x,y).和两点至少距离d.然后分为两个操作:1.O p 修复p点。这时候遍历每个点如果两点距离小于d就放入一个集合.2.S l r查询l能不能到达r。AC代码:#include<iostream>#include<cmath>using namespace std;struct p{ int x,y;}a[2001];int fa[2001];int v[2001];int get(int x){ if(x==fa[x])retu

2021-09-20 20:12:50 59

原创 不含连续1的非负整数-力扣600

题意:给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数。示例 1:输入: 5输出: 5解释:下面是带有相应二进制表示的非负整数<= 5:0 : 01 : 12 : 103 : 114 : 1005 : 101其中,只有整数3违反规则(有两个连续的1),其他5个满足规则。说明: 1 <= n <= 10^9.思路:因为n的数据范围很大,暴力的话肯定是不行的.那么我们就使用01字典树来解决该问题.如下图:为什么要用

2021-09-11 15:33:45 174

原创 KMP算法,字符串哈希,最长公共子序列LCS,最长回文子序列LPS,AC自动机详细及模板

KMP算法能在线性时间内判定字符串A【1~N】是否为字符串V【1 ~M】的子串,并求出A在B中各次出现的位置.·

2021-09-04 22:30:45 297

原创 数论:唯一分解定理丶调和级数

H - Pairs Forming LCM今天又偷学了一手唯一分解定理的小知识:n=p1_11​e1 *p2_22​e2 *p3_33​e3 *…*pk_kk​k.设a,b为n的两个因子,则:a=p1_11​a1 *p2_22​a2 *p3_33​a3 *…*pk_kk​k.b=p1_11​b1 *p2_22​b2 *p3_33​b3 *…*pk_kk​k.推论:gcd(a,b)=p1_11​min(a1,b1) *p2_22​min(a2,b2) *p3_33​min(a3,b3) *…*p

2021-08-31 17:35:30 130

原创 逆元的两种求法

逆元逆元是什么网上有很多资料就不多阐述了.!主要用于把除法变成乘法!结论:a/b%mod=a*(b的逆元)%mod.比如说一个组合数若是除数或者被除数太大精度就会出问题.这时候就需要通过逆元把除法转换为乘法费马小定理及欧拉定理费马小定理: 当mod为素数时a^(mod-1)%mod=1.左右两边除a变成a^(mod-2)%mod = a^-1.所以a的逆元就是a^(mod-2).const int mod=10007;ll fastpow(ll a,ll b){ if(a==1)re

2021-08-29 22:01:35 445

原创 七夕没女朋友呜呜呜T_T (2021牛客七夕节场)

8.19一点凌晨睡不着 就想着来做点事 思来想去不如来写题算了 杭电多校和牛客竞赛的题还没补 来一边写一边补七夕场的题A题是一个二次元喂狗粮的问题就不写了┭┮﹏┭┮C题是一个开玩笑的题hhE是一个推理的也不写了0.0D-亲密数:这道题有个收获的地方就是求因子和:LL find(LL x){ int sum = 1, t = sqrt(x); for (int i = 2; i <= t; ++i) if (x % i == 0)

2021-08-19 03:33:18 124 2

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

链接:题目题目大意:给出n个整数.有三种操作:1.询问[l r]的总和2.[l r]里面所有数减去x&(-x)也就是去掉最低位3.[l r]里面所有数加上2^k( 2^k<=x<= 2^k+1),也就是说加上一个二进制的最高位,比如1010+1000=10010,观察不免发现是最高位左移一位.思路:操作2就是去掉最低位,操作3就是最高位左移,那么我们就可以将一个数字拆成两部分 一部分是a1也就是最高位代表的数字,一部分是a2也就是剩下位代表的数字 (如:10110,那么a1

2021-08-13 20:13:09 134

原创 补题日记(持续更新)

第一天:牛客多校第五场D Double Strings链接:大佬的博客给定两个字符串A,B求长度相同的AB子串,使得子串的前面部分相等,且第一个不相等的位置B>A。求这样的子串个数。思路:f[i][j]表示A的前i个字符与B的前j个字符能组成多少相等的子串。自我理解:比如说abcd,abdc,那样遍历到b的时候由于前面a是一样的,那当前的字串数量f[i][j]就会加上前面的字串数量+f[i-1][j-1],(也就是加上a时的数量),其他情况下就是加上大一点的那个,f[i][j]=((f[i

2021-08-12 03:49:33 253

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

杭电7029 MedianAC代码:#include<bits/stdc++.h>const int N= 1e5+10;using namespace std;#define ll long longll a[N],b[N];int main(){ int T; cin>>T; while(T--){ ll num=0,n,m; cin>>n>>m; memset(a,0,s

2021-08-07 18:14:17 87

空空如也

空空如也

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

TA关注的人

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