【文文殿下】ExBSGS】的更多相关文章

无需逆元版本: #include<cstdio> #include<cassert> #include<cmath> #include<map> typedef long long ll; ll gcd(ll a,ll b) { return b?gcd(b,a%b):a; } ll qpow(ll a,ll b,ll p) { ll ret = 1; while(b) { if(b&1) { ret=ret*a%p; } a=a*a%p; b>…
Day0 今天早上三点半才睡着,五点起床,前往省城郑州.与省实验常老师汇合,坐上高铁,下午三点半多才到广州二中. 下午随便找了一个教室进去敲一敲代码,发现自己越来越菜了. 和一大堆网上的dalao面基了呢!开心! 晚上开幕式,节目很好看,讲话很 $\color {red} {风趣} $. Day1 早上的饭好评!可以说是非常好吃了d(`・∀・)b 有面包鸡蛋和牛奶喔 _(:3 」∠ )_ 上午选择了第二教室这个地方QAQ,没能去参加松松松的小黄鸭宣传仪式 Σ( ° △ °).讲了生成函数和他那一…
Day-1 本段更新于 2018年11月8日23:26:44 今天还在机房里面,无所事事吧.上午睡了一上午,出去理了一下发,花了20块钱 QAQ. 下午来到机房,复习了一下exgcd的东西. 发现自己网络流好久没写了,洛谷群里又在讨论网络流,稍微有点慌QAQ 以为自己什么都准备好了,临近NOIp才发现自己什么都没准备好.KMP也好久没摸了,惨惨啊. 爆零预定 然后晚上和大家交流了一下注意事项(其实没有注意事项)以及把模拟赛的坑填了一下. Day 0 本段更新于 2018年11月9日17:27:1…
题解 我们考虑将棋盘扩大一倍,这样相当于取膜.然后,我们只要对x,y,的位置分类讨论,做四次crt就行.具体细节看文文代码. #include<cstdio> #include<algorithm> typedef long long ll; const ll inf = 1000000000000LL; int a[10],m[10]; inline ll exgcd(ll a,ll b,ll &x,ll &y) { if(b==0) { x=1;y=0; ret…
. 二进制状态压缩动态规划 对于某些情况,如果题目中所给的限制数目比较小,我们可以尝试状态压缩动态规划.例如,题目中给出数据范围\(n<=20\),这个一般情况下是一个状压DP的提示. 状态压缩,顾名思义,要把每种状态压缩起来.一个经典的问题是洛谷P1171,也就是著名的货郎担问题,它是一个NPC难题,目前不存在多项式算法.当题目中\(n\)的范围比较小时,我们可以考虑使用状态压缩动态规划(状压DP)来解决.(注:本文出现的"状压DP"若无特殊说明,均指状态压缩动态规划) 我们用…
这道题考场上卡了文文相当长的时间,所以写个题解泄泄愤QAQ 题意:给你$a$块红瓷砖,$b$块白瓷砖,在一个无限大的地上拼装,要求整体是一个矩形,并且至少有一种颜色是一个矩形,求最小周长. 题解: 首先,我们知道,当面积一定时,矩形的形状越接近正方形,周长越小. 很显然的想到,我们可以给总数$tot$=$a$+$b$开个方,然后去找一个最接近的矩形出来. 但事实上这个方法是错误的:你无法保证至少有一种颜色的是一个矩形. 我们首先,要分情况讨论,让$a$是矩形还是让$b$是矩形.当然,我们讨论每个…
题解 显然可以把每个观测点,认为是x轴上的一段区间.问题就转换为了:对于x轴上的若干个区间,选取尽可能少的点,使得所有区间都有至少一个点. 这是一个相当经典的贪心问题. 代码如下: #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> const int maxn = 110; struct qwq { int vis; double x,y; const bool op…
题解 一开始想到离散化,然后暴力模拟.但是存在一种hack数据: [5,7] [1,5] [7,9] 这样会错误的认为第一个区间被覆盖了(因为两个端点被覆盖).所以我们设置一个玄学调参系数,在一个区间的内部,rand几个点,属于这个区间. 这个系数一般来讲设为5就可以了. 代码如下: #include<cstdio> #include<algorithm> #include<cstdlib> const int maxn = 1e5+10; int n,m; int x…
题解 可以计算每一项对后面几项的贡献,然后考虑后面每一项,发现这是一个卷积,直接暴力NTT就行了,发现它是一个有后效性的,我们选择使用CDQ分治. Tips:不能像通常CDQ分治一样直接 每次递归两边,然后处理.应该先递归左边,然后处理,再递归右边,保证右边的所有需要的转移已经被计算出来. 参考代码: #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+10; const int p(998244353); int…
题解 二项式展开,然后暴力FFT就好了.会发现有一个卷积与c无关,我们找一个最小的项就行了. Tips:记得要倍长其中一个数组,防止FFT出锅 代码如下: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 5e4+10; const double pi = acos(-1.0); struct Complex{ double r,i; Complex(double r,doub…