SRM514~523总结

SRM514

250:考虑这样构造一个答案:先跳一个(1,pace),之后来回跳(-pace,1)和(pace,1),这样,我们发现只要pace集合中有偶数那么我们必然能跳出(1,0),这样就能到达任意点,否则我们只能跳(1,1)这样的,即需要x+y为偶数才能到达;
600:我们发现只要前n行m列所有数的奇偶性确定了,棋盘的所有格子的奇偶性就确定了,由于n,m只有10,因此可以直接状压dp

SRM515

250:暴力枚举所有时刻,判定是否合法即可;坑点在于他挑选的基准点必须位于某个30度的倍数
550:考虑普通的概率dp[cur][sword][mask]代表从第cur小时开始,当前人的出现情况是mask,还剩下sword把剑时所能获利的最大期望值,转移的时候分cur小时的时候人出不出现,和出现时卖不卖即可

SRM516

250: n2 枚举一遍所有可能的key然后判一下是否合法即可
500:贪心,考虑每一列对答案的贡献,其实就是只考虑这一列时的答案乘以2的某个幂次,因此只需要按照只考虑这一列时的答案排序后算一下即可

SRM517

250:dp[x]代表x是否能必然产生target,转移是枚举约数,因此复杂度是 O(nn) ,可以通过
600:我们发现一旦 a[i] a[i+1] 进行了交换,那么 a[i] 左边和 a[i+1] 右边就互相独立,因为一边的数不可能再被换到另一边了,因此我们可以考虑这样的区间dp,dp[l][r][k]代表代表把 [l,r] 内的数排完序,且最后一步交换是 a[k],a[k+1] ,那么必须保证 a[l],a[l+1]..a[k1],a[k+1] 恰好构成了 l,l+1,...k1,k 的某个排列,然后在转移一下即可,通过预处理可以做到 O(n3)

SRM518

250:预处理后每次选一个最大的字母贪心即可
500:一道乱搞题,我的做法是先令 b[i]=a[i+1]a[i] ,则题目转化为每次给 b[i]1,b[i+1]+1 ,问最少多少次操作之后可以使 b 序列单调不降,于是可以每一轮贪心的选择b[i]-b[i+1]最大的进行操作,可以证明这样操作在大约nlog(value)后次就会停止

SRM519

250:最后的答案某一位是0而低位全是1,之后+1后产生进位形成,因此只要枚举这个0的位置然后更新答案即可
600:比较简单的题,只要把输入串建成ac自动机,然后在自动机上状压dp即可

SRM520

250:由于数据范围比较小,直接 n3 暴力枚举luck的使用情况,再 23 枚举选择情况即可
500:看题目的数据范围,可以先预处理出 dp1[mask][score] ,代表是否得分的情况为mask并且最终得到score分的方案数,只要一层一层dp,并用打标记的方法就可以在 O(maskscore) 的时间内得到,接着一个一个dp即可,dp的过程使用一个后缀更新答案

SRM521

250:贪心即可,只要在’)’没人匹配的时候添加’(‘即可
500:关键点在于包着点的正方形必然卡着某个出现过的x和y,因此我们可以 O(n2) 枚举这个正方形的一个角,之后,由于剩下的点只有n个,只要check一下与这n个点形成的正方形和lowbound与highbound,把符合条件的点插到set中去,最后只要看set中的点数即可,用数据结构维护可以做到 O(n3)logn ,不过直接暴力 O(n4) 也是可以通过的

SRM522

250:其实是一个比较有趣的题,只是这里数据范围太小,可以直接状压dp;不过仔细分析可以发现,alice能赢当且仅当两端有’A’;
450:首先C有一个上界,只要把A改成1,B改成C就可以得到一组解,那么C=A*B,显然有A,B中较小的那个 <=105 <script type="math/tex" id="MathJax-Element-23"><=10^5</script>,因此只需要枚举一下就可以得到答案;另一种解法在于,我发现C的变动不会特别大,因此从 [C500,C+500] 暴力枚举C,之后再枚举约数,更新一下答案即可

SRM523

250:只要等比数列公比不是1,那么项数是很少的,暴力枚举即可,否则只要检查一下c在不在等差数列当中即可
500:tc上比较典型的dp题, dp1[i][j] 代表长为i,高<=j.且最右侧一定被填充的方案数, dp2[i][j] 代表长为i,高<=j的方案数,转移只需要枚举最右测放几个,之后又间隔多少个空格,通过预处理可以得到一个 O(n4) 的解答
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值