首页 > 其他分享 >2023年12月5日总结

2023年12月5日总结

时间:2023-12-05 23:58:23浏览次数:44  
标签:总结 12 int lim ll 2023 rev vector 多项式

更好的观看

总结

今天是数学专题啊,内容还有一点多。勇敢牛牛,不怕困难!虽然看着有点恐怖,但是看着还好。

不定方程

这个知识点比较简单,上一道例题。

[HNOI2002] 跳蚤 想一下突然发现这道题很反演呢?那就归到后面一类吧嘻嘻。就是要求 \(n\) 个数 gcd 为 1 的数量用 \(f_m\) 表示,另外设 \(g_m=m^n\),然后很容易列出两个的关系莫比乌斯反演就可以,为了节省题目,这里面求莫比乌斯函数我直接用杜教筛嘻嘻,直接切掉今天三个板块。

莫比乌斯反演

[HNOI2002] 跳蚤 为什么又是你?

杜教筛

[HNOI2002] 跳蚤 怎么还是你?(其实有一点牵强,我XX)顺便提一嘴,昨天晚上床上想了一下杜教筛的推导过程,发现自己竟然轻松想出来了,感觉很兴奋,哇酷哇酷。

中国剩余定理

【模板】中国剩余定理(CRT)/曹冲养猪

【模板】扩展中国剩余定理 打过,不想打了,放在这里。

「NOI2018」屠龙勇士 试一试这道题。爆炸了!多测又没有清空!一定要记住!多测一定要清空!清空!清空!希望不会再有类似的错误了,还有中间可能会爆 long long,要开 __int128。


中场休息

放一篇文章,是后天的内容,保存在这里,防止后天忘记。《小学生都能看懂的三类斯特林数从入门到升天教程》


离散对数

大步小步算法,BSGS,拓展BSGS,还是很好理解的。就是相当于拆成根号进制(但是是减法),然后枚举。对于底数和模数不同余的情况就除以 gcd,还不同就继续。然后暴力就可以。

Luogu4195【模板】exBSGS/Spoj3105 Mod 直接上ex版本。

FFT/NTT

真神登场!回想了以前的写法,发现拓展性不是很好。于是决定以后都使用 vector 来实现,而且感觉这样会更好写,函数化实现。

这里放一下我的板子:

#include <bits/stdc++.h>
#define mod 998244353ll
using namespace std;
using ll = long long;
int n, m;
ll qp(ll x, ll y) {
	ll ans = 1;
	while (y) {
		if (y & 1) ans = ans * x % mod;
		y >>= 1;
		x = x * x % mod;
	}
	return ans;
}
void ntt(vector<int>& a, int c, const vector<int>& rev, int lim) {
	static ll inv3 = qp(3, mod - 2);
	for (int i = 0; i < lim; ++i) if (i < rev[i]) swap(a[i], a[rev[i]]);
	for (int i = 1; i < lim; i <<= 1) {
		ll x = qp(~c ? 3 : inv3, (mod - 1) / (i << 1));
		for (int j = 0; j < lim; j += (i << 1)) {
			ll y = 1;
			for (int k = 0; k < i; ++k, y = y * x % mod) {
				ll p = a[j + k], q = a[j + k + i] * y % mod;
				a[j + k] = (p + q) % mod;
				a[j + k + i] = (p - q + mod) % mod;
			}
		}
	}
	if (c == -1) {
		ll inv = qp(lim, mod - 2);
		for (auto&& i : a) i = i * inv % mod;
	}
}
vector<int> mult(vector<int> a, vector<int> b) {
	int n = a.size(), m = b.size();
	int lim, l = 0;
	for (lim = 1; lim < n + m; lim <<= 1) ++l;
	a.resize(lim), b.resize(lim);
	vector<int> rev(lim);
	for (int i = 0; i < lim; ++i) rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (l - 1));
	ntt(a, 1, rev, lim), ntt(b, 1, rev, lim);
	for (int i = 0; i < lim; ++i) a[i] = 1ll * a[i] * b[i] % mod;
	ntt(a, -1, rev, lim);
	a.resize(n + m - 1); //这一步很重要,在下面那道题中不加这个会 TLE!
	return a;
}
int main() {
	scanf("%d%d", &n, &m);
	vector<int> a(n + 1), b(m + 1);
	for (int i = 0; i <= n; ++i) {
		scanf("%d", &a[i]);
	}
	for (int j = 0; j <= m; ++j) {
		scanf("%d", &b[j]);
	}
	auto ans = mult(a, b);
	for (int i = 0; i <= (n + m); ++i) {
		printf("%d ", ans[i]);
	}
	return 0;
}

