题面

题目传送门

解法

可以发现,题目可以转化成求若干个形如\(\sum_{i=1}^ni^k\)的东西

这个东西可以拉格朗日插值

大概讲一下拉格朗日插值是个什么东西:

显然,\(\sum_{i=1}^ni^k\)可以用一个\(k+1\)次多项式表示出来

那么,将\(x_i=1,2,…k+1\)代入,求得\(y_i\)

表达式即可表示为$\(y=\sum_{i=1}^{k+1}y_i\frac{(x-x_1)(x-x_2)…(x-x_{k+1})}{(x_i-x_1)(x_i-x_2)…(x_i-x_{k+1})}\)

另外,每一项分子分母上都不会出现\(x-x_i\)和\(x_i-x_i\)的东西

将\(x_i\)代入,显然是正确的

时间复杂度:\(O(TM^3)\)

代码

#include <bits/stdc++.h>
#define Mod 1000000007
#define LL long long
#define N 100
using namespace std;
template <typename node> void read(node &x) {x = 0; int f = 1; char c = getchar();while (!isdigit(c)) {if (c == '-') f = -1; c = getchar();}while (isdigit(c)) x = x * 10 + c - '0', c = getchar(); x *= f;
}
int x[N], y[N];
LL a[N];
int Pow(int x, int y) {int ret = 1;while (y) {if (y & 1) ret = 1ll * ret * x % Mod;y >>= 1, x = 1ll * x * x % Mod;}return ret;
}
int solve(int n, int k) {int ret = 0;for (int i = 1; i <= k + 2; i++) {int tx = y[i], ty = 1;for (int j = 1; j <= k + 2; j++) {if (i == j) continue;tx = 1ll * tx * (n - x[j]) % Mod;ty = 1ll * ty * (x[i] - x[j]) % Mod;}tx = 1ll * tx * Pow(ty, Mod - 2) % Mod;ret = ((LL)ret + tx + Mod) % Mod;}return ret;
}
int main() {int T; read(T);while (T--) {LL n, m; read(n), read(m); a[0] = 0;for (int i = 1; i <= m; i++) read(a[i]);int k = m + 1; sort(a + 1, a + m + 1);for (int i = 1; i <= k + 2; i++)x[i] = i, y[i] = ((LL)y[i - 1] + Pow(i, k)) % Mod;int ans = 0;for (int i = 0; i <= m; i++) {LL l = n - a[i];ans = ((LL)ans + solve(l, k)) % Mod;for (int j = i + 1; j <= m; j++)ans = (ans - Pow(a[j] - a[i], k) + Mod) % Mod;}cout << ans << "\n";}return 0;
}

转载于:https://www.cnblogs.com/copperoxide/p/9478385.html

