• NOIP2008 提高组题解


    当年浙江一等奖分数线为330分,其他已经查询不到。
    luogu对应题目T1 笨小猴T2 火柴棒等式T3 传纸条T4 双栈排序 ,可以到luogu上查看更多题解。

    T1 笨小猴 素数

    给出一个单词,统计其中出现最多的字母出现的次数maxn,以及出现最少的字母的次数minn,如果maxn-minn是质数的话则作为一个Lucky Word..否则即为No Answer.
    直接模拟即可

    T2 火柴棒等式 枚举

    给你n(n<=24)根火柴棒,叫你拼出 "A + B = C"这样的等式,求方案数.
    直接枚举A和B(事实证明只到3位数),事先预处理2000以内各个数所用的火柴数.直接枚举出解

    T3 传纸条 动态规划

    给一个矩阵(左上角和右下角固定为0),从左上角走两次到右下角,两次走的路径不能有交集(即一个点不能被走两次),求两次走过的格子上的数的和最大是多少.(类似二取方格数.)
    二取方格数很经典的题目了,于是便直接以 f[i][j][k][p] 表示第一条路径走到(i,j),第二条路径走到(k,p)所取到的数的最大值..转移方程就很好办了..同时注意判断两条路不要从同一个点转移过来就好了.

    T4 双栈排序 二分图、栈

    本题很难,有如下题意。
    有两个队列和两个栈,分别命名为队列1(q1),队列2(q2),栈1(s1)和栈2(s2).最初的时候,q2,s1和s2都为空,而q1中有n个数(n<=1000),为1~n的某个排列.
    现在支持如下四种操作:
    a操作,将 q1的首元素提取出并加入s1的栈顶.
    b操作,将s1的栈顶元素弹出并加入q1q2的队列尾.
    c操作,将 q1的首元素提取出并加入s2的栈顶.
    d操作,将s2的栈顶元素弹出并加入q1q2的队列尾.
    请判断,是否可以经过一系列操作之后,使得q2中依次存储着1,2,3,…,n.如果可以,求出字典序最小的一个操作序列.
    下面开始做题了
    第一步需要解决的问题是,判断是否有解.
    考虑对于任意两个数q1[i]和q1[j]来说,它们不能压入同一个栈中的充要条件是什么(注意没有必要使它们同时存在于同一个栈中,只是压入了同 一个栈).实际上,这个条件p是:存在一个k,使得i<j<k且q1[k]<q1[i]<q1[j].
    首先证明充分性,即如果满足条件p,那么这两个数一定不能压入同一个栈.这个结论很显然,使用反证法可证.
    假设这两个数压入了同一个栈,那么在压入q1[k]的时候栈内情况如下:
    …q1[i]…q1[j]…
    因为q1[k]比q1[i]和q1[j]都小,所以很显然,当q1[k]没有被弹出的时候,另外两个数也都不能被弹出(否则q2中的数字顺序就不是1,2,3,…,n了).
    而之后,无论其它的数字在什么时候被弹出,q1[j]总是会在q1[i]之前弹出.而q1[j]>q1[i],这显然是不正确的.
    接下来证明必要性.也就是,如果两个数不可以压入同一个栈,那么它们一定满足条件p.这里我们来证明它的逆否命题,也就是"如果不满足条件p,那么这两个数一定可以压入同一个栈."
    不满足条件p有两种情况:一种是对于任意i<j<k且q1[i]<q1[j],q1[k]>q1[i];另一种是对于任意i<j,q1[i]>q1[j].
    第一种情况下,很显然,在q1[k]被压入栈的时候,q1[i]已经被弹出栈.那么,q1[k]不会对q1[j]产生任何影响(这里可能有点乱,因为看起来,当q1[j]<q1[k]的时候,是会有影响的,但实际上,这还需要另一个数r,满足j<k<r且 q1[r]<q1[j]<q1[k],也就是证明充分性的时候所说的情况…而事实上我们现在并不考虑这个r,所以说q1[k]对q1[j]没有影响).="">
    第二种情况下,我们可以发现这其实就是一个降序序列,所以所有数字都可以压入同一个栈.
    这样,原命题的逆否命题得证,所以原命题得证.</q1[k]的时候,是会有影响的,但实际上,这还需要另一个数r,满足j<k<r且>
    此时,条件p为q1[i]和q1[j]不能压入同一个栈的充要条件也得证.
    这样,我们对所有的数对(i,j)满足1<=i<j<=n,检查是否存在i<j<k满足p1[k]< p1[i]

    大佬您太强了,还请多多指教哎
  • 相关阅读:
    pycharm 中查找替换功能
    Python中括号的区别及用途
    python:return
    WAMPSERVER 启动不了APACHE原因
    Python为什么如此不同?
    Python初试云雨情
    mariadb 的日志
    MySql 之UUID()
    python 自建爬虫复用简单框架(gevent异步)
    python分布式进程
  • 原文地址:https://www.cnblogs.com/BobHuang/p/15363916.html
Copyright © 2020-2023  润新知