虽然只是一场比较简单的比赛 但奈何我也比较弱啊....

T1 一道计算概率的题目

T SRM 04

描述

给个长度为 n 的数列,每次操作能将数列打乱(RandomShuffle),问在期望下需要多少次操作才能得到一个不降数列。

输入格式

第一行一个整数 n 表示数列长度

第二行 n 个整数  表示数列

输出格式

一个小数表示期望操作次数,四舍五入至 6 位小数输出

样例输入

2
5 2

样例输出

2.000000

数据范围与约定

这道题想了一下 发现n很小那么n这么小,原因竟然是。。最小答案随n增大而超指数级衰减?

所以我写了个没有重复元素的全排列就是答案了 当然还得特殊考虑一开始就是符合要求而不需要打乱的情况 然后四舍五入

我是这么写的printf("%.6lf",ans+1e-10); 因为啊%.6f 是输出六位,四舍六入,为了四舍五入就+eps

贴一波代码 233

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n;
int w[],sum[];
double ans=,mx;
bool f=;
int main()
{
n=read();
for(double i=n;i;i=i-) ans=ans*i;
for(int i=;i<=n;i++){
w[i]=read(); sum[w[i]]++;
if(w[i]<w[i-]) f=;
}
if(f){printf("%.6lf\n",1.0*); return ;}
for(int i=;i<=;i++){
if(sum[i]<=) continue;
mx=;
for(double k=;k<=sum[i];k=k+) mx=mx*k;
ans=ans/mx;
}
printf("%.6lf",ans+1e-);
return ;
}

T2

J SRM 04

背景&&描述

