先说个简单的 托兰定理 其实就是个公式罢了
https://www.luogu.com.cn/problem/P6269
题意:这道题的描述就是任意三个点不构成环的话这样一个图最多有多少边
图兰定理做法
在没有(r+1)点团(点团:构成环路的点集)的n个顶点的简单图中,T(n,r)的最多有多少边。
找规律做法
https://oeis.org/
这个网站可以帮助你轻松完成找规律
额外补充:
在这个网站找这个数列的规律时你会发现
这样一段话。
https://www.luogu.com.cn/problem/P3382
第一次了解到三分
其实如果就是个板子题我觉得这题难度顶多也就是普及-
关于三分
1.三分是啥
三分是基于二分的拓展,常用于找到极值点之类的题目中
2.三分怎么用
找到两个点 mid1和mid2,然后确定你要找到的那个极值点的精度比如0.001,让mid1分布在mid2的左侧,两个点分布的那一段函数都是单调的,通过不断让mid1和mid2靠近找到极值点。
若f(mid1) < f(mid2),极值点v一定在mid1的右侧。此时,mid1和mid2要么都在v的左侧,要么分别在v的两侧。
若f(mid1) > f(mid2),极值点v一定在mid2的左侧。
3.怎么找mid1和mid2
只介绍一种没问题的做法
k=(l+r)/3
mid1=l+k
mid2=r-k
这样就确定了mid1和mid2是整个区间的三分点
最后附上三分法的模板
#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-6;
int n;
double a[15];
double f(double x)
{
double s=0;
for(int i=n;i>=0;i--)
s = s*x + a[i];
return s;
}
int main()
{
double L,R;
scanf("%d%lf%lf",&n,&L,&R);
for(int i=n;i>=0;i--) scanf("%lf",&a[i]);
while(R-L > eps)
{
double k =(R-L)/3.0;
double mid1 = L+k, mid2 = R-k;
if(f(mid1) > f(mid2))
R = mid2;
else L = mid1;
}
printf("%.5f\n",L);
return 0;
}
注:三分法的介绍是我学习罗勇军老师的博客做的笔记
原作地址:https://www.cnblogs.com/luoyj/p/12408277.html