自定义博客皮肤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)
  • 收藏
  • 关注

原创 2021icpc澳门 E-Pass the Ball!(NTT)

一道多项式经典题

2022-07-03 14:11:38 981 1

原创 L - Lottery (二进制 乘法原理)

题意大概是这样的有n(1<=n<=1e5)个不同的盒子每个盒子有两个值ai与xi代表第i个盒子一共有xi(1<=xi<=1e9)个小球并且每个小球的价值为2^ai(0<=ai<=1e9)问一共有多少种不同价值的选法。并且答案对1e9+7去模。其实拿到这题很容易就可以往二进制的方向上去想,那么二进制下怎么进位才能不影响答案呢?因为只要每位上都有数的话那么就不会导致组合的数量的损失,那么我们把这个二进制数在每位尽可能有数的情况下去尽可能的进位就行了,最后很容易可以得到一个只

2022-01-15 00:03:32 329

原创 nim博弈

nim博弈是最基础的博弈之一也是非常重要的博弈。题目:有n堆石子每堆石头有ai个石头,两个玩家轮流进行操作,每次操作可以从一堆石头里取任意数量的石子(但是不能不取),当一个玩家不能在取时就输了。我们可以得到一个结论当a1 ^ a2 …… ^ an=0时先手必输,否则先手必赢 。...

2021-08-25 21:11:53 424

原创 卢卡斯定理

卢卡斯定理一般是用在求较大的组合数上面。对于一般式子(x+1)^a我们可以把这个式子化成一个p进制的多项式那么其中每一项都可以二项式展开一下其中只有二项式展开的第1项与第a+1项在等式两边同余于p时还存在,因为出了这两项以外二项展开的每一项系数都有p这个因子那么在取余后都会变成0。从而我们可以得到x+1 ^ a≡x ^ a+1(mod p)。因为在原式中x ^ b的系数为c(a,b),二把他拆成的多项式中每一部分拿出bi的系数的话x ^ bi的系数应该为c(mi,bi)。从而我们可以得出...

2021-08-24 23:19:55 114

原创 高斯消元法解方程组

高斯消元法是线性代数里解线性方程组的一种方法同时也可以用来求矩阵的秩。原理是通过将原线性方程的增广矩阵初等变换来使原始矩阵化为行最简阶梯型,从而求出线性方程组的解,方程组的解的数量有三种情况,如果矩阵为行满秩矩阵的话显然这个矩阵只有唯一解,如果矩阵不为行满秩矩阵的且出现了一行都为0的情况的话那么方程组有无穷多解,如果方程组出现了除了常系数所在的列以外其余项都为0的话那么方程组无解。代码如下:#include <iostream>#include <algorithm>#inc

2021-08-23 23:19:42 753

原创 概率dp概念

求概率dp的一个当前状态可以由它的几个子状态推出来,推导的过程一般是从后往前推的,E(apa+bpb+cpc…)=aE(pa)+bE(pb)+cE(pc)+…+1。由当前状态可以逆推出前面几个子状态。今天补了之前比赛的一道概率dp的题目题目链接如下:https://acm.hdu.edu.cn/showproblem.php?pid=6555题目思路:这道题的思路其实不难几种子状态当时也都推出来了但是我学过概率dp也没看出来这题可以dp于是比赛就没写出来。其实这题能看出是概率dp的话也不难,每次转

2021-08-22 23:36:57 124

原创 线性求前n个数的逆元

