总的来说呢,这道题真正难处理的地方不过是求

那么我们就考虑怎么求这个东西

其实有很多种做法,但是最简单的还是直接推式子

也就是Fizzmy的这种方法,最后直接就可以每次  的复杂度解决这个问题了

代码如下

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int dp[105],inv[105],c[105][105],fac[105];
int now,t,m,a[105],k,ans;
long long n;
int moc(int x)
{if(x>=mod) return x-mod;if(x<0) return x+mod;return x;
}
int fast(int x,int y)
{int ans=1;while(y){if(y&1) ans=1ll*ans*x%mod;y>>=1;x=1ll*x*x%mod;}return ans;
}
int calc(int x)
{if(x==0) return now;if(dp[x]!=-1) return dp[x];int ans=moc(fast(now+1,x+1)-1);for(int i=2;i<=x+1;i++){ans=moc(ans-1ll*c[x+1][i]*calc(x+1-i)%mod);}ans=1ll*ans*inv[x+1]%mod;return dp[x]=ans;
}
int main()
{cin>>t;for(int i=0;i<=100;i++){c[i][0]=1;for(int j=1;j<=i;j++){c[i][j]=moc(c[i-1][j-1]+c[i-1][j]);}}inv[0]=inv[1]=1;for(int i=2;i<=100;i++)inv[i]=1ll*inv[mod%i]*(mod-mod/i)%mod;while(t--){scanf("%lld%d",&n,&m);for(int i=1;i<=m;i++)scanf("%d",&a[i]);sort(a+1,a+m+1);ans=0;k=m+1;now=n;for (int i=1;i<=m;i++){memset(dp,-1,sizeof(dp));ans=moc(ans+calc(k));for(int j=i;j<=m;j++) ans=moc(ans-fast((a[j]-n+now)%mod,k));now-=a[i]-a[i-1];}memset(dp,-1,sizeof(dp));ans=moc(ans+calc(k));printf("%d\n",ans);}return 0;
}

[TJOI2018]教科书般的亵渎相关推荐

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

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

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

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

  3. bzoj 5339 [TJOI2018]教科书般的亵渎 拉格朗日插值

    题面 题目传送门 解法 可以发现,题目可以转化成求若干个形如\(\sum_{i=1}^ni^k\)的东西 这个东西可以拉格朗日插值 大概讲一下拉格朗日插值是个什么东西: 显然,\(\sum_{i=1} ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. hdu1518 bjfuoj1042 zoj1909 poj2362 经典的搜索加剪枝
  2. 项目实践中的一些性能优化指南
  3. JSP 自定义标签介绍
  4. python基本语法语句-python学习笔记:基本语法
  5. MongoDB之compact操作详解
  6. 鸟哥的Linux私房菜(基础篇)- 第二十五章、 Linux 备份策略
  7. 地铁看java书女生_地铁上背单词的女孩
  8. 无障碍使用,Windows 10 辅助功能大更新
  9. 超客营销以社交化重塑销售过程管理
  10. Python数据结构与算法(3.5)——双端队列
  11. 程序员风格的修真小说 —— 《码师》
  12. 编程c语言黑与白,C语言黑与白问题
  13. 2012年8月24日
  14. js 根据公历日期 算出农历_利用Javascript获取当前日期的农历日期
  15. java bidi_Java Bidi isRightToLeft()用法及代码示例
  16. STM32掌机教程7,演奏音乐
  17. VC 显示 隐藏 工具栏 状态栏
  18. 论文解读:Spelling Error Correction with Soft-Masked BERT
  19. 每日微信晨报早报新闻获取,哪里来的?
  20. HTTP Headers 之 Origin跨域访问一定要加上这个header

热门文章

  1. VB.Net教程图书目录
  2. %3cul%3e标签 php_php中lt
  3. 快压软件的彻底删除方法
  4. 通过python爬虫程序爬取未来几日的天气状况
  5. CruiseControl入门简介
  6. Exchange2010重装注意事项
  7. 图像拼接算法总结(一)
  8. GRE over IPSec 主备双链路冗余配置
  9. 今日头条导航栏动画选中+recyclerview
  10. android tv 8 安装国内app,不花钱解决 Android TV 原生系统国内APP不显示图标