题解 \(by\;zj\varphi\)

概率与期望,考虑 \(\rm dp\)

设 \(dp_{i,j}\) 为消除 \(i~j\) 这一段行星的期望,转移:

枚举 \(k\) 为当前状态下第一个撞击的行星,分向左,向右。

\[\rm dp_{i,j}=\sum_{k=i}^jdp_{i,k-1}+dp_{k+1,i}+E_{k+1,j}-pos_k
\]
\[\rm dp_{i,j}=\sum_{k=i}^jdp_{i,k-1}+dp_{k+1,i}-E_{i,k-1}+pos_k
\]

\(\rm E_{i,j}\) 表示 \(\rm i->j\) 的期望位置,转移与 \(\rm dp\) 类似。

这样就可以 \(\mathcal O\rm (n^3)\),加个前缀和即可优化成 \(\mathcal O\rm(n^2)\)

Code
#include<bits/stdc++.h>
#define ri register signed
#define p(i) ++i
using namespace std;
namespace IO{
char buf[1<<21],*p1=buf,*p2=buf,OPUT[100];
#define gc() p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?(-1):*p1++;
template<typename T>inline void read(T &x) {
ri f=1;x=0;register char ch=gc();
while(!isdigit(ch)) {if (ch=='-') f=0;ch=gc();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+(ch^48);ch=gc();}
x=f?x:-x;
}
template<typename T>inline void print(T x,char t) {
if (x<0) putchar('-'),x=-x;
if (!x) return putchar('0'),(void)putchar(t);
ri cnt(0);
while(x) OPUT[p(cnt)]=x%10,x/=10;
for (ri i(cnt);i;--i) putchar(OPUT[i]^48);
return (void)putchar(t);
}
}
using IO::read;using IO::print;
namespace nanfeng{
#define int long long
#define FI FILE *IN
#define FO FILE *OUT
template<typename T>inline T cmax(T x,T y) {return x>y?x:y;}
template<typename T>inline T cmin(T x,T y) {return x>y?y:x;}
static const int N=3e3+7,MOD=998244353;
int dp[N][N],suf[N][N],pre[N][N],ex[N][N],a1[N][N],a2[N][N],inv[N],pa[N],n;
inline int main() {
//FI=freopen("nanfeng.in","r",stdin);
//FO=freopen("nanfeng.out","w",stdout);
read(n);
inv[1]=1;
ri al=(n<<1)+1;
for (ri i(2);i<=al;p(i)) inv[i]=(MOD-MOD/i)*inv[MOD%i]%MOD;
for (ri i(1),pla;i<=n;p(i)) {
read(ex[i][i-1]),read(pla);
pa[i]=(pa[i-1]+pla)%MOD;
}
read(ex[n+1][n]);
for (ri i(n);i;--i)
for (ri j(i);j<=n;p(j)) {
pre[i][j]=(pre[i][j-1]+ex[i][j-1])%MOD;
suf[j][i]=(suf[j][i+1]+ex[i+1][j])%MOD;
ex[i][j]=(pre[i][j]+suf[j][i])*inv[j-i+1]%MOD*inv[2]%MOD;
dp[i][j]=(dp[i][j]+2*(a1[i][j-1]+a2[j][i+1])%MOD)%MOD;
dp[i][j]=(dp[i][j]+pa[j]-pa[i-1]-pre[i][j])%MOD;
dp[i][j]=(dp[i][j]-pa[j]+pa[i-1]+suf[j][i])%MOD;
dp[i][j]=dp[i][j]*inv[j-i+1]%MOD*inv[2]%MOD;
a1[i][j]=(a1[i][j-1]+dp[i][j])%MOD;
a2[j][i]=(a2[j][i+1]+dp[i][j])%MOD;
}
print((dp[1][n]+MOD)%MOD,'\n');
return 0;
}
#undef int
}
int main() {return nanfeng::main();}

