[NOI赛前训练]——专项测试3·数学

由于并不想写T1和T2的题解……所有只有T3的题解了。

T3

  由于内部题就只写题解了。

  

  好吧,我是一点都不想写……

  说一下这zz题解哪里写错了吧……

  ……不想写……

  就说一个吧……

  $n-\frac{k-i}{2}$应该是$\frac{k-i}{2}$。

  好累啊,完全不想写题解,有空再说吧。

 1 #include "bits/stdc++.h"
 2
 3 using namespace std;
 4
 5 const int N=4e2+10;
 6
 7 double f[N][N],p[N][N],C[N][N],mi[N][N];
 8
 9 int n,num[N][N];
10 char s[N];
11
12 inline void init(){
13     int i,j,k;
14     for (C[0][0]=i=1;i<N;++i)
15         for (C[i][0]=j=1;j<=i;++j)
16             C[i][j]=C[i-1][j]+C[i-1][j-1];
17     for (i=1;i<=n;++i)
18         for (j=i,k=0;j<=n;++j){
19             if (s[j]==‘.‘) ++k;
20             num[i][j]=k;
21         }
22 }
23
24 inline void dp(){
25     if (!num[1][n]){
26         puts("0.000000");return ;
27     }
28     register int i,j,k,l;
29     for (i=1;i<=n;++i) if(s[i]==‘.‘)
30         p[i][i]=1.0;
31     for (l=2;l<=(n>>1);++l) {
32         for (i=1;i<=l;++i)
33             for (mi[i][0]=1,k=1;k<=l;++k)
34                  mi[i][k]=mi[i][k-1]*i/l;
35         for (i=1,j=l;i<=n;++i,++j) {
36             f[i][j]=p[i][j]=0.0;
37             if(s[j]==‘.‘){
38                 for (k=i;k<j;++k) if(s[k]==‘.‘){
39                     int lk=num[i][k-1],rk=num[k+1][j-1];
40                     double now=C[lk+rk][lk]*
41                                mi[(k-i+1)][lk+1]*
42                                mi[(j-k)][rk]*
43                                p[i][k]*p[k+1][j];
44                     p[i][j]+=now;
45                     f[i][j]+=now*(f[i][k]+f[k+1][j]+(k-i)/2.0);
46                 }
47                 if (num[i][j-1]==0)p[i][j]=1.0;
48                 f[i][j]/=p[i][j];
49             }
50         }
51     }
52     double ans=0.0;
53     for (i=1;i<=n/2;++i)
54         ans+=f[i][i+n/2-1]*p[i][i+n/2-1];
55     ans+=(n/2-1)/2.0;
56     printf("%.6f\n",ans);
57 }
58
59 int main(){
60     int T;
61     scanf("%d",&T);
62     while (T--) {
63         scanf("%s",s+1);
64         n=strlen(s+1);
65         for (int i=n+1;i<=(n<<1);++i)
66             s[i]=s[i-n];
67         n<<=1;
68         init();
69         dp();
70     }
71 }

T3

原文地址:https://www.cnblogs.com/Troywar/p/8886222.html

时间: 2024-10-29 19:12:39

[NOI赛前训练]——专项测试3·数学的相关文章

【NOI赛前训练】——专项测试1&#183;网络流

T1: 题目大意: 传送门 给一个长度为$n(n<=200)$的数列$h$,再给$m$个可以无限使用的操作,第$i$个操作为给长度为花费$c_i$的价值给长度为$l_i$的数列子序列+1或-1,求将数列变为不下降数列的最小花费. 题解: 第一部分(上下界最小费用可行流): 设$h_0=-inf,h_{n+1}=inf$,令$a$为$h$的差分数组,即$a_i=h_{i}-h_{i-1}$.考虑当对于区间$[l,r]$操作时(比如+1),相当于$a_{r+1}$减少1,$a_{l}$增加1.若将$

Ubuntu14.04+caffe+cuda7.5 环境搭建以及MNIST数据集的训练与测试

