自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 素因子分解表+重复元素全排列问题

素因子分解表+重复元素全排列问题如果要求解重复运算的全排列问题,最朴素的方法是先求n!,再求重复元素m1,m2,m3的m1!,m2!,m3!,然后再做除法,但这样写很容易爆时间和爆空间。所以这里聊一聊利用素因子分解表来降低时间复杂度。一,素因子分解表我们都知道,一个比1大的合数可以分解成若干个素数的乘积,比如6=23,4=22。那么现在聊的素因子分解表是什么意思呢?其作用就是记录每个数的素因数,它的结构如下:{这个数的素因数个数,素因数1,素因数2,…,素因数n}这个表可以是无限大,但因为

2020-12-30 20:40:34 816

原创 吉首大学第十届“新星杯”大学生程序设计大赛 A题题解

这是一场很毒瘤的比赛。鲁大师在一个星期前通知我们去打这场比赛,说名次高的有奖品,还说去年他们去参加这场比赛拿了前几名拿了个U盘…(疯狂暗示比赛很简单比赛很简单 )单纯的我真的信了赛后得知这场比赛是一场cf1800水平的比赛心里一万个TMD这次比赛前两个小时,凭借我单身18年的手速,AC了5道题,排名最高追到了20名,那时候我觉得这把有了,但没想到之后的三个小时疯狂吃T,一题都没过…比赛结束后感觉人被掏空了。这次比赛的题我都会写题解,但因为我马上就要期末考试了,所以每天只会写一篇题解。下面看A题

2020-12-28 16:47:04 358

原创 链表的一些基础操作