上周 Atcoder abc331_g 题刚好就是多项式,就写一下吧!就是先用 MIN-MAX 容斥一下,然后写一个式子画一下发现是几个多项式乘起来,直接放队列里面取前两个乘起来放进去就行,很方便。

记一下笔记:FWT(快速沃尔什变换)零基础详解qaq(ACM/OI)

然后还复习了多项式求逆,现在也会推了,发现用 vector 真的写起来很帅!太可爱啦!

但是多项式还有好多东西啊……还有对数,exp,快速幂,下降幂多项式,多点求值,多项式复合逆,多项式开根……任重道远乎。


P.S. 话说真的有人把洛谷上多项式模板写完了的吗……

后记

今天太兴奋拉!今天的题目都好酷!哇酷哇酷哇酷!

眼中若空意何生,不怨不急道自得。
心向苍穹看虚妄,数在人心理可通。

标签:总结,12,int,lim,ll,2023,rev,vector,多项式
From: https://www.cnblogs.com/huasushis/p/17878608.html

相关文章

  • 2023-12月面经
    Funplus-宝可梦大世界项目项目经历有点硬核,对着简历一条条问的,每条都要问个细节。状态机与行为树的对比,优缺点之类的checklua与C#的交互(tolua怎么调用C#,以及C#怎么调用lua函数)核心就是lua和C#之间有个虚拟栈,lua调用C#就把参数压入栈,然后C#从栈里取值,运行完函数逻辑后,如果有......
  • 12.5每日总结9
    查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中。importjava.io.IOException;importjava.io.InputStream;importjava.net.URL;importorg.apache.hadoop.fs.*;importorg.apach......
  • 12.5每日总结8
    编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。importjava.io.BufferedReader;importjava.io.IOException;importjav......
  • FX2023全新版-Go开发工程师-从基础到项目实战再到重构zxit666+尾缀
    FX2023全新版-Go开发工程师-从基础到项目实战再到重构zxit666+尾缀Go是一种高效、牢靠和简约的编程言语,它是由Google开发的。下面是运用Go言语编写的示例代码,用于完成一个简单的Web效劳器:这段代码创立了一个简单的Web效劳器,它将返回"Hello,World!"到一切恳求的客户端。首先,我们导......
  • 12.5每日总结
    文件创建以及覆盖importjava.io.FileInputStream;importjava.io.IOException;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FSDataOutputStream;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;publicclassCopyFr......
  • 12.5每日总结3
    将HDFS中指定文件的内容输出到终端中;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.*;importorg.apache.hadoop.fs.FileSystem;importjava.io.*;publicclassCat{/***读取文件内容*/publicstaticvoidcat(Configuration......
  • 12.5每日总结2
    从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.*;importorg.apache.hadoop.fs.FileSystem;importjava.io.*;publicclassCopyToLocal{/***下载文件......
  • 12.5每日总结5
     给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.*;importorg.apache.hadoop.fs.FileSystem;importjava.......
  • 12.5每日总结4
     显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.*;importorg.apache.hadoop.fs.FileSystem;importjava.io.*;importjava.text.SimpleDateFormat;publicclassList{/***......
  • 12.5每日总结6
    提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.*;importjava.io.*;publicclassRemoveOrMake{/***判断路径是否存在*/publics......