
洛谷
yezzz.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P4251 [SCOI2015]小凸玩矩阵 (二分答案,二分图匹配)
P4251 [SCOI2015]小凸玩矩阵分析:二分答案 +++ 二分图匹配每行每列只能选取 111 个,将行列连边,建立二分图要求的是选取的 nnn 个数中第 kkk 大数的数最小值二分这个去求这个值,每次操作:将 a[i][j]<=mida[i][j]<=mida[i][j]<=mid 的连边(建边条件)跑一边二分图最大匹配若 cnt>n−k+1cnt>n-k+1cnt>n−k+1 则说明当前 mid>ansmid>ansm原创 2021-09-25 20:23:50 · 112 阅读 · 0 评论 -
P3355 骑士共存问题 P4304 [TJOI2013]攻击装置 (二分图最大独立集,黑白染色)
P4304 [TJOI2013]攻击装置分析:考虑攻击装置的安放位置(令 s=行数+列数s=行数+列数s=行数+列数 )若当前装置放在 sss 为奇数的位置,那么 888 个方向上的 888 个偶数位置不能放将位置 sss 按奇偶划分为两个集合(即黑白染色),问题便转换成了二分图匹配的问题此题是让求最大独立集#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M=1原创 2021-09-23 13:15:01 · 147 阅读 · 0 评论 -
P1516 青蛙的约会 (扩展欧几里得,理解如何取解)
P1516 青蛙的约会分析:x+km≡y+kn(mod l)x+km\equiv y+kn(mod\ l)x+km≡y+kn(mod l)转换一下:k(m−n)+lz=y−xk(m-n)+lz=y-xk(m−n)+lz=y−x然后直接套 exgcdexgcdexgcd 求解即可注意:m−n<0m-n<0m−n<0 时,等号两边要同时取反这题有助于理解取最小正整数解时的操作,方程 ax+by=gcdax+by=gcdax+by=gcd 的解不唯原创 2021-08-27 18:02:27 · 506 阅读 · 0 评论 -
扩展欧几里得算法
扩展欧几里得算法The extended Euclidean algorithm is an algorithm to compute integers xxx and yyy such that ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b) , given aaa and bbb .扩欧是对辗转相除法做了一些扩展,缩写 exgcd()exgcd()exgcd()考虑辗转相除法递推到边界,b=0,a=gcdb=0,a=gcdb=0,a=gcd得到原创 2021-08-27 16:41:09 · 172 阅读 · 0 评论 -
P1463 [POI2001][HAOI2007]反素数(dfs,性质题)
[P1463 POI2001][HAOI2007]反素数反素数,是约数最多的最小正整数令 g(x)g(x)g(x) 为正整数 xxx 的约数个数。例 g(1)=1,g(6)=4g(1)=1, g(6)=4g(1)=1,g(6)=4若正整数 xxx 满足:对于任意 <x<x<x 的正整数 i(0<i<x)i(0<i<x)i(0<i<x) ,都有 g(x)>g(i)g(x)>g(i)g(x)>g(i) ,则称 xxx 为原创 2021-08-26 13:23:06 · 241 阅读 · 0 评论 -
P4239 任意模数多项式乘法逆 (模板,MTT)
P4239 任意模数多项式乘法逆 #include <bits/stdc++.h>using namespace std;typedef long long ll;typedef long double lld;const int N=1e6+5, mo=1e9+7;struct MTT { struct cp { lld x,y; inline void init() { x=y=0; } cp operator原创 2021-08-20 20:21:58 · 216 阅读 · 0 评论 -
MTT板子 (任意模数NTT,任意模数多项式乘法)
MTT用了 555 次 FFTFFTFFTP4245 【模板】任意模数多项式乘法#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef long double lld;const int mo=998244353, N=1e6+5;struct MTT { struct cp { lld x,y; inline void init()原创 2021-08-20 20:04:21 · 370 阅读 · 0 评论 -
P4157 [SCOI2006]整数划分(打表,FFT高精乘,debug)
P4157 [SCOI2006]整数划分分析: 要使乘积最大,考虑到要使指数大一些,4=224=2^24=22 ,因此两个 222 可由一个 444 替换,32>233^2 > 2^332>23 ,所以要使 333 尽量多。对于最后一个数取什么要做分类讨论:n%3=0n\% 3=0n%3=0 ,取 333n%3==1n\%3==1n%3==1 ,去掉一个 333换成 444n%3==2n \%3==2n%3==2 , 取 222然后就是处理高精度乘法了,这里用的是原创 2021-08-11 12:51:10 · 147 阅读 · 0 评论 -
P2553 [AHOI2001]多项式乘法 (字符串处理,FFT,模拟好题)
P2553 [AHOI2001]多项式乘法打模拟加FFT 读入字符串后照例从头开始往后,如果找到一个数字,那么它肯定是 x,也就是系数,此时我们用读入优化时的方式将指针往后移,并把它存下来,然后此时指针指向的位置应该是 x 的最后一个字符,判断下个位置的字符是不是 'a' ,如果是的话意味着我们刚才存的 x 是这一项的系数,而我们将指针后移 3 位,分别经过 x 的最后一位、'a' 和 '^' ,到达这一项的次数 y 的第一位,依然使用读入优化的方式存下 y 。此时记录一下是应该放到 A中还是 B原创 2021-08-10 11:01:58 · 170 阅读 · 0 评论 -
[P1919 【模板】A*B Problem升级版(FFT快速傅里叶)(高精乘板子,FFT板子)
P1919 【模板】A*B Problem升级版(FFT快速傅里叶)分析: 为什么高精乘可以用 FFT 优化??? 众所周知 FFT 是解决多项式之间的乘法运算,将乘数的每一位看成多项式的系数即可#include<bits/stdc++.h>using namespace std;const int N = (1<<21)+5;const double PI=acos(-1);struct Complex{ double x, y; Com原创 2021-08-10 10:09:44 · 150 阅读 · 0 评论 -
P1378 油滴扩展
原题传送门分析:耐心写,详见代码代码:#include <bits/stdc++.h>using namespace std;const double pi=3.1415926;int n,xa,xb,ya,yb,x[9],y[9];double r[9],ans;int vis[9];double ys(int k){ int a=min(abs(xa-x[k]),abs(xb-x[k])); int b=min(abs(ya-y[k]),abs(yb原创 2021-02-02 22:03:32 · 163 阅读 · 0 评论 -
(杨辉三角)P1118 [USACO06FEB]Backward Digit Sums G/S
原题传送门分析:杨辉三角(emmm,没了,就是它)代码:#include <bits/stdc++.h>using namespace std;int n,m;int vis[15],f[15][15],out[15];void dfs(int k,int s){ if(s>m) return ; // 剪枝!!! if(k>n) { if(s==m) { for(int i原创 2021-02-02 21:54:08 · 285 阅读 · 0 评论 -
P1019 [NOIP2000 提高组] 单词接龙
P1019 单词接龙分析:因为n很小,所以直接深搜即可要先预处理每两个串之间的最小的重复串#include <bits/stdc++.h>using namespace std;const int N=25;int n,d[N][N];char c;string s[N];int cont(int l,int r){ int cnt=0; //l从后向前,r从前向后,找到的第一个相同的重复串便是最小的 for(int i=s[l].si原创 2021-02-02 21:50:10 · 714 阅读 · 0 评论 -
P5198 [USACO19JAN]Icy Perimeter S
原题传送门分析:主要是求周长时的思路的转换,即求“冰淇淋”最外层一圈>>>周围有“.”或者是边界代码:#include <bits/stdc++.h>using namespace std;const int N=1005;int n,g[N][N],vis[N][N];int sum,C;int dx[9]={0,0,-1,1};int dy[9]={1,-1,0,0};void dfs(int x,int y){ sum++; f原创 2021-02-02 21:39:30 · 184 阅读 · 0 评论 -
P1406 方格填数
传送门分析:耐心写,和模拟差不多,错了N次代码:#include<bits/stdc++.h>using namespace std;int n,i,a[6][6],b[30],vis[30],sum;void dfs(int x,int y,int z){ if (y>n) { //if (z!=sum) return; x++,y=1,z=0; } if (x>n){ for (i原创 2021-02-02 21:33:53 · 202 阅读 · 0 评论 -
P4302 [SCOI2003]字符串折叠 (洛谷)
原题传送门分析:区间与区间的关系,区间DPcheck() 检查区间[i,j]能否折叠#include <bits/stdc++.h>using namespace std;const int N=105;char s[N];int f[N][N],cn[N];int check(int i,int j,int l){ for(int k=i;k<=j;k++) { if(s[k]!=s[(k-i)%l+i]) return 0;原创 2021-01-27 14:33:48 · 161 阅读 · 1 评论