NOIP 模拟 $28\; \rm 客星璀璨之夜$的更多相关文章

  1. NOIP 模拟 $28\; \rm 割海成路之日$

    题解 \(by\;zj\varphi\) 用两个集合分别表示 \(1\) 边联通块,\(1,2\) 边联通块 . \(\rm son_x\) 表示当前节点通过 \(3\) 类边能到的 \(2\) 联通 ...

  2. NOIP 模拟 $28\; \rm 遗忘之祭仪$

    题解 \(by\;zj\varphi\) 直接贪心模拟即可,对于每个点,如果它未被覆盖,直接在这覆盖一次. 每个黑点只会被扫一次,所以总复杂度为 \(\mathcal O\rm (nm)\) Code ...

  3. Solution -「LOCAL」客星璀璨之夜

    \(\mathcal{Description}\)   OurOJ.   给定坐标轴上的 \(2n+1\) 个坐标 \(x_1,x_2,\cdots,x_{2n+1}\),其中偶数下标的位置是一个小球 ...

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

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

  5. NOIP模拟 1

    NOIP模拟1,到现在时间已经比较长了.. 那天是6.14,今天7.18了 //然鹅我看着最前边缺失的模拟1,还是终于忍不住把它补上,为了保持顺序2345重新发布了一遍.. #   用  户  名   ...

  6. 2021.5.22 noip模拟1

    这场考试考得很烂 连暴力都没打好 只拿了25分,,,,,,,,好好总结 T1序列 A. 序列 题目描述 HZ每周一都要举行升旗仪式,国旗班会站成一整列整齐的向前行进. 郭神作为摄像师想要选取其中一段照 ...

  7. NOIP模拟3

    期望得分:30+90+100=220 实际得分:30+0+10=40 T1智障错误:n*m是n行m列,硬是做成了m行n列 T2智障错误:读入三个数写了两个%d T3智障错误:数值相同不代表是同一个数 ...

  8. 7.22 NOIP模拟7

    又是炸掉的一次考试 T1.方程的解 本次考试最容易骗分的一道题,但是由于T2花的时间太多,我竟然连a+b=c都没判..暴力掉了40分. 首先a+b=c,只有一组解. 然后是a=1,b=1,答案是c-1 ...

  9. 20190725 NOIP模拟8

    今天起来就是虚的一批,然后7.15开始考试,整个前半个小时异常的困,然后一看题,T1一眼就看出了是KMP,但是完了,自己KMP的打法忘的一干二净,然后开始打T2,T2肝了一个tarjan点双就扔上去了 ...

随机推荐

  1. bugku本地包含

    重点:eval()函数有执行漏洞 函数本身作用,把字符串当成php代码计算. 所以自然想到,可以把我们的写好的php代码写入进去. 题目又暗示在本地,想到flag.php了,所以想办法把文件里面的内容 ...

  2. 家庭账本开发day09

    编写数据表格的编辑操作,大体思路和删除操作一样 点击按钮,弹出修改项目,从父窗口获取已有的值赋给 弹出的子窗口中相应的值,在子窗口中点击提交,ajax请求 servlet修改.成功后重载表格,或者up ...

  3. Spark RDD编程-大数据课设

    目录 一.实验目的 二.实验平台 三.实验内容.要求 1.pyspark交互式编程 2.编写独立应用程序实现数据去重 3.编写独立应用程序实现求平均值问题 四.实验过程 (一)pyspark交互式编程 ...

  4. SFC style CSS variable injection

    摘要 在单文件组件样式中支持使用组件状态驱动的 CSS 变量( CSS 自定义属性). 基础示例 <template> <div class="text"> ...

  5. centos7下安装、配置Nginx、设置Nginx开机自启动

    测试环境: [root@centos-linux ~]# cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core) [root@cento ...

  6. Laravel使用artisan快速实现表单的登陆注册

    1. 开发环境 macOS Mojave 10.14.6 XAMPP 5.6.38 Laravel 5.2 2. 在终端,先进入到项目根目录并执行执行命令 php artisan make:auth ...

  7. via浏览器和Alook浏览器插件安装

    via和Alook是Android和IOS上可以支持JS插件的浏览器,一些常用的插件可以在via-app.cn上找到.但总会有人会思考点击安装按钮的是怎样将JS脚本代码安装到浏览器的. 经过对页面代码 ...

  8. ASP.NET中<%=%>、<%%>、<%@%>、<%#%>的用法与区别

    1.<%= %> 里面放变量名,获取后台的变量值,直接输入变量到页面上,里面放的变量名,未经过encode eg: 后台: seession["ab"]=ab; 前台: ...

  9. linux 之awk 次数统计

    sort +awk+uniq 统计文件中出现次数 jps -v |grep jar|grep -v Jps|awk  'BEGIN{FS=".jar "} {print $1}'  ...

  10. 【动画消消乐】HTML+CSS 白云飘动效果 072

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...