• spoj TSUM


    题目链接

    首先忽略 i < j < k这个条件。

    那么我们构造多项式

    [A(x) = sum_{1<=i<=N} x^{A_i} ]

    显然答案就是 $ A^3(x) $中 $ x^S $的系数。

    现在我们考虑容斥:


    1. $ (sum_{}x)^3 = sum_{}x^3 + 3sum_{}x^2 y + 6sum_{}xyz $

    2. $ (sum_{}x^2)(sum_{}x) = sum_{}x^3 + sum_{}x^2 y $

    3. $ (sum_{}x)^3 = sum_{}x^3 ( <br> <br> 由上面三个式子 我们可以推导出<br><br> ) sum_{}xyz = frac {(sum_{}x)^3 - 3(sum_{}x^2)(sum_{}x) + 2sum_{}x^3}{6} $

    1式中的系数3, 是因为相当于从3个(x+y+z)中选2个x和一个y, 那么就是$ C_3^2 cdotp C_1^1 $

    6 就是选一个x一个y一个z, 显然是 $ C_3^1 cdotp C_2^1 $


    然后问题就解决了, 套fft模板就好。




    第一次用markdown还有点小激动。

    ```C++ #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define pb(x) push_back(x) #define ll long long #define mk(x, y) make_pair(x, y) #define lson l, m, rt<<1 #define mem(a) memset(a, 0, sizeof(a)) #define rson m+1, r, rt<<1|1 #define mem1(a) memset(a, -1, sizeof(a)) #define mem2(a) memset(a, 0x3f, sizeof(a)) #define rep(i, n, a) for(int i = a; i cmx; typedef pair pll; const double PI = acos(-1.0); const double eps = 1e-8; const int mod = 1e9+7; const int inf = 1061109567; const int dir[][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} }; const int maxn = 2e5+5; int c[maxn], val[maxn], a[maxn], b[maxn]; cmx x[maxn], y[maxn]; void change(cmx x[], int len) { int i, j, k; for(i = 1, j = len/2; i < len - 1; i++) { if(i < j) swap(x[i], x[j]); k = len / 2; while(j >= k) { j -= k; k /= 2; } if(j < k) j += k; } } void fft(cmx x[], int len, int on) { change(x, len); for(int i = 2; i <= len; i <<= 1) { cmx wn(cos(-on * 2 * PI/i), sin(-on * 2 * PI/i)); for(int j = 0; j < len; j += i) { cmx w(1, 0); for(int k = j; k < j + i/2; k++) { cmx u = x[k]; cmx v = x[k + i/2]*w; x[k] = u + v; x[k+i/2] = u - v; w *= wn; } } } if(on == -1) { for(int i = 0; i < len; i++) x[i] /= len; } } int main() { int n, maxx = 0; cin>>n; for(int i = 0; i < n; i++) { scanf("%d", &val[i]); val[i] += 20000; maxx = max(maxx, val[i]); } maxx *= 3; for(int i = 0; i < n; i++) { a[val[i]]++; b[val[i]*2]++; c[val[i]*3]++; } int len = 1; while(len < maxx) len <<= 1; for(int i = 0; i < len; i++) { x[i] = cmx(a[i], 0); y[i] = cmx(b[i], 0); } fft(x, len, 1); fft(y, len, 1); cmx three(3.0, 0); for(int i = 0; i < len; i++) { x[i] = x[i]*x[i]*x[i] - x[i]*y[i]*three; } fft(x, len, -1); for(int i = 0; i < len; i++) { a[i] = (int(x[i].real() + 0.5) + 2*c[i])/6; } for(int i = 0; i < len; i++) { if(!a[i]) continue; printf("%d : %d ", i-3*20000, a[i]); } return 0; } ```
  • 相关阅读:
    XML错误信息Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-4.0.xsd). For more information, right click on the message in the Problems View ...
    Description Resource Path Location Type Cannot change version of project facet Dynamic Web Module to 2.3.
    maven创建web报错Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-compiler-plugin:maven-compiler-plugin:3.5.1:runtime Cause: error in opening zip file
    AJAX跨域
    JavaWeb学习总结(转载)
    JDBC学习笔记
    Java动态代理之JDK实现和CGlib实现
    (转)看懂UML类图
    spring boot配置使用fastjson
    python3下django连接mysql数据库
  • 原文地址:https://www.cnblogs.com/yohaha/p/5294081.html
Copyright © 2020-2023  润新知