• CF570B


    题意转化:

    一条长为n的路,路上有一点m,问你在什么地方再设一点a可以使路上任意一点到点a的概率大于到点m的概率


    所谓概率更大,也就是说从离点m更远的一端到点a的长度小于到点m的长度
    (因为此长度内所有的点到a的距离都小于到m的距离)


    具体做法如下

    1. 因为这道题的点都是整数,所以先特判一下,当n=1时输出1(路的长度就为1,m<=n,所以m也只能为1,因此必不可能出现一点a使得这个端点到a的距离小于m,只能等于,此时概率为0,就愉快的输出1就好了)

    2. 对于长度不是1的道路,我们做如下处理:

    因为上面说了是要使从离m更远的一端到m的距离大于到a的距离

    我们把道路的中点mid看做一个分界点,当m处于[0,mid]中时,a要属于(m,n]才能使端点到a的距离更小,且当a与m的差值为1时(即a=m+1),才能使所谓的概率更大

    同理,当m处于[mid,n]时,a要属于[0,mid)且a=m-1才能使概率更大


    因为长度什么的都是整数,对于除法运算有限制,所以分奇数和偶数两种情况写(注意不要忘记考虑m正好位于中点的情况)

    代码

    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #define maxn 100010
    
    using namespace std;
    int n,m;
    int main(){
    	cin>>n>>m;
    	if(n==1){cout<<1;return 0;}
    	if(n%2==0&&m>n/2) cout<<m-1;
    	if(n%2==0&&m<=n/2) cout<<m+1;
    	if(n%2!=0&&m>=n/2+1) cout<<m-1;
    	if(n%2!=0&&m<n/2+1) cout<<m+1;
    	return 0;
    }
    

    码风丑勿喷

  • 相关阅读:
    五步搞定Android开发环境部署
    centos7安装MongoDB3.4
    java数据结构之三叉链表示的二叉树
    java数据结构之二叉树遍历的非递归实现
    java数据结构之二叉树的定义和递归实现
    java数据结构之树
    java数据结构之递归算法
    java数据结构之(堆)栈
    redis主从复制配置
    Redis 发布订阅
  • 原文地址:https://www.cnblogs.com/KnightL/p/13935518.html
Copyright © 2020-2023  润新知