首页 > 其他分享 >Educational DP Contest

Educational DP Contest

时间:2023-04-30 15:12:54浏览次数:49  
标签:Educational frac Contest int db cin DP tie dp

Educational DP Contest

ATcoder_link
夯实基础的好东西

I

记录一下此时第 i 个有多少概率小于等于 j 的就可以了。

#include<bits/stdc++.h>
using namespace std;
const int N=3005;
#define db double 
db dp[N][N];
int n;
db p[N];
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++)cin>>p[i];
    int ma=n/2;
    for(int i=0;i<=ma;i++) dp[0][i]=1;
    for(int i=1;i<=n;i++){
        db f=1-p[i],z=p[i];
        dp[i][0]=dp[i-1][0]*z;
        for(int j=1;j<=ma;j++) dp[i][j]=dp[i-1][j]*z+dp[i-1][j-1]*f;
    }
    printf("%.10lf",dp[n][ma]);
    return 0;
}

J

期望的经典题型。
首先几个盘子是等价的设 \(1,2,3\) 分别有 \(i,j,k\) 个。
则有 \(dp_{i,j,k}=1+dp_{i,j,k}*\frac{n-i-j-k}{n}+dp_{i-1,j,k}*\frac{i}{n}+dp_{i+1,j-1,k}*\frac{j}{n}+dp_{i,j+1,k-1}*\frac{k}{n}\)
简单化一下式子 \(n*dp_{i,j,k}=n+dp_{i,j,k}*(n-i-j-k)+dp_{i-1,j,k}*i+dp_{i+1,j-1,k}*j+dp_{i,j+1,k-1}*k\)
这傻逼练 latex 呢是吧 \((i+j+k)*dp_{i,j,k}=n+dp_{i-1,j,k}*i+dp_{i+1,j-1,k}*j+dp_{i,j+1,k-1}*k\)
\(dp_{i,j,k}=\frac{n+dp_{i-1,j,k}*i+dp_{i+1,j-1,k}*j+dp_{i,j+1,k-1}*k}{i+j+k}\)

然后注意下转移顺序就可以了喵。感觉有助于理解期望。
可能比较抽象:期望是转移走的概率,就是每个可能性的期望*概率,所以要从简单向复杂的推,从复杂的往简单的推应该能做但是式子未免太抽象了。反过来是好的!

//#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
const int N=305;
#define db double
db dp[N][N][N];
int n;
int cnt[5];
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        int tmp;
        cin>>tmp;
        cnt[tmp]++;
    }
    for(int k=0;k<=n;k++){
        for(int j=0;j<=n;j++)
        for(int i=0;i<=n;i++){
            if(i||j||k){
                if(i)dp[i][j][k]+=dp[i-1][j][k]*i;
                if(j)dp[i][j][k]+=dp[i+1][j-1][k]*j;
                if(k)dp[i][j][k]+=dp[i][j+1][k-1]*k;
                (dp[i][j][k]+=n)/=(i+j+k);
            }
        }
    }
    cout<<dp[cnt[1]][cnt[2]][cnt[3]];
    return 0;
}

K

经典博弈题,如果一个点能到达必胜状态它就是必胜的。

//#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
int f[100005];
int a[105];
int n,k;
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>n>>k;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=k;i++){
        for(int j=1;j<=n;j++)
        f[i]|=((i-a[j]>=0)&&(!f[i-a[j]]));
    }
    puts(f[k]?"First":"Second");
    return 0;
}

标签:Educational,frac,Contest,int,db,cin,DP,tie,dp
From: https://www.cnblogs.com/Artemis-lx/p/17365290.html

相关文章

  • 【dp的二分优化】NO300 最长递增子序列
    【dp的二分优化】300.最长递增子序列给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。示例1:输入:nums=[10,9,2,5,3,7,101,18]......
  • android中的像素单位dp、px、pt、s…
    pixels(设备独立像素).不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA推荐使用这个,不依赖像素。px:pixels(像素).不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。pt:point,是一个标准的长度单位,1pt=1/72英寸,用于......
  • 常见dp问题
    dp的引入动态规划(简称dp),是指把一个问题分解为若干个子问题,通过局部最优解得到全局最优的一种算法策略或者说一种思想方法.简单来讲,就是用一个数组表示我们要求的问题的答案,如果知道前一个问题的答案,就可以推出后一个问题的答案dp有以下几个常见的概念:状态:......
  • Python+UDP+Threading
    Python+UDP+Threading近期用pythonsocket使用TCP协议做了一个小型的数据收发服务器,后来由于在实际场景中使用时,出现网络不佳导致出现错误的情况,改成了使用UDP协议重做了一版,总体效果变好了。下面是通用代码,实际使用时在这基础上进行修改即可。#-*-coding:utf-8-*-import......
  • 计数dp
    CODEFESTIVAL2016Final\(n,m\)很小,可以设很暴力的状态发现我每次就是一条路径然后回到\(1\)所在的强连通分量,不关心我现在在哪个点,所以设\(f_{i,j,k}\)表示现在走了\(i\)步,\(1\)所在的强连通分量里面有\(j\)个点,现在走了\(k\)个点还没有回到强连通分量里面转移......
  • WordPress extended XML-RPC MetaWeblog API
    XML-RPCMetaWeblogAPI«WordPressCodexWordPress.orgWordPress.orgPluginsThemesPatternsLearnSupportDocumentationForumsNewsAboutGetInvolvedFivefortheFutureShowcaseMobileHostingOpenverseGetWordPressSearch......
  • Codeforces 1804H - Code Lock(状压 dp)
    对于一种排列方案,答案显然等于相邻字符在环上对应的劣弧长度之和。然后其实你可能会想到很多状压/折半搜索方法,包括但不限于枚举一半的信息然后折半搜后一半,但稍加思考会发现这些方案都避不开记录元素之间的相对顺序,而但凡涉及到这一点,复杂度都是阶乘起步。因此我们只能另辟蹊......
  • Codeforces 1799H - Tree Cutting(树形 dp)
    思考的时候一直卡在不会在低于\(O(n)\)的时间内储存一个连通块的\(siz\)有关的信息,看了洛谷题解之后才发现我真是个小丑。树形DP。对于一条我们需要操作的边\((i,fa_i)\),我们将其分为保留子树和删除子树两种类型,对于删除子树,我们在判定其是否合法时候改为判定删除的连通块......
  • wordpress插件:代码高亮显示并配置样式(SyntaxHighlighter Evolved 3.6.2 / wordpress
    一,安装插件:SyntaxHighlighterEvolved点击插件->安装插件->输入:SyntaxHighlighter进行搜索结果显示后,找到并进行安装,如图:安装第一个安装后的效果:二,安装插件后调整样式(行高):先找到样式文件路径,当前如下:/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/......
  • [Linux]raspbian安装xrdp(远程桌面)
    1.首先换源:输入以下命令sudosed-i"s@http://deb.debian.org@https://mirrors.163.com@g"/etc/apt/sources.list2.update是更新软件列表,upgrade是更新软件。这两个命令一般是一起使用的。3.需要在Debian系统中安装xrdp,xrdpisadaemonthatsupportsMicrosoft'sRemoteD......