在一个似曾相识的春分的前一天,罚吹们组队参加了新岛老贼组织的ghost parade
    游行在一条大街上举行,出于反情侣的目的,新岛老贼做规划的时候使得中央的过道仅能容一人通过。
    大街上有n个扭曲的改改人从各自的位置出发,想要到自己选定好的位置进行传教活动。
    这本来是件小事,但是中国有一句古话,叫做一万个罚吹心中有一万部罚抄,所以如果俩改改人在路上相遇的话就会上演全武行..
    幸好新岛老贼在大街两端留了足够的空间,改改人们可以先走到两端,再一个个走到目标位置。
    大街长度为L,两端分别是,第i个改改人一开始在,想要走到
    显然肯定存在合法的方案使得全程不会有俩改改人在不是端点的地方相遇。
    新岛老贼想知道所有改改人移动长度总和的最小值,不然他就会把你的mz写死(

输入格式

多组数据。第一个整数T表示数组组数。

对于每组数据:

第一行俩整数n和L。

接下来有n行,每行俩整数,第i+1行的两个数分别表示

输出格式

对于每组数据输出一行一个整数,表示移动距离之和的最小值。

样例输入1

1
2 10
3 8
9 6

样例输出1

14

样例输入2

1
4 20
6 13
11 4
5 7
12 14

样例输出2

48

数据范围与约定

  • ,保证同组数据里,各不相同,各不相同。

样例解释1

第二个人走到右端,第一个人走到右端,第二个人走到自己的目的地,第一个人走到自己的目的地。

样例解释2

第3、1、2个人依次走到左端,第4、1、3、2个人依次走到目的地。

这道题以前写过题解hh

网络流题解

贪心题解

两个看一个就行了 不过贪心确实跑得比较快 原题是51nod的狭窄的通道 有兴趣做做哇 题目传送门

T3

M SRM 04

描述

给 n 个数 ,有 Q 个询问 [L,R],每次求出有多少二元组  同时满足  和 

输入格式

第一行两个整数 n 和 Q

第二行 n 个整数 

接下来 Q 行,每行代表一次询问,每行有两个整数为 L 和 R

输出格式

对于每次询问,依次输出其所得到的值

样例输入

3 2
3 2 1
1 2
1 3

样例输出

1
3

数据范围与约定

  • 有坑点,请仔细阅读题目

T3我是最后写的因为考虑到有坑点qwq 但是最后发现确实有坑点因为std错了.....最后重测才Ac的 也是还了个愿吧

这道题正解应该是树状数组求逆序数对 但是我不会哇 233 所以就n2暴力写了一波 还好没被卡

sum【i】【j】就是i这个数到j(可前可后)有多少个符合条件的数和他组成数对 这样就可以o(n2)预处理然后0(1)查询了

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
LL read(){
LL ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
LL n,q,x,y;
LL v[];
int sum[][],f[][];
int main()
{
n=read(); q=read();
for(int i=;i<=n;i++) v[i]=read();
for(int i=;i<=n;i++){
for(int j=i-;j;j--){
sum[i][j]=sum[i][j+];
if(v[j]>=v[i]) sum[i][j]++;
}
for(int j=i+;j<=n;j++){
sum[i][j]=sum[i][j-];
if(v[i]>=v[j]) sum[i][j]++;
}
}
//printf("%d\n",f[0][0]);
// for(int i=1;i<=n;i++,printf("\n")) for(int j=1;j<=n;j++) printf("[%d] ",sum[i][j]);
for(int l=;l<n;l++)
for(int r=l+;r<=n;r++)
f[l][r]=f[l][r-]+sum[r][l];
//printf("%d\n",f[1][2]);
//printf("%d\n",sum[2][1]);
while(q--){
x=read(); y=read(); //printf("[%lld %lld]\n",x,y); printf("%d\n",f[1][2]);
x=max(1LL,x); y=min(n,y);
if(x>=y) printf("0\n");
else printf("%d\n",f[x][y]);
}
return ;
}

T4

A SRM 04

描述

给个整数 n,你需要算出这个数在二进制下有多少组连续的 1

输入格式

一个整数 n

输出格式

一个整数,表示连续的 1 的组数

样例输入

5

样例输出

2

数据范围与约定

样例解释

5 在二进制下是 101,组数为 2

这道题就是一波匹配就解决问题了

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
LL read(){
LL ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
LL n,ans;
bool f;
int main()
{
n=read();
while(n){
while((n&)&&n) f=,n>>=;
if(f) ans++;
while(!(n&)&&n) n>>=;
}
printf("%lld",ans);
return ;
}

T5

K SRM 04

描述

一个序列满足条件是指其众数在序列中的出现次数不小于 (len 为序列长度)。

给定长度为 n 的序列 A,问 A 中有多少连续子序列满足条件。

输入格式

第一行一个整数 n

第二行 n 个整数 

输出格式

一个整数,表示满足条件的连续子序列数。

样例输入

7
1 2 3 3 2 1 3

样例输出

11

数据范围与约定

样例解释

在样例中满足条件的连续子序列有:A[1...1]、A[2...2]、A[3...3]、A[4...4]、A[5...5]、A[6...6]、A[7...7]、A[3...4]、A[2...4]、A[3...5]、A[3...7]。

这道题我用了离散化每个数的值来实现桶排然后就枚举区间 每次加一个数就更新一波众数就可以啦

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
const int mod=;
using namespace std;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n;
int v[];
int first[mod],sum[];
LL ans,cnt;
struct node{int v,next;}e[];
int get(int x){
int w=x%mod;
for(int i=first[w];i;i=e[i].next) if(e[i].v==x) return i;
cnt++; e[cnt].v=x; e[cnt].next=first[w]; first[w]=cnt;
return cnt;
}
int main()
{
n=read();
for(int i=;i<=n;i++) v[i]=read();
for(int i=;i<=n;i++){
int k,mx=;
memset(sum,,sizeof(sum));
for(int j=i;j<=n;j++){
k=get(v[j]); sum[k]++;
mx=max(mx,sum[k]);
if(mx>(j-i+)/) ans++;
}
}
printf("%lld\n",ans);
return ;
}

到这里这次比赛就圆满了(写完脑(nai)子疼) 这次也算发挥得不错吧 下次还是得被唐神葱神以及岚清大爷踩啊......祝我好运吧.

金山中学 rugular SRM 04 ——纪念我的第一次Ak的更多相关文章

  1. ContestHunter暑假欢乐赛 SRM 04

    逃了一场SRM(躺 A题可以看成0点到1点,有p的几率从0到1,1-p几率不动,求0到1的期望步数.很显然概率是不降序列数/n!,然后列个方程E[0] = E[0] * (1 - p) + 1,解得E ...

  2. 纪念第一次ak。。。

    1.MM的数学作业 [题目大意] 今天,MM在上数学课,数学课的主题是函数.讲完以后老师留了一个家庭作业,让同学们回家思考.题目如下: 定义一个函数,F(x)表示x转成二进制后,二进制中“1”的个数. ...

  3. 纪念又一次ak

    t1网络流 随便建个图就可以了 t2单调队列 分成两组来做 t3dp+高精度 为了不被卡厂用了万进制

  4. Win10+Ubuntu16.04双系统安装过程中遇到的一些问题及解决办法

    前两天闲来无聊重装了系统,装的是win10 64的系统,后来心血来潮索性再装Ubuntu,搞成win10+Ubuntu双系统. win10系统的镜像文件可以通过MSDN网站获取,MSDN是一个很可靠的 ...

  5. JS+MySQL获取 京东 省市区 地区

    采集了一下JD的省市区地区 (非常简单,只是做个记录) 1.建表:account_area   2.进入页面: https://reg.jd.com/reg/company 在浏览器(Firefox) ...

  6. maven配置

    java 环境变理 http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html maven环境变理 http://www.cnblog ...

  7. 1006. Sign In and Sign Out (25)

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  8. COM学习(三)——数据类型

    上回书介绍了GUID.CLSID.IID和接口的概念.本回的重点是介绍 COM 中的数据类型.咋还不介绍组件程序的设计步骤呀?咳......别着急,别着急!孔子曰:"饭要一口一口地吃&quo ...

  9. 转:VmWare下安装CentOS6图文安装教程

    文章来自于:http://www.cnblogs.com/seesea125/archive/2012/02/25/2368255.html 查看文章索引请通过http://www.cnblogs.c ...

随机推荐

  1. 《python核心编程第二版》第1章练习

    1–1. 安装 Python.请检查 Python 是否已经安装到你的系统上,如果没有,请下载并 安装它 略 1–2.  执行 Python.有多少种运行 Python 的不同方法?你喜欢哪一种?为什 ...

  2. No resources found. Error from server (NotAcceptable): unknown (get pods)

    问题:正确安装kubectl后,可查询到当前使用集群服务,也可切换不同的集群,但无法获取当前运行的pods的信息与所有的service,具体表现为 $ kubectl get po -nwx No r ...

  3. 小心!FOMO3D的坑

    null 01 前方高能 近日,区块链机构安比(SECBIT)实验室审计后确认,FOMO3D游戏的智能合约存在随机数漏洞可被利用,FOMO3D合约及所有抄袭源码的山寨合约均存在该安全漏洞. 原本设计上 ...

  4. PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0

    代码在本地运行一切都OK,放到服务器上,网站访问正常,上传就出现该错误. 提示:PHP Warning: File upload error - unable to create a temporar ...

  5. windowsserver2008 重新启动计算机命令

    在windowsserver2008中,若要重新启动计算机,可以输入以下命令即可立即重启计算机shutdown -r -t 0命令意义:shutdown在英文中意为关掉,在计算机中即为关机参数意义:- ...

  6. maven环境变的配置(复制自己看)

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具.由于 Maven 的缺省构建 ...

  7. lintcode-95-验证二叉查找树

    95-验证二叉查找树 给定一个二叉树,判断它是否是合法的二叉查找树(BST) 一棵BST定义为: 节点的左子树中的值要严格小于该节点的值. 节点的右子树中的值要严格大于该节点的值. 左右子树也必须是二 ...

  8. yii视频地址哦

    https://www.yiichina.com/video  

  9. hbase表的写入

    hbase列式存储给我们画了一个很美好的大饼,好像有了它,很多问题都可以轻易解决.但在实际的使用过程当中,你会发现没有那么简单,至少一些通用的准则要遵守,还需要根据业务的实际特点进行集群的参数调整,不 ...

  10. MySQL密码忘了怎么办

    之前在ubuntu 12.04里安装了xampp,设置了mysql数据库root密码,今天需要增加个数据库,发现忘记之前设置的密码是什么了.经过一番摸爬滚打,终于搞明白了,注意以下的操作都是以linu ...