一、题目

点此看题

二、解法

这个样例我佛了,第二个等差数列,第三个等等差数列,没把我考试的错误测出来。

直接讲正解,设dp[i][j]dp[i][j]dp[i][j]为行星iii到jjj,把他们撞完的期望距离和,理解一下这个状态,首先一定会剩下一个恒星,记第iii行星左边的恒星是iii,这样无论怎么撞都不会撞出恒星[i,j+1][i,j+1][i,j+1]

考虑转移,我们严格按照题目要求进行,枚举当前状态下第一个去撞击的行星,枚举他往左边撞还是右边撞,这样就产生了2(j−i+1)2(j-i+1)2(j−i+1)种等概率的情况,这是左边的情况:
dp[i][j]=dp[i][k−1]+dp[k+1][j]+y[k]−E[i][k−1]dp[i][j]=dp[i][k-1]+dp[k+1][j]+y[k]-E[i][k-1]dp[i][j]=dp[i][k−1]+dp[k+1][j]+y[k]−E[i][k−1]这是右边的情况:dp[i][j]=dp[i][k−1]+dp[k+1][j]+E[k+1][j]−y[k]dp[i][j]=dp[i][k-1]+dp[k+1][j]+E[k+1][j]-y[k]dp[i][j]=dp[i][k−1]+dp[k+1][j]+E[k+1][j]−y[k]其中E[i][j]E[i][j]E[i][j]是[i,j][i,j][i,j]中期望剩下来的位置,转移(左还是右,等概率):
E[i][j]=E[i][k−1]+E[k+1][j]2(j−i+1)E[i][j]=\frac{E[i][k-1]+E[k+1][j]}{2(j-i+1)}E[i][j]=2(j−i+1)E[i][k−1]+E[k+1][j]​注意E[i+1][i]E[i+1][i]E[i+1][i]是有意义的,他表示第i+1i+1i+1个恒星的位置,暴力做时间复杂度是O(n3)O(n^3)O(n3)的,观察发现好像可以用前缀和之类的东西优化,所以时间复杂度O(n2)O(n^2)O(n2)

还有另一种思路,没有实现,但是贴一个讲解
贴一个巨佬的博客,好像讲了这种做法:https://www.cnblogs.com/Arextre/p/13775589.html

#include <cstdio>
const int M = 3005;
const int MOD = 998244353;
#define int long long
int read()
{int x=0,f=1;char c;while((c=getchar())<'0' || c>'9') if(c=='-') f=-1;while(c>='0' && c<='9') {x=(x<<3)+(x<<1)+(c^48);c=getchar();}return x*f;
}
int n,ans,inv[M],x[M],y[M],py[M],dp[M][M],E[M][M];
int s1[M][M],s2[M][M],pre[M][M],suf[M][M];
signed main()
{//freopen("3.in","r",stdin);//freopen("stars.out","w",stdout);n=read();inv[0]=inv[1]=1;for(int i=2;i<=n+1;i++)inv[i]=(MOD-MOD/i)*inv[MOD%i]%MOD;for(int i=1;i<=n;i++){x[i]=read();y[i]=read();py[i]=(py[i-1]+y[i])%MOD; }x[n+1]=read();E[1][0]=x[1];for(int i=1;i<=n;i++)E[i+1][i]=x[i+1];for(int i=n;i>=1;i--)for(int j=i;j<=n;j++){/*for(int k=i;k<=j;k++){E[i][j]=(E[i][j]+(E[i][k-1]+E[k+1][j])*inv[2])%MOD;dp[i][j]=(dp[i][j]+2*(dp[i][k-1]+dp[k+1][j]))%MOD;dp[i][j]=(dp[i][j]+y[k]-E[i][k-1])%MOD;dp[i][j]=(dp[i][j]+E[k+1][j]-y[k])%MOD;}E[i][j]=E[i][j]*inv[j-i+1]%MOD;dp[i][j]=dp[i][j]*inv[j-i+1]%MOD*inv[2]%MOD;*/pre[i][j]=(pre[i][j-1]+E[i][j-1])%MOD;suf[j][i]=(suf[j][i+1]+E[i+1][j])%MOD;E[i][j]=(pre[i][j]+suf[j][i])*inv[j-i+1]%MOD*inv[2]%MOD;dp[i][j]=(dp[i][j]+2*(s1[i][j-1]+s2[j][i+1]))%MOD;dp[i][j]=(dp[i][j]+(py[j]-py[i-1])-pre[i][j])%MOD;dp[i][j]=(dp[i][j]+suf[j][i]-(py[j]-py[i-1]))%MOD;dp[i][j]=dp[i][j]*inv[j-i+1]%MOD*inv[2]%MOD;s1[i][j]=(s1[i][j-1]+dp[i][j])%MOD;s2[j][i]=(s2[j][i+1]+dp[i][j])%MOD; }printf("%lld\n",(dp[1][n]+MOD)%MOD);
}