Ubuntu14.04+caffe+cuda 环境搭建以及MNIST数据集的训练与测试 一.ubuntu14.04的安装: ubuntu的安装是一件十分简单的事情,这里给出一个参考教程: http://jingyan.baidu.com/article/76a7e409bea83efc3b6e1507.html 二.cuda的安装: 1.首先下载nvidia cuda的仓库安装包(我的是ubuntu 14.04 64位,所以下载的是ubuntu14.04的安装包,如果你是32位的可以参看具体的地

加州理工学院公开课:机器学习与数据挖掘_训练与测试(第五课)

课程简介: 本视频为机器学习系列课程第5章.主要定量研究训练与测试之间的关系,并引入学习模型中的一个重要概念--断点.课程深入浅出,从正射线.正区间和凸集三个具体例子入手,寻找突破点,从而得出训练集与测试集的关系. 课程大纲(Outline): 1.从训练到测试(From Training to Testing) 2.举例说明(Illustrative Examples ) 3.关键概念---- 断点(Key Notion --- Break Point ) 4.难题(Puzzle) 1.从训练

Caffe上用SSD训练和测试自己的数据

    学习caffe第一天,用SSD上上手. 我的根目录$caffe_root为/home/gpu/ljy/caffe 一.运行SSD示例代码 1.到https://github.com/weiliu89/caffe.git下载caffe-ssd代码,是一个caffe文件夹 2.从已经配置好的caffe目录下拷贝一个Makefile.config放到$caffe_root下 3.在$caffe_root下打开命令行终端,输入以下命令 make -j8 make py make test -j8

不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN

在 /home/your_name/TensorFlow/DCGAN/ 下新建文件 train.py,同时新建文件夹 logs 和文件夹 samples,前者用来保存训练过程中的日志和模型,后者用来保存训练过程中采样器的采样图片,在 train.py 中输入如下代码: # -*- coding: utf-8 -*- import tensorflow as tf import os from read_data import * from utils import * from ops impo

【金阳光测试】KK公益讲座第63期-5月30号(周六晚八点) 分享主题: IOS专项测试基础

[金阳光测试]KK公益讲座第63期-5月30号(周六晚八点)分享主题: IOS专项测试基础听课地点:http://www.chuanke.com/1983382-110713.html主讲:小白老师老师简介:前风行网.腾讯测试,现为一流互联网公司任职高级开发测试时间:5月30号 晚上8点开始

使用CNN(convolutional neural nets)检测脸部关键点教程(二):浅层网络训练和测试

第三部分 第一个模型:一个隐层结构的传统神经网络 这一部分让我们从代码开始: # add to kfkd.py from lasagne import layers from lasagne.updates import nesterov_momentum from nolearn.lasagne import NeuralNet net1 = NeuralNet( layers=[ # three layers: one hidden layer ('input', layers.InputL

windows下的cafee训练和测试mnist数据集

一.mnist数据集 mnist是一个手写数字数据库,由Google实验室的Corinna Cortes和纽约大学柯朗研究院的Yann LeCun等人建立,它有60000个训练样本集和10000个测试样本集.mnist数据库官方网址为:http://yann.lecun.com/exdb/mnist/ .可直接下载四个解压文件,分别对应:训练集样本.训练集标签.测试集样本和测试集标签.解压缩之后发现,其是在一个文件中包含了所有图像. 二.caffe支持的数据格式:Lmdb和Leveldb 它们都

Android性能专项测试测试点指导(二)

Android性能专项测试测试点指导(一) 上一篇文章通过导图的方式介绍了性能专项的几个测试点,那么今天将会详细阐述下. 内存: 内存泄漏: 老生常谈的最多就是这货,这家伙的测试方法其实是最简单也是最难的,为什么简单,因为你要定位到路径,只需要重复操作即可,比如你怀疑播放器泄漏了,重复进入退出N次,那么就可以确定是播放器出问题了,可以提单了:说难,你需要进一步分析到底是哪里泄漏了,通过MAT工具去对比,去分析定位到类,那就需要精力和时间了,通常还吃力不讨好-最近,出现了这样一个工具LeakCan