2018年8月16日暑假训练日记

news/2024/10/22 16:49:54/

  宾馆租期到了,早上打理了一下宿舍的事儿。

  下午很难受的暴零了,大佬做出来个区间dp,我现学了期望dp,然后写了个期望dp超时了,要是m变成原来的一半就过了,正好卡死了,然后搞了一发假dp,还是不是很理解区间dp,所以失败了。

#include<iostream>

#include<cstring>

#include<cmath>

#include<cstdio>

#include<algorithm>

#define mo 1000000007

using namespace std;

long long a[1010];

long long b[1010];

long long p[1010];

long long ip[1010];

long long l[1010][1010];

long long ans[1010];

long long qpow(long long x,long long y){

    long long ans=1;

    long long k=x;

    while(y){

        if(y&1)ans=ans*k%mo;

        k=k*k%mo;

        y>>=1;

    }

    return (ans+mo)%mo;

}

void get(){

    long long i;

    a[0]=1;

    b[0]=1;

    a[1]=1;

    b[1]=1;

    for (i=2;i<1010;i++){

        a[i]=((a[i-1]*i)%mo+mo)%mo;

        b[i]=(qpow(a[i],mo-2)+mo)%mo;

    }

}

long long zuhe(long long n,long long m){

    if (n<m||m<0) return 0;

    return  a[n]*b[m]%mo*b[n-m]%mo;

}

int main(){

    long long n,m;

    long long i,j,k;

    get();

    while (scanf("%lld%lld",&n,&m)!=EOF){

        long long temp=qpow(100,mo-2);

        for (i=1;i<=n;i++){

            scanf("%lld",&p[i]);

            p[i]=p[i]*temp%mo;

            for (j=1;j<=m-1;j++){

                l[i][j]=(l[i-1][j]+1)%mo;

                for (k=1;k<=j-1;k++){

                    l[i][j]=(l[i][j]+zuhe(j,k)*l[i-1][k]%mo)%mo;

                }

                l[i][j]=l[i][j]*p[i]%mo;

            }

            long long temp=1;

            for (j=1;j<=m-1;j++){

                temp=(temp+zuhe(m,j)*l[i-1][j]%mo)%mo;

            }

            ans[i]=(ans[i-1]+p[i]*temp%mo)%mo;

        }

        printf("%lld\n",(ans[n]+mo)%mo);

    }

}

  而正解相当于对区间的一个枚举,对每个区间为全1的情况进行了一个概率枚举,就相当于里面全都为1,两头为0的情况,一开始有点这个想法,但总觉的这样会有重复,这个操作可有够厉害的。


http://www.ppmy.cn/news/208998.html

相关文章

统计fasta序列条数

1.统计大于号开始的行数或seqkit 工具 # 通过搜索>的数量 grep -c ^> myFasta.fasta 1397492 #seqkit统计提取&#xff0c;速度也是很快的 seqkit stats t.fa -T | grep -v file | cut -f 4 1397492 # 统计 1-100bp 范围长的序列数 cat t.fa | seqkit seq -m 1 -M 100 | …

linux系统tcl电视刷机包,【欢视商店】TCL电视RT95系列升级包与刷机包

原标题:【欢视商店】TCL电视RT95系列升级包与刷机包 以下为系列升级包与刷机包下载,提醒:原则上TCL不负责用户个人更改软件后的行为,所以刷机请谨慎!有需要的用户可以选择性下载使用。 首先小编先跟大家介绍一下固件升级方法及注意事项: 1)将获取的版本压缩包(解压)拷贝到F…

QUAST:评估基因组组装效果

欢迎关注"生信修炼手册"&#xff01; 对于不同kmer或者不同软件的基因组组装结果&#xff0c;我们通常会通过N50等指标来进行评估。 对于一个组装出来的序列&#xff0c;不论是contig还是scaffold, 首先将各个序列根据长度从大到小排序&#xff0c;然后从第一个序列开…

【Cadence Virtuoso】番外:如何根据仿真获取不同工艺库的MOS参数

前言 本博文为个人在学习Cadence Virtuoso时的记录&#xff0c;巩固自己学习的同时&#xff0c;也给其他初学者一些参考&#xff0c;学习过程中使用到的软件为Cadence IC617运行在CentOS7系统下&#xff0c;参考的书籍为Razavi的《模拟CMOS集成电路设计》。 为了后续各种电路…

rol 循环左移 计算_指令ROL reg/mem, 1表示循环左移,该指令执行后最高位移至( )中,同时最高位移至( )中。_学小易找答案...

【填空题】I/O 能够实现独立变址的主要原因:8086外部引脚设计了 引脚 【填空题】汇编语言指令中DEC是( )指令;指令NEG是( )指令。 【简答题】图灵机数学模型是什么? (8.0分) 【填空题】汇编语言指令SAR表示非循环移位中的( )功能。 【填空题】汇编语言指令( )表示循环移位中的…

Java(等级划分)

import java.util.Scanner;public class next {public static void main(String[] args){//声明部分int score;String level;Scanner sc new Scanner(System.in);//输入部分System.out.print("score ");score sc.nextInt();//处理部分level " ";if (sc…

htc d826 android 6,HTC 826官方ruu固件rom包_HTC Desire 826刷机包和升级包

今天看到论坛里已经有机友分享过HTC Desire 826的固件包了,也就是大家常说ruu包,现在咱们的这个手机多数是通过ruu包来进行升级的,没有什么太复杂的,今天在这里先分享的卡刷格式的ruu包,因为线刷的ruu包还没出来,等以后出来了再给大家分享出来,在这里会一块儿更新的,不…

linux系统tcl电视刷机包,tcl电视刷机包tcl电视升级包系统修复tcl电视强刷包

本帖最后由 dsfsdfs 于 2015-9-7 20:59 编辑 不知道为什么我之前发的帖子不能编辑自己的帖子,导致没法把大家要的固件发布出来,现在建立一个新帖子来发大家留言要的固件把, 老规矩: 大家不论谁想要TCL固件直接可以留言,我会每个礼拜更新一次大家所需要的固件,留言后请记住…