首页 > 其他分享 >【模板】数学

【模板】数学

时间:2024-04-12 19:56:56浏览次数:29  
标签:return int LL 数学 Vec io operator 模板

高精度类

struct bint : Vi {
	bint(int n=1) { resize(n); }
	void clr() { while( size() > 1 && !back() ) pop_back(); }
	friend istream& operator >> (istream &io,bint &a) {
		string s; io>>s;
		a.clear(); rFor(i,sz(s)-1,0) a.pb(s[i]-'0');
		return io;
	}
	friend ostream& operator << (ostream &io,const bint &a) {
		rFor(i,sz(a)-1,0) cout<<a[i];
		return io;
	}
	friend bool operator < (const bint &a,const bint &b) {
		if( sz(a) < sz(b) ) return 1;
		rFor(i,sz(a)-1,0) if( a[i] != b[i] ) return a[i]<b[i];
		return 0;
	}
	friend bint operator - (bint a,const bint &b) {
		Rep(i,0,sz(a)) {
			if( a[i] < b[i] ) --a[i+1], a[i] += 10;
			a[i] -= b[i];
		}
		return a.clr(), a;
	}
	friend bint operator * (const bint &a,const bint &b) {
		bint c(sz(a)+sz(b)+1);
		Rep(i,0,sz(a)) Rep(j,0,sz(b)) c[i+j] += a[i] * b[j];
		Rep(i,0,sz(c)) if( c[i] >= 10 ) c[i+1] += c[i]/10, c[i] %= 10;
		return c.clr(), c;
	}
};

分数类

组合数学

线性代数

矩阵乘法

凸包

求 \(\max_{i}\{kx_{i}+y_{i}\}\)。\(x_{i},y_{i},k\) 为 int

对 \((x_{i},y_{i})\) 建上凸包,查询斜率为 \(-k\) 的直线的最大截距

  • 静态建
struct Vec {
	LL x,y; Vec(LL x=0,LL y=0):x(x),y(y){}
	bool operator < (const Vec &rhs) { return x!=rhs.x ? x<rhs.x : y<rhs.y; }
	Vec operator - (const Vec &rhs) { return {x-rhs.x, y-rhs.y}; }
	LL operator & (const Vec &rhs) { return x*rhs.y-y*rhs.x; } // 叉乘
};

static Vec s[N]; int t = 0;
sort(all(p));
for(auto i : p) {
	while( t > 1 && (s[t]-s[t-1]&i-s[t-1]) >= 0 ) --t;
	s[++t] = i;
}
  • 二分查询

  • 双指针查询

sort(all(q),[](int x,int y){return k[x]<k[y];});
int j = 1;
for(int i : q) {
	auto f=[&](int j) { return k[j]*s[i].x+s[i].y; };
	while( j < t && f(j+1) > f(j) ) ++j;
	ans[i] = f(j);
}

拉格朗日插值

\(n+1\) 个点值确定一个\(n\) 次多项式

\[f(x)=\sum_{i=1}^{n+1}y_{i}\prod_{j\ne i}\frac{x-x_{j}}{x_{i}-x_{j}} \]

标签:return,int,LL,数学,Vec,io,operator,模板
From: https://www.cnblogs.com/ft61/p/17950677

相关文章

  • Thymeleaf SSTI模板注入分析
    环境搭建先搭建一个SpringMVC项目,参考这篇文章,或者参考我以前的spring内存马分析那篇文章https://blog.csdn.net/weixin_65287123/article/details/136648903SpringMVC路由简单写个servletpackagecom.example.controller;importorg.springframework.stereotype.Controlle......
  • 李彦宏:闭源才有真正商业模式才能聚集算力和人才;史上首位数学和计算机最高奖双得主丨RT
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 模板函数使用类型推导时的bug
    templatestaticboolparse_a_value(T&val,Json::Valuejson_val){if(json_val.isNull())returnfalse;if(typeid(val)==typeid(int)||typeid(val)==typeid(int16_t)||typeid(val)==typeid(int8_t)||typeid(val)==typeid(int32_t)){......
  • SOLIDWORKS模板批量修改工具 慧德敏学
    SOLIDWORKS批量修改模板插件-SolidKits.BOMs工具可实现工程图模板的批量替换,单位系统的批量修改,批量定义模型材质等功能。操作简单快捷,只需要提前打开SOLIDWORKS软件,执行后程序会自动完成所有替换操作。使用SOLIDWORKS绘制工程图之前,必须要选择工程图模板,模板中我们会定义好图幅......
  • 【数学】组合数学 - 排列组合
    父级页面:【数学】组合数学排列组合可重排列可重组合隔板法盒子可以为空隔板法:x个相同的小球,有y个不同的盒子,每个盒子可以为空,求有多少种方案数?把y个不同的盒子视作y-1个不同的隔板,然后把小球视作不同的,全排列有\(A_{x+y-1}^{x+y-1}\)种,然后除以隔板的全排列(隔板之间没有......
  • 【数学】组合数学 - 卡特兰数
    父级页面:【数学】组合数学卡特兰数记号为\(H_n\)第n个卡特兰数,下面的n就是指这个。\(H_0=1,H_1=1,H_2=2,H_3=5,H_4=14,H_5=42\)卡特兰数最常见的场景是合法的括号序,还有栈进出的方案。他们的特点就是“右括号”、“出栈”的次数不能超过剩余的“左括号”、“入栈”的次......
  • 蓝桥杯-构造(数学公式1/n = 1/(n+1) + 1/(n+1)n )
    0.题目1.题解1.0找规律n=1,1/1=1/2+1/3+1/6n=2,1/2=1/4+1/6+1/12n=3,1/3=1/6+1/9+1/18....实际上,1/6=1/12+1/12,1/12=1/36+2/36=1/36+1/18即1/6=1/(62)+1/(623/2)+1/(623),即2,3,6三种1.1构造我们想要知道1/n......
  • 北京大学2024春季高等数学A(II)试题及简评
    总的来说,难度适中,可能第一题会卡一下,是一个极坐标的反向换元,如果想不到硬做还是挺难的,非常遗憾,博主没有瞪眼法瞪出来,最后才想出来但是已经来不及了TAT。另外二、六题都是挖洞法,分别是Stokes和Green的挖洞法,只要细心发现被积函数和积分区域的奇点就可以。第三题的不能使用Gauss......
  • 洛谷题单指南-数学基础问题-P1072 [NOIP2009 提高组] Hankson 的趣味题
    原题链接:https://www.luogu.com.cn/problem/P1072题意解读:求有多少个x,满足x和a0​的最大公约数是a1​,x和b0​的最小公倍数是b1,多组数据。解题思路:枚举法:因为x和a0​的最大公约数是a1​,x和b0​的最小公倍数是b1,所以x不大于b1​。枚举x有两种思路:1、x是a1的倍数,最多需要枚举......
  • 组合数学
    逆元若\(i\cdotx=1\),则\(i^{-1}=x\)。递推求乘法逆元\[令模数为p,正整数i,a=\lfloor\frac{p}{i}\rfloor,b=p\operatorname{mod}i,且b\ne0。\\a\cdoti+b=p\\\Downarrow\\a\cdoti+b\equiv0(\operatorname{mod}p)\\\frac{i}{b}+\frac{1}{a}\equiv0(\o......