链表的一些基础操作这篇文章比较基础,主要是简单的聊聊链表的使用。既然是简单的聊,就放一道模拟题上来吧,这道题也是educodr实验六的答案,如果实在不理解的好兄弟可以直接复制代码去交作业。题目如下:AC代码如下:(因为学校的测试平台不能用c++,所以我放的是c的代码#include <stdio.h>#include <stdlib.h>#define LEN (struct AC*)malloc(sizeof(struct AC))struct AC{ int

2020-12-24 23:22:58 157

转载 乘法逆元的详解

二元运算符 ‘≡’: 当 a%p = b%p 时,a ≡ b ( mod p )模运算对于 加法 和 乘法 同样适用,也就是说,如果 a ≡ a‘ (mod p) 和 b ≡ b’ (mod p),那么 a + b ≡ a` + b` (mod p) a * b ≡ a` * b` (mod p)对于 除法 却不适用存在 a / b mod p != a’ / b ‘ mod p模乘法逆元:若 a * b ≡ 1 (mod p),则称 a 为 b 的模乘法逆元(在mod p

2020-12-23 18:23:19 878

原创 欧拉函数模板

欧拉函数模板这个欧拉函数的代码我调了半天,最后发现错在一个小细节上,直接当场崩溃。所有的注释都在代码里面,如果不懂的可以去别的地方看看原理。模板如下:#include<bits/stdc++.h>using namespace std;#define ll long long#define INF 0x3f0x3f0x3f#define MAX 1000000ll phi[MAX],primes[MAX],primes2[MAX];//phi是用来记录每一个数的欧拉函数值//

2020-12-23 16:06:04 125

原创 矩阵快速幂 求解斐波那契数列的快速算法

矩阵快速幂模板:#include<bits/stdc++.h>using namespace std;#define ll long long#define mod 1000000007struct matrix{ ll cell[5][5]; matrix(ll a=0,ll b=0,ll c=0,ll d=0) { cell[0][0]=a;cell[0][1]=b;cell[1][0]=c;cell[1][1]=d; }}one(1,1,1,0);matrix

2020-12-22 23:05:16 3796 1

原创 洛谷P1885题解

此题是一道很基础的分治题,但我却把结合了数学思维把他解开了。一开始我直接模拟暴力解,但MLE了两个点。所以我有了一种感觉:一定有更简单的方式进行定位和查找。所以我再看了看给出的题目:S(0)= mooS(1) = S(0) +S(1)=S(0)+ m + ooo + S(0) =+S(0)= moo + m + ooo + moo = moomooomooS(2) = S(1) +S(2)= S(1) + m + oooo + S(1) = moomooomoo + m + oooo + moom

2020-12-22 13:06:40 340

原创 洛谷P2196 dp+前趋

本题AC代码如下:#include<bits/stdc++.h>using namespace std;int s[100],flag[100],dp[100];bool f[100][100];void dfs(int t){ if(flag[t])dfs(flag[t]); cout<<t<<' ';}int main(){ int n,sum=0,idx; cin>>n; for(int i=1;i<=n;i++) {

2020-12-21 10:00:56 102

原创 多重背包问题入门+dp储存空间优化

多重背包问题入门+dp储存空间优化这个入门知识点对应洛谷通天背包问题。下面看下问题:AC代码如下:#include<bits/stdc++.h>using namespace std;int weight[2000],price[2000],s[2000][200000],number1[2000];int dp[2000];int main(){ int m,n,number=0,t=0; cin>>m>>n; for(int i=1;i&lt

2020-12-17 15:13:49 216

原创 逆向背包问题 洛谷P1802

逆向背包问题 洛谷P1802看到这道题的时候我觉得大家一定会觉得这是一个很基础的背包模板题,但上手了之后感觉不太对劲,再读题就发现这个题的解题思路有点“逆"。作为动态规划的新手,逆的背包也让我想了很久下面先放出本题AC代码:#include<bits/stdc++.h>using namespace std;int win[1005],lose[1005],use[1005]; long long v[1005][10000];int main(){ int n,x; ci

2020-12-16 19:04:13 790

原创 处理字符串常用的函数

stoi()stol()stoul()stoll()stoull()stof()stod()stold()to_string()这些加起来有9个函数,但实际上只用2个就够了。一:stoi()其作用是将string类的字符串转化为 int 类型的数字,比如一个 string s={“123”};那么就可以利用stoi将它转化为一个int类型的数。记住了这个后剩下的7个就自然知道什么意思了!规律:sto+类型a的缩写()=将string类转为 类型a的数字。stol()就是将st.

2020-12-15 22:55:23 534

原创 指针的深入理解

指针的深入理解我不是一个指针大师,也没有什么独到见解,写这个纯粹为了应付考试,所以大佬可以自行跳过下面进入正文:如果现在不知道指针是什么的好兄弟可以看看我以前写的一篇博文:指针的初级理解现在是进阶:1.1通过指针引用数组为什么可以用指针来引用数组呢?不知道的快去看上面的文展,里面第一段我就聊了聊数据的储存。数组本身就是一种储存数据的方式,相比于你直接定义n个变量2.a,b,c,d…,直接定义数组s[n]的好处就是s[n]中储存的每个元素的地址都是有规律的。比如s[0]的地址是2000,那么

2020-12-14 20:18:11 323 2

原创 01背包问题 最低级理解

01背包问题下面给出 5 个物品信息和 1 个体积为 10 的背包:number 1 2 3 4 5volume 2 2 4 5 6price 2 3 2 4 5提出问题:找到这个背包能装下物品的最大价值是多少?对于蒟蒻来说,这个问题很好解,直接模拟过程,遍历每个物品,选或不选,即0和1中做出选择,之后找到所有情况中的价值最大的那种搭配就行。如果你是这样想的,那么我可以告诉你,你一定可以求出答案!但是如果我把问题扩大一点

2020-12-08 21:06:59 162

原创 #688 div2 Suffix Operations题解

#688 div2 Suffix Operations题解题目如下:本题AC代码:#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f#define ll long longll s[10000000];int main(){ int T; cin>>T; while(T--) { ll n,sum=0,ans=0; cin>>

2020-12-05 12:11:39 158

原创 洛谷P1182题解 二分理解

洛谷P1182题解 二分理解对于给定的一个长度为N的正整数数列 A_{1\sim N}A1∼N,现要将其分成 MM(M\leq NM≤N)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列 4\ 2\ 4\ 5\ 14 2 4 5 1 要分成 33 段。将其如下分段:[4\ 2][4\ 5][1][4 2][4 5][1]第一段和为 66,第 22 段和为 99,第 33 段和为 11,和最大值为 99。将其如下分段:[4][2\ 4][5\ 1][4][2 4]

2020-12-04 17:10:25 1375

原创 再写二分

洛谷P2678题解本题AC代码:#include<bits/stdc++.h>using namespace std;#define ll long longll len[50005];int main(){ ll l,n,m; cin>>l>>n>>m; for(int i=1;i<=n;i++) { cin>>len[i]; } ll L=0,R=l; ll mid; ll ans=0,step=0;

2020-12-03 22:40:51 67

空空如也

空空如也

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

TA关注的人

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