zoukankan      html  css  js  c++  java
  • 联考4

    T1

    看名字就知道是跟卡特兰数有关系,于是我当时就打了一个dp暴力就跳了?并且我现在看不懂我的(N^2dp) 了。

    算卡特兰数的时候是记横坐标为放的左括号数量,纵坐标为放的右括号数量,那么合法的括号序列其实就意味着从((0,0))走到((n,n))并且不碰(y=x+1)这条直线的方案数,因为碰到的话就至少有一个不能匹配的括号对了。

    这题其实也是一样,只是改成只能有(m)个括号对未匹配而已,那么可以先差分一下,答案就是不超过(m)个括号对未匹配的方案数减去不超过(m-1)个括号对未匹配的方案数,如果不超过(m)个括号未匹配,那么其实就是不能碰到直线(y=x+m+1),所以将路线翻折一下就能得到这种路线唯一对应一条到达((n-m-1,n+m+1))的路径,
    所以最后答案就是(C^{n-m}_{2n}-C^{n-m-1}_{2n}),注意折线法的应用。

    T2

    数学的魅力来了

    直接二项式定理展开算,时间复杂度有点高所以注意卡常。

    T3

    观察得到结论,最后剩下的数一定是中间的两到三个数之一。

    先假设序列为偶数,那么最后一定是想要大数的那个人结束战斗,所以设(mid=1+n>>1),则答案为(max(a[mid],a[mid+1])),不可能是别的数,因为假设是别的数(x),如果(x)比中间那个数大,想要小数的就会把它取走,否则另一个人取走。

    那序列为奇数呢?第一个人拿走一个数后就是偶数序列了,并且拿走的数一定且只能是最左边的或者是最右边的,如果是最左边的,那么剩下的序列中,最后一个取的人是想要小数的,答案为(min(a[mid],a[mid+1])),否则为(min(a[mid],a[mid-1])),因为第一次选择是想要大数的人选择,所以二者取(max)

    如果提前拿走数的话,就是移动了中心,可以求出中心移动的范围然后构造一个新数列于是就成了RMQ问题。

    T4

    也要得出结论,当且仅当(sum_{i=1}^nfrac{1}{2^{a_i}}<1)玩家会赢,所以就完了。。

    博弈论的题要找找规律推推结论。

    int - > long long 0 - > 100
  • 相关阅读:
    ubuntu 16.04 连接无线网络
    linux的内存管理-抛砖引玉
    linux的进程调度-抛砖引玉
    AliOS Things 异步事件框架Yloop
    AliOS Things 云端物联网操作系统
    linux performance tools
    linux进程调度
    linux 内核Lockup机制浅析
    cache和内存屏障
    linux设备模型及实例
  • 原文地址:https://www.cnblogs.com/anyixing-fly/p/13767557.html
Copyright © 2011-2022 走看看