[unknown OJ] 客星璀璨之夜相关推荐

  1. HDU6848改编题(弱化)——客星璀璨之夜(stars)

    「 客星璀璨之夜 」(stars) " 虽然不清楚是不是那两人的力量 在那个风暴肆虐的夜晚,的确有一瞬 真的在那一瞬间,在云破天开的时候 透过空隙中看到的璀璨星空,不知为何倒映眼中不能忘怀 ...

  2. [unknown OJ] 养花

    一.题目 点此看题 二.解法 可以按照kkk分块,假设界限是SSS,假设值域是VVV 对于不足SSS的情况,可以暴力处理,建出线段树的时间花费是O(nS)O(nS)O(nS)的,查询是O(qlog⁡n ...

  3. [unknown OJ] ZZH的旅行

    一.题目 点此看题 二.解法 设 d p [ i ] dp[i] dp[i] 为 i i i 点的最大有趣度,转移很显然啊: d p [ i ] = d p [ j ] + ( a [ i ] + d ...

  4. [unknown OJ] ZZH与计数

    一.题目 点此看题 二.解法 这题我一开始是想的设 d p [ i ] dp[i] dp[i] 为数 i i i 有多少个的期望,然后跑矩阵乘法可以做到 O ( 2 3 n log ⁡ m ) O(2 ...

  5. [unknown OJ] ZZH与背包

    一.题目 点此看题 二.解法 一看就是折半搜索,但是左边要排序右边要二分的,O(220×qlog⁡)O(2^{20}\times q\log)O(220×qlog) 这种题往往就是卡掉排序的复杂度,我 ...

  6. 2020.10月做题记录

    PS:本博客仅选择了一些作者认为有必要记录的题目进行记录. week -1 2020.09.28-2020.10.4 军训+国庆放假-就这样又废了一周- 2020.10.04 回来第一天完全没有状态- ...

  7. 诗与远方:无题(五十九)

    淡茶品茗香溢飘 轻雾腾云杯渐空 天上鹄飞远志向 井底蛙鸣度晚年 浅色无味续添水 清风悄然潮涌起 海生星光璀璨闪 夜寂心事终将灭

  8. 百度云此链接内容可能涉及侵权,分享的文件已经被取消等屏蔽问题的解决方法

    朋友刚分享给你的百度云链接,分享的文件存在没有问题,却出现了下面两种情况 情况一:提示[此链接内容可能涉及侵权.色情.反动.低俗等信息,无法访问] 解决: 方法一:将分享的文件名称进行修改. 方法二: ...

  9. 计算机系迎新晚会策划,学院迎新晚会活动方案

    学院迎新晚会活动方案 第一部分 晚会概况 [晚会组织] 这次迎新晚会由系团总支学生会组织策划.我们计算机系学生会历来是一支有着极强凝聚力的学生队伍.工作能力突出,成功的组织了许多活动,特别是去年举行的 ...

最新文章

  1. KGmailNotifier-Gmail 邮件关照轨范
  2. 黄聪:C# 开发Chrome内核浏览器(WebKit.net)
  3. shell逐行读取每一列
  4. JMS--Queue实战
  5. mongodb分布式集群搭建手记
  6. 树莓派控制温湿度传感器DHT11
  7. 全议程公布丨八大理由让你畅游2021数据技术嘉年华
  8. 上海查处一批涉“樱桃直播”传播淫秽物品牟利案女主播 已有14人获刑
  9. 《腾讯Android自动化测试实战》— Android 书籍
  10. 让HTML标签title属性值换行
  11. 容智RPA可以在医疗哪些业务上降本增效
  12. java date 默认值_Java程序将java.util.Date转换为ZonedDateTime
  13. 求职必备素材:个人简历Word模板
  14. 企业网的规划与设计(eNSP)
  15. Qt QAbstractSocket::isValid()
  16. 基于长短期记忆神经网络和卷积神经网络(convLSTM)的股票涨跌预测模型(附代码)
  17. STM32+二维码扫描模块(QR_Scaner)实现门禁系统
  18. 米家扫地机器人尘盒怎么取_米家扫地机器人怎么清理灰尘盒_米家扫地机器人怎么倒出垃圾...
  19. 用python扑克随机发牌_Python小应用之发扑克牌
  20. mysql 1033 frm_修复mysqldump Incorrect information in file frm (1033)

热门文章

  1. python poisson图像融合制作CSDN博客头像
  2. 《手把手教你学嵌入式无人机》——入门航模遥控器使用(MC6C)
  3. Vue学习笔记三(组件间通信)
  4. 为什么强烈推荐 Java 程序员使用 Google Guava 编程!
  5. 月薪20k+的Android面试都问些什么?终获offer
  6. arcgis 空间交集 计算_ArcGIS叠置分析之相交分析
  7. php随机缩略图,实现随机缩略图的简单思路和phpcms随机缩略图两种方法
  8. element upload预览_element-ui上传组件图片默认不上传显示图片缩略图
  9. w3c搬运CSS念念碎
  10. 小寒也会写程序(一)