首页 > 其他分享 >CW 模拟赛 T2.神力

CW 模拟赛 T2.神力

时间:2024-10-21 19:43:24浏览次数:1  
标签:cnt 神力 int text T2 考虑 CW dp MOD

题面

之前别的学校模拟赛的题吧, 显然是没有上 oj 的
挂个 pdf
题面下载

算法

概率类型的题目, 这一题看着像概率 dp, 是不会的

先按照一般的思路, 从前往后考虑操作
设 \(f_{i, j}\) 为考虑了前 \(i\) 步操作, 当前位置为 \(j\) 的概率

考虑状态转移
对于操作的每一个位置, 显然其会被之前的位置所影响, 也显然可以影响后面的位置

\[f_{i, j} = \sum \left[f_{i - 1, j} \times P_{dont \text{ } move} + f_{i - 1, j - Move_i} \times \left(1 - P_{dont \text{ } move} \right)\right] \]

当然实现的时候最好使用刷表法

但是写出来之后是 \(\rm{WA} \text{ } 12pts\) 的, \(\rm{why}\)?
画表分析一下, 当一条路径重复经过了同一个点, 那么这个 dp 方程将会两次计算这种情况对这个点的贡献, 考虑去重

人类智慧发现, 倒推操作时, 即使现在重复经过了一个点, 也不会影响结果(事实上我不知道为什么)

于是完成

代码

#include <bits/stdc++.h>
using namespace std;
#define int long long

const int N = 5005, MOD = 1e9 + 7;

int qpow(int x, int y)
{
    int cnt = 1;
    for (; y; y >>= 1)
    {
        if (y & 1)
            cnt = cnt * x % MOD;
        x = x * x % MOD;
    }
    return cnt;
}

int n, p, a[N], dp[N][N * 2], ans;

signed main()
{
    cin >> n >> p;
    p = p * qpow(100, MOD - 2) % MOD;
    int ip = (1 - p + MOD) % MOD;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    dp[0][n] = 1;
    for (int i = 1; i <= n; i++)
    {
        for (int j = n - i + 1; j <= n + i - 1; j++)
        {
            dp[i][j] = (dp[i][j] + p * dp[i - 1][j]) % MOD;
            dp[i][j + a[n - i + 1]] = (dp[i][j + a[n - i + 1]] + ip * dp[i - 1][j]) % MOD;
        }
        dp[i][n] = 1;
    }
    for (int i = 0; i <= 2 * n; i++)
        cout << dp[n][i] << " ";
    cout << "\n";
    return 0;
}

/*
5 83
1 -1 -1 1 1
*/

总结

dp 推不出来? 考虑换一下顺序

标签:cnt,神力,int,text,T2,考虑,CW,dp,MOD
From: https://www.cnblogs.com/YzaCsp/p/18489583

相关文章

  • AT2401C 功率放大器(PA)2.4g集成芯片 完全取代替代RFX2401C兼容软件硬件
    AT2401C功率放大器(PA)2.4g集成芯片完全取代替代RFX2401C兼容软件硬件AT2401C功率放大器(PA)射频前端集成芯片,它是一款面向Zigbee,无线传感网络以及其他2.4GHz频段无线系统的全集成射频功能的射频前端单芯片。AT2401C内部集成了功率放大器(PA),低噪声放大器(LNA),芯片收发开关控制......
  • CW 模拟赛 T2.迁跃
    题面似乎有原题,但是很偏挂个pdf题面下载算法一眼树形dp然而考场上没想出来很显然有一个式子令\(f_u\)表示从\(u\)进入子树,再通过迁越回到点\(u\)的最大价值则有\[f_u=\sum_{exist\text{}u\rightarrowv}^{(v,w)}\max(f_v+w-k,0)\]但是我们并......
  • Acwing 338 技术问题
    /*https://www.acwing.com/problem/content/340/给定两个整数a和b,求a和b之间的所有数字中0∼9的出现次数。例如,a=1024,b=1032,则a和b之间共有9个数如下:102410251026102710281029103010311032其中0出现10次,1出现10次,2出现7次,3出现3次等等......
  • acwing第二章算法模板
    17、单链表//head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点inthead,e[N],ne[N],idx;//初始化voidinit(){    head=-1;    idx=0;}//在链表头插入一个数avoidinsert(inta){    e[idx]=a,ne[idx]=......
  • acwing第三章算法模板
    29、树与图的存储树是一种特殊的图,与图的存储方式相同。对于无向图中的边ab,存储两条有向边a->b,b->a。因此我们可以只考虑有向图的存储。(1)邻接矩阵:g[a][b]存储边a->b(2)邻接表://对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单链表的头结点int......
  • “JsonConvert”同时存在于“Newtonsoft.Json.Net20, Version=3.5.0.0, Culture=neutr
    原因是两个dll冲突了。需要去掉一个。Newtonsoft.Json(也称为Json.NET)是一个流行的开源JSON框架,用于.NET,它以其高性能、易用性和广泛的功能而闻名。它支持丰富的数据操作和序列化属性设置,如自定义转换器、日期时间格式控制、命名策略等。Json.NET还提供了序列化特性,如JsonObjectA......
  • GDPC-CSA::CTF一轮web题目write up-T2 ez http
    首先来看题目先不鸟提示,进去页面逛逛,F12一下,看到如下内容回头来看提示,robots.txt是网页用来告知爬虫允许和禁止访问文件的君子协议,由题我们决定先打开/robots.txt查看一下爬虫被禁止访问哪些文件,其中说不定会有线索如果对robots.txt还不了解的可以看看这里在网站地址框输入......
  • SM2268XT2量产工具找到了,SM2268XT2量产工具下载,支持B58R闪存颗粒开卡,SM2268XT2开卡工
    前一阵买了一个固态硬盘,主控是SM2268XT2,闪存颗粒是B58R的,由于自己之前量产过SM2263XT主控,所以这次也想玩一下量产。找了半天,才发现这个主控目前还没有公开的SM2268XT2量产工具下载。就在快要放弃的时候,在网上查到量产部落发布了慧荣SM2268XT2主控支持YMTC_WDS闪存的量产工具,......
  • ZROI-21-CSP7连-DAY 7 T2
    题面挂个pdf题面下载算法有点像扫描线?容易想到离散化坐标点,那么对于离散化之后的坐标\(x\),粗略来看,其能分开区间的个数即为\(\displaystyle\sum_{i=1}^{n}\left[{l_i<x<R_i}\right]\)这个可以用类似于差分的方法解决,每次对于一个区间\(\left(l_i,r_i\r......
  • 题解:GZOI2024 D2T2 乒乓球
    考场上切了,但是比较神奇的题,应该是蓝/紫。Discription乒乓球\(\text{}\)时间限制:\(\bold{3}\)秒众所周知,一场乒乓球比赛共有两个玩家\(A\)和\(B\)参与,其中一场比赛由多局比赛组成,而每局比赛中又由多盘比赛组成。每盘比赛\(A\)或\(B\)只有一名选手获胜。当其中一名......