bzoj 5339 [TJOI2018]教科书般的亵渎 拉格朗日插值相关推荐

  1. 洛谷P4593 [TJOI2018]教科书般的亵渎(拉格朗日插值)

    题意 题目链接 Sol 打出暴力不难发现时间复杂度的瓶颈在于求\(\sum_{i = 1}^n i^k\) 老祖宗告诉我们,这东西是个\(k\)次多项式,插一插就行了 上面的是\(O(Tk^2)\)的 ...

  2. P4593 [TJOI2018]教科书般的亵渎(拉格朗日插值 + k幂次之和)

    洛谷题目链接 题目大意:有点绕,有 n−mn - mn−m 个怪兽,它们的血量在 [1,n][1,n][1,n] 值域上且每个怪兽的血量都不同 (其中 m 个点被挖掉),你每使用一次亵渎会给所有怪兽血 ...

  3. 洛谷P4593 [TJOI2018]教科书般的亵渎

    链接 点击跳转 题解 分析之后,发现这个题主要是解决这个问题: 求 ∑ i = 1 n i k \sum_{i=1}^n i^k i=1∑n​ik 根据某些数学上的结论,这个东西是一个包含 n n n ...

  4. BZOJ5339: [TJOI2018]教科书般的亵渎-组合数学

    传送门 题意: 在炉石传说中有这样的一个场面:n个随从,血量为1~n,现在去除m个随从,然后开始释放"亵渎".每使用一张"亵渎"会获得一定的分数,分数计算如下: ...

  5. 【ybt金牌导航8-3-3】【luogu P4593】分数计算 / 教科书般的亵渎(数学)(拉格朗日插值)

    分数计算 / 教科书般的亵渎 题目链接:ybt金牌导航8-3-3 / luogu P4593 题目大意 有一些怪,血量从 1~n,其中有 m 个数是没有怪的,给出这些数. 然后你可以每次操作攻击所有怪 ...

  6. NOI模拟(5.23) TJOID2T3 教科书般的亵渎 (bzoj5339)

    教科书般的亵渎 题目背景: 5.23 模拟 TJOI2018D2T3 分析:拉格朗日差值 这个题的题意怕不是有毒,注意他每一次的k是相同的,为总共要用多少次卡片,然后卡片是每次先将所有的数减一,如果这 ...

  7. 教科书般的亵渎(dfs)

    题面: 教科书般的亵渎 Time Limit: 1500MS Memory Limit: 65536K Total Submissions: 36 Accepted: 3 Description &q ...

  8. A - 【深蓝】教科书般的亵渎 (Gym - 102072A )(矩阵快速幂+计算斐波那契数列)

    "现在给大家展示一波教科书般的亵渎" "扭了扭了" 炉石传说是一款比较火的卡牌游戏,不同的卡牌间可以打出许多不可思议的配合. 炉石传说的战斗大部分由随从来完成. ...

  9. 【BZOJ5339】【TJOI2018】教科书般的亵渎

    [题目链接] 点击打开链接 [思路要点] 模拟题目中的过程,我们本质上需要回答\(O(M^2)\)个形如求\(\sum_{i=L}^{R}i^{M+1}\)的询问. 拉格朗日插值即可. 时间复杂度\( ...

最新文章

  1. Linux Tensorflow2.0安装
  2. 动态规划算法--矩形最小路径和
  3. 技术团队,你欠了一屁股债你造吗?
  4. 混合式app php怎么打包,如何实现混合 App Web 资源的打包与增量更新
  5. 用sqoop把hdfs数据存储到mysql报错,Job job_1566707990804_0002 failed with state FAILED due to: Tas k failed
  6. 后缀用什么打开_茅台酒瓶口的珠子有什么用,取出来能多倒一杯酒?打开方法教给你...
  7. python判断字符串,str函数isdigit、isdecimal、isnumeric的区别
  8. QStandardItemModel——数据模型
  9. 我从别人那里偷学的前端调试小技巧(浏览器篇)
  10. 在河北当中学老师用不用考计算机,想当教师没编制?两类教师不用考,直接进编制...
  11. Android系统启动-SystemServer下篇
  12. TextInput组件练习 - QQLogin界面
  13. 可综合的异步fifo设计(二)
  14. window.print react+antd 分页打印 去掉页眉页脚
  15. java8时间转换函数学习,教你脱离jdf转换的痛苦
  16. “某某某”was not declared in this scope?报错原因。
  17. 手机浏览器打不开php,php 判断是否是手机浏览器访问?
  18. 【线上直播ING】2016互联网金融应用发展半年报
  19. 安卓开发——升级compileSdkVersion、targetSdkVersion、buildToolsVersion、support包到最新(28)问题解决
  20. 高级运维工程师证书_高级运维工程师的具体职责说明

热门文章

  1. idea在mac版怎么配置svn_使用Mac自带svn搭建服务器,并使用idea进行连接
  2. node 使用 download-git-repo 下载 github 代码
  3. 教育培训行业如何在抖音快速获客、变现?
  4. python调用动态链接库windows_用win从python ctypes调用标准windows.dll的Segfault
  5. 趣谈网络协议笔记-零
  6. 解决Linux安装过程中不能安装Grub的问题
  7. fixing macOS Sierra fatal error: 'openssl/opensslv.h' or 'openssl/aes.h' file not found
  8. 针对深度学习(神经网络)的AI框架调研
  9. AdaBoostClassifier实战
  10. Greenplum——升级的分布式PostgresSQL