zoukankan      html  css  js  c++  java
  • Codeforces Gym101063 J.The Keys (2016 USP-ICMC)

    J.The Keys

    Out of all science labs constructed by the GEMA mission on Mars, the DSL - Dangerous Species Lab is the most dangerous of them all. The laboratory is so dangerous that you have to go through N doors in succession to get to it. Each one of those doors can only be opened by one key di (notice, however, that there may be different doors that can be opened by the same key).

    A nameless lazy biologist (we'll call him LB) from GEMA needs to open all those doors first thing in the morning, every day. He has all the keys necessary to open them, but he finds carrying all of them in his pockets too much of a mess.

    To be more organized and lose the title of being a lazy biologist, LB purchased Kkey-chains and is planning to distribute all the keys among them. His plan of distribution is very simple. For each key, randomly choose a key-chain with uniform probability and put this key on it.

    When opening the doors, LB will hold one key-chain and will keep the others in his pocket (initially all of them are in his pocket). Whenever he gets to a door that needs a key that is not on the key-chain he is holding, he will swap it with the key-chain that has this key. Getting the first key-chain from his pocket is not considered a swap.

    You have to help LB and find what is the expected number of key-chain swaps he will have to do when opening the doors the next morning.

    Input

    Input begins with N and K (1 ≤ N ≤ 1051 ≤ K ≤ N), the number of doors and the number of key-chains. On the next line there are N numbers di (1 ≤ di ≤ 106), the identifier of the key that opens the i-th door.

    Output

    Output the expected number of swaps. Your answer will be considered correct if the absolute and relative error are less than 10 - 6.

    Example

    Input
    3 3
    1 2 3
    Output
    1.333333333
    Input
    1 1
    2
    Output
    0.000000000
    Input
    5 2
    1 2 3 2 1
    Output
    2.000000000
    
    
    
    

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cstdlib>
     6 #include<string.h>
     7 #include<set>
     8 #include<vector>
     9 #include<queue>
    10 #include<stack>
    11 #include<map>
    12 #include<cmath>
    13 using namespace std;
    14 typedef long long ll;
    15 const int N=1e5+10;
    16 const int INF=0x3f3f3f3f;
    17 int a[N];
    18 int main(){
    19     int n,k;
    20     double ans;
    21     while(~scanf("%d%d",&n,&k)){
    22         for(int i=1;i<=n;i++)
    23             scanf("%d",&a[i]);
    24         ans=0;
    25         if(n==1)printf("%.9f
    ",(k-1)*1.0/k);
    26         //if(n==1)printf("%.9f
    ",ans);
    27         else{
    28             for(int i=2;i<=n;i++){
    29                 if(a[i]!=a[i-1])
    30                 ans+=(k-1)*1.0/k;
    31             }
    32             printf("%.9f
    ",ans);
    33         }
    34     }
    35     return 0;
    36 }

    其他的写不出来了。

  • 相关阅读:
    JavaScript内置对象
    微信小程序:实现可拖动悬浮图标(包括按钮角标的实现)
    项目1——博客系统
    在HTML中使用css3实现雪人动画效果
    Ajax请求后台发送String类型总是进入Error function解决办法总结
    原生js实现图片懒加载
    【Electron Playground 系列】自定义协议篇
    大规格文件的上传优化
    如何优雅的在react-hook中进行网络请求
    noip2008 双栈排序
  • 原文地址:https://www.cnblogs.com/ZERO-/p/9695546.html
Copyright © 2011-2022 走看看