求一个数模p的逆元我们可以用费马小定理加快速幂求解或者用扩展欧几里得来求解,他们的复杂度都是o(log(n))的,都是很优秀的求法。但是当我们要求前n个数的逆元时就需要o(nlog(n))的复杂度了,如果我们可以通过第i个数前面的数的逆元来推出第i个数的逆元的话那么我们就可以线性的以o(n)的时间复杂度来求出前n个数的逆元了。证明如下。设t=p/i,k=p%i可知t*i+k≡0(mod p)等式两边同时乘上inv(i)与inv(k)可得t*inv(k)+inv(i)≡0(mod p)所以inv(

2021-08-17 20:07:40 113

原创 集训第8天总结

今天学了一下欧拉函数,如果单独求一个数的欧拉函数我们可以用试触法而因为x的因子中能大于等于根号x的因子最多只能有一个所以我们可以用o(根号n)的复杂度取求出一个数的欧拉函数。要求n个数的欧拉函数的话我们可以用欧拉筛o(n)的实现,如果i为质数的话易知f(i)=i-1,如果i%p(j)==0的话那么由唯一分解定理可知i的质因数与i*p(j)相同就推出f(i*p(j))=p(j)*f(i),如果i%p(j)!=0时因为欧拉筛的每个数都是被他是最小因子所筛的从而可知i*p(j)的质因数个数仅比i多一个p(j),

2021-08-17 00:14:13 57

原创 三期集训第六天总结

今天比赛上遇到一道欧拉筛的题目其实一期集训的时候我就学了欧拉筛但是原理没完全搞懂,然后比赛就被一道欧拉筛的变式题给卡住了,然后我比完赛后就仔细学了一下欧拉筛并整理了一下板子如下#include<iostream>#include<cstring>using namespace std;const int N=10001;int prime[N],vis[N],cnt=0;void Prime(int n){ memset(prime,0,sizeof(prime

2021-08-15 00:29:22 50

原创 暑期集训三期第5天总结

今天上午补了两道题发现都要用到数学知识,下午就学了一下组合数学的知识。重新回顾了一下高中的排列组合。如下

2021-08-13 23:43:22 67

原创 三期集训第4天总结

今天下午补了一下昨天做不出来的题实在想不出来就翻了一下题解,发现里面有一个我不知道的知识点皮克定理,知道这个定理后发现看这个题清晰多了。虽然这个定理形式上特别简单但是它的证明还是比较复杂了看了好几个证明里面一堆看不懂的数学符号后来终于找到了一个稍微简单的证明给他看懂了。证明在网上找到了一个大佬的证明它是一种物理证明方法证明的比纯数学做法要好理解很多。...

2021-08-12 23:12:53 39

原创 三期集训第3天总结

今天学了一下大数的加减乘除并且自己写了一下板子,之前被这个问题卡过挺多次的但是一直没去学今天补上期结训赛的题补的差不多了就去学了一下高精度,然后自己敲了一下并且整理了一下如下。#include<iostream>//高精度加法using namespace std;const int N=1000001;int A[N],B[N],C[N],z;void add(int x,int y){ int t=0; z=max(x,y); for(int i=0;i<=max(x,

2021-08-11 23:55:07 55

原创 三期集训第二天总结

今天写了一道模拟题题目其实不难但是中间有很多细节容易写错,在加上代码量比较大也不好改bug,因为我比较菜的原因找了很久才找出bug。其中有几个细节需要注意一下一是起点坐标1,1应该是在左下角,二是每跑一格都应该去更新它的状态。代码如下。#include<iostream>using namespace std;const int N=1002;char a[N][N],b[10*N],go[4][2]={{-1,0},{1,0},{0,1},{0,-1}};struct node{

2021-08-10 23:07:06 47

原创 3期集训第一天

今天学了一下种类并查集,它是在并查集的基础上做了一些改变的数据结构,并查集是维护的一种传递的关系比如亲戚的亲戚还是亲戚而种类并查集一般维护的关系是敌人是敌人是朋友的关系,储存节点之间的关系一般开维护数量两倍的大小。然后做了一道种类并查集的列题代码如下。#include<iostream>#include<algorithm>using namespace std;const int N=100001;int f[40001];struct node{ int a,b,

2021-08-09 23:07:01 35

原创 Sudoku

这道题乍一看没什么思路一开始以为就是暴力模拟后来写了一半发现我的想法有局限性,然后想了想找到了一种暴力的搜索写法。直接每个格子从1到9的枚举如果可以就接着往后搜不行的话就回溯并把回溯的值往后枚举直到搜完所以格子答案就出来了。ac代码如下。#include<iostream>#include<cstring>using namespace std;char a[12][12];int box1[10][10],box2[10][10],box3[10][10],b[12][1

2021-08-06 00:34:16 48

原创 二期集训第八天总结

今天写了一几道之前没写过的搜索题然后就出了两道题,第一道题我感觉比较难这道题的大致思路差不多半个多小时就想出来了然后一直不知道怎么去实现,后来和李金肖交流后发现我的剪枝也没剪完全然后思路完善后一直磨到了下午两点半才把这到题写了出来然后提交一直超时也不知道还要减哪里的枝了找了将近一个小时后来心态蹦了抱着随便试试的态度把本来sort的递增序列改成递减就过了,然后仔细想一下确实这样能减的更多因为从大到小每次减的节点离根更近所以减的更多。然后又看了一道更难的题看了一个多小时还是只有暴力的思路就直接跳了换了到简单点的

2021-08-05 00:02:27 49

原创 二期集训第七天

今天早上刚开始感觉还行把昨天的一道题的bug改出来了,然后后来不知道为什么突然感觉很困迷迷糊糊的想出了一道题的思路但是没想到代码该怎么写就开会去了,后来下午回来把那道线段树的题敲出来了,感觉没啥问题但是就是过不了,后来发现中间写了一些没必要的东西把它删了就过了,然后晚上写了一下之前没写的搜索题,那道搜索题是我之前寒假怎么都想不出来的题目但是现在我在看那道题感觉特别的简单就是代码量有点大中间出了一些bug调了一段时间。...

2021-08-03 22:59:35 35

原创 二期集训第6天总结

因为今天下午5点钟才回来所以学习的时间不太多,然后花了点时间复习了一下之前学的线段数并且做了一道题,并且晚上总结的时候听了一下学长讲的组合数学以及李金肖讲的珂朵莉树。

2021-08-02 23:07:52 38

原创 暑期集训第八天总结

总的来说今天过的来是比较充实的,今天上午学了学长讲的两个数据结构树状数组与线段树,下午把上午讲的两个数据结构实现了一下,树状数组并不难实现,感觉lowbit很妙,但是线段树的实现我花了很长时间还对着博客去看了一下到现在还有一个懒标记没有理解。去把昨天比赛的题目补了两道出来,因为其中有一道题要用map所以我顺带的学了一下map容器。感觉总的来说今天收获还是很多的。...

2021-07-23 22:59:24 68

原创 广度优先搜索

学习产出:昨天看了看龙哥的博客今天终于懂了并且写出了广度优先搜索如下:#include <stdio.h>#define max 100000int go[4][2]={{0,-1},{0,1},{-1,0},{1,0}};//向上下左右4个方向移动int d[10][10];//地图大小struct wh{int x;//横坐标int y;//纵坐标int num;//到这个位置所需花费的时间};struct wh a[max];int main(){int i,j,

2021-01-08 21:44:47 43

原创 并查集与插分的见解

总结今天对并查集与插分有了一定的了解写了一些简单的代码如下。插分:#include <stdio.h>int main(){int a[100],b[100];int i,j,n;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i++){if(i==0){b[i]=a[i];}else{b[i]=a[i]-a[i-1];}}for(i=0;i<n;

2021-01-07 21:47:16 163

原创 链表的初步学习

前言今天学了一点链表的知识,但双向链表还是不太清楚。总结#include<stdio.h>//链表#include<stdlib.h>//c++基本库typedef struct node{//创建链表节点int value;//链表储存元素struct node *next; //指向下一个链表}Node; //改名int shuchu(Node *head){for(head;head;head=head->next){printf("%d “,hea

2021-01-06 21:54:56 58

空空如也

空空如也

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

TA关注的人

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