数学 1001
类似斐波那契求和
#include #include #include #include #include #include #include
数学 1002
圆上四个点连线能成圆内一个点,所以答案就是comb (n, 4) + n
#include int main(void) { int T; scanf ("%d", &T); while (T--) { int n; scanf ("%d", &n); if (n < 4) printf ("%d\n", n); else { unsigned long long ans = 1; ans = ans * n * (n - 1) / 2 * (n - 2) / 3 * (n - 3) / 4 + n; printf ("%I64d\n", ans); } } return 0;}
还有自己想出来的结论
#include #include #include #include #include #include #include
DP 1004
显然,每个人的策略就是都会拿剩下的数中最大的某几个数
假如我们用f[i]表示当剩下i个数的时候先手得分-后手得分的最小值
那么得到f[i]=max\left(a[j+1]-f[j] \right)(1<j\leq i)f[i]=max(a[j+1]−f[j])(1<j≤i)
但是这样做,是要超时的
我们不妨简单转换一下 f[i]=_max; _max=max(_max,a[i+1]-f[i]);
#include #include #include #include #include #include #include