• 第四届 山东省ACM大学生程序设计竞赛


    比赛剩余时间:比赛结束
    ID tag Title Accept Submit
    A [2603]   Rescue The Princess 7 9
    B [2623]   The number of steps 2 3
    C [2610]   Boring Counting 0 10
    D [2609]   A-Number and B-Number 0 0
    E [2608]   Alice and Bob 3 6
    F [2607]   Mountain Subsequences 0 3
    G [2606]   Rubik’s cube 0 0
    H [2605]   A^X mod P 3 18
    I [2604]   Thrall’s Dream 0 6
    J [2624]   Contest Print Server 5 49


    A题 Rescue The Princess

    题目大意:给出等边三角形的两个点的坐标,求另外一个点的坐标。

    解题思路:画出图,求出两点的斜角和距离,然后根据几何方法乱搞。

    解题报告:here

    B题 Thrall’s Dream

    题目大意:为给定n个点和m条有向边,问能不能任意给出两个点,至少有一条路径可以从a到b。

    解题思路:

    1、has[i][j],表示可以从i到达j, 对于每个点s,进行广搜,记录下has[s][ ] .然后只要判断一下对于任意两个点都满足 has[i][j]==1||has[j][i]==1,就可以了。

    结题报告:here

    2、强连通分量,然后缩点,只要形成一条链或者一个环就满足条件!虽然说重边不影响Tarjan的正确性,但是重边会影响度数的统计。(太麻烦)   

    解题报告:here

    C题 A^X mod P

    题目大意:题目意思很简单,就是求(A^f[1]+A^f[2]+。。。+A^f[n])%P

    解题思路:直接扫描一遍结果肯定超时,用快速幂计算幂值有很多重复的计算,因此想办法将结果保存在数组里面,dp的思想。显然f[i]=fix*k+j,这样分解是对的,那么选取一个合适的fix,这样数组可以存下需要的解。不妨令fix=31623,那么A^(fix*k+j)%m,就可以分解成(A^k)^fix*A^j,用dpk[i]保存(A^k)^i,dpj[i]保存A^i,那么

    A^f[i]=dpk[i/fix]*dpj[i%fix];

    解题报告:here

    D题 Rubik’s cube

    解题报告:here

    E题 Mountain Subsequences

    题目大意:给出一个字符串,求这样的子串个数 a1<a2<...<ai < Amax < aj <.....<an;

    解题思路:

    要计算这样的个数,那么问题可以分解成计算上升子序列的个数和计算下降子序列的个数,然后枚举最大点。

    dp[26],dpl[i],dpr[i].dp[26]表示到i为止以某个字母为结尾的上升子串个数,dpl[i],表示以s[i]为结尾的上升子串个数,dpr[i]同理。

    于是状态方程:

    dpl[i]=sum{ dp[j] }(s[j]<s[i])

    dp[s[i]]=dpl[i]+1;

    dpr[i]=sum{ dp[j] }(s[j]<s[i])

    dp[s[i]]=dpr[i]+1;

    解题报告:here

    F题 Alice and Bob

    题目大意:给出一个多项式,然后给出q个询问,每个询问求指数部分是P对应的系数是多少。

    解题思路:将式子展开,发现非出现合并项,也就是说展开的式子对应的每个项是唯一的。那么对于某个项P,P肯定是由多个二进制相加得来,那么就肯定能分成多个二进制的数,于是根据P枚举P的二进制的每一位,是1就乘上对应的项。

    解题报告:here

    G题 A-Number and B-Number

    题目大意:求第n个Bnumber。

    解题思路:对于这种无法直接求解答案,我们只能试着二分枚举答案来做,判断是否满足条件,通过二分不断往正确解缩进。那么问题就变成求n以内的数包含了多少Bnumber,这个很明显是用数位dp求解,先求出Anumber的个数,然后减去不满足的数就是Bnumber的个数,处理有一点小技巧。

    解题报告:here

    H题 Boring Counting

    划分树+二分

    解题报告:here

    I题 The number of steps

    题目大意:一个金子塔型的迷宫,一个人在金子塔的定点,现在要走到金子塔的左下角,给出了这个人走左边的们,左下角的们,右下角的门,对应的概率,现在问这个人走到金子塔左下角步数的期望。

    解题思路:直接搞,E[i][j],表示位置i,j步数的期望,然后倒推,最终答案E[1][n]。很简单的一道概率dp。

    解题报告:here

    J题 Contest Print Server

    这题模拟题,整场里面的大水题,坑点挺致命的,打印机可以打0张纸,ORZ.

    题解报告:here

    参考网址:http://blog.csdn.net/my_acm_dream/article/details/44925013

  • 相关阅读:
    es6 语法 (数值扩展)
    手机日期插件 (转加上自己喜欢的)
    仿微信抢红包(js 转)
    默认时间为今天
    es6 语法 (解构赋值)
    es6 语法 (let 和const)
    es6环境搭建
    express 安装和运行
    git 常用操作,下拉,提交,更新,还原
    排序。
  • 原文地址:https://www.cnblogs.com/zswbky/p/6717898.html
Copyright © 2020-2023  润新知