T1是个容斥,我掐手指一算他为了卡容斥的正确性,绝不会把n和m出的很相近($O(n^2)$算法在nm相等的时候达到最高时间复杂度),不然就太好做了,于是开了特判+各种卡常和滚动数组优化,卡到了70分,$n^2$过100000,暴力碾标算。T2十三分钟AC没啥说的,也就是审题吧。大概是个flag了。T3的话自以为状压拿了50,看来是我太天真了。WA了10分,QJ的另外10分没拿到noooooooo。其实是题意理解有偏差。

T1想了好久组合数没有想到,T2直接秒掉,T3打了半天废的,大概这就是命吧,下次目标就是A掉T1,(这么多场从没A过T1。。)

下面是题解:

T1:考虑大力容斥,考场上一直在想怎么挖掉dp的一维,最终发现不可挖,就直接过了,没有想容斥,其实挺好想的。

$ans=C_{m-n+n-1}^{n-1}+\sum \limits_{i=1}^{min(n,m/K)}(-1)^iC_{m-n+(n-1)-iK}^{n-1}C_n^i$

$ans=C_{m-1}^{n-1}+\sum \limits_{i=1}^{min(n,m,K)}(-1)^iC_{m-1-iK}^{n-1}C_n^i$

O(m)容斥既可。

T2:老套路建反图Tarjan缩点+拓扑+dp即可。

设$dp[i]$为第i个的SCC完全被轰炸所需要的时间。

$dp[i]=\max \limits_j^{e(i,j)} dp[j]+sz[i]$

$ans=\max \limits_{i=1}^{n} dp[i]$

T3是个神仙dp,是真的神仙。

看了标程序才弄明白。

大体思路是用一个类似背包的东西把n个人的贡献压到一起,真正做到了一个数组来表现n个人除了多少个剪刀石头布的意义,同时用下一次的决策来统计答案,在最后错排来达到压在一起之后的离散,从而乘上正确的概率。

具体来说,将状态$i,j,k$分成两种,已经确定当前次的决策的和未确定当前次决策的,一个已确定决策的可以由未确定状态的当前阶段状态转移过来,同时也可以由相同决策的较低阶段状态转移过来。

前者的转移直接乘上当前人的概率即可,表示这个人作为当前的决策士兵来转移;后者的转移表示的是当前士兵作为之前某一阶段的士兵插在当前决策的前面,所以用相同决策的上一阶段状态来转移。这是理性的理解。

感性理解一下,一个状态可以由他之前的所有状态转移而来,当前阶段的无决策状态转移到我身上毫无疑问,而那些同决策上一阶段的状态转移到我身上,其实也是转移到他们身上的上一阶段无决策状态借此机会转移到了我身上,而他们身上的状态其实是无状态的转移“前缀和”,所以当前这个状态通过一系列的转移最终的到了各个阶段的无决策状态的转移。

  理解的快感,让我难以自拔。

「2019.8.9 考试」神仙的dp总让人无所适从的更多相关文章

  1. 「2019.8.11 考试」一套把OI写的很诗意的题

    这次写的更惨了,T2暴力再次挂掉了. 先写了T1的75暴力,然后写了T2的70分暴力(挂成了25),T3啥也不会骗了12分.T3看完题一点思路没有,心态爆炸了,一直在观察数据,忽略的思考的重要性,以至 ...

  2. 「2019.7.22 考试」AC和WA0一步之遥

    这卷子还是答的挺惨的. 第一题5min写完了,自认为AC(其实WA了80),第二题推了半天CRT的公式老出错结果发现是程序打错了.第三题打模拟150行结果数组没开够,开大就是0->60的转变.状 ...

  3. LOJ #2731. 「JOISC 2016 Day 1」棋盘游戏(dp)

    题意 JOI 君有一个棋盘,棋盘上有 \(N\) 行 \(3\) 列 的格子.JOI 君有若干棋子,并想用它们来玩一个游戏.初始状态棋盘上至少有一个棋子,也至少有一个空位. 游戏的目标是:在还没有放棋 ...

  4. #507. 「LibreOJ NOI Round #1」接竹竿 dp

    题目: 题解: 我们考虑把每对花色相同的牌看作区间. 那么如果我们设 \(f_i\) 表示决策在 \([1,i]\) 内的最优答案. 那么有 \(f_i = max\{max\{(f_{j-1}+\s ...

  5. LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿

    二次联通门 : LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 /* LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 dp 记录一下前驱 ...

  6. LOJ #6436. 「PKUSC2018」神仙的游戏(字符串+NTT)

    题面 LOJ #6436. 「PKUSC2018」神仙的游戏 题解 参考 yyb 的口中的长郡最强选手 租酥雨大佬的博客 ... 一开始以为 通配符匹配 就是类似于 BZOJ 4259: 残缺的字符串 ...

  7. WAIC | 奇点云携「酷炫AI应用」亮相2019世界人工智能大会

    你是否还在疑惑“人工智能可否改变世界?” 那么,你该有一些危机感了. 机器视觉.自然语言处理.智能语音.机器人问诊.智慧驾驶……这些AI技术及应用早已渗入了我们日常生活的点滴. 29日,以「智联世界, ...

  8. kettle并行运行时出现「Unknown error in KarafBlueprintWatcher」

    背景:在使用kettle 6进行大量数据并行抽取时,偶尔会出现「Unknown error in KarafBlueprintWatcher」的错误,详细的报错信息可以查看下面的代码块. ERROR: ...

  9. 面试必备:高频算法题终章「图文解析 + 范例代码」之 矩阵 二进制 + 位运算 + LRU 合集

    Attention 秋招接近尾声,我总结了 牛客.WanAndroid 上,有关笔试面经的帖子中出现的算法题,结合往年考题写了这一系列文章,所有文章均与 LeetCode 进行核对.测试.欢迎食用 本 ...

随机推荐

  1. MongoDB 学习笔记之 DBRef

    DBRef: MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link).内嵌比较好理解,就是字段内容是个数组,数组内再包含文档,而我们今天介绍的是另一种,称为链接DBRef.由 ...

  2. [TLSR8267] 泰凌微 telink tlsr8267 ble ADC 用法浅谈

    1.读 datasheet 在<DS_TLSR8267-E21_Datasheet for Telink BLE SoC TLSR8267.pdf>第11章详细介绍了ADC相关属性及参数. ...

  3. Windows中利用共享内存来实现不同进程间的通信

    Windows中利用共享内存来实现不同进程间的通信 一.msdn详细介绍 https://docs.microsoft.com/zh-cn/windows/win32/memory/sharing-f ...

  4. C#常见的算法面试题

    一.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m //方法一,通过顺序规律写程序,同时也知道flag标志位的重要性. static int F1(int m) { in ...

  5. 性能测试:Jmeter压测过程中的短信验证码读取

    问题背景 现如今国内的大部分软件或者网站应用,普遍流行使用短信业务,比如登录.注册以及特定的业务通知等. 对于这些业务,在使用Jmeter进行性能测试的过程中,就会需要自动获取和填入短信验证码,否则性 ...

  6. 为什么要实现 IDisposable 接口?

    一.背景 最近在精读 <CLR Via C#>和 <Effective C#> 的时候,发现的一个问题点.一般来说,我们实现 IDisposable 接口,是为了释放托管资源和 ...

  7. 重新整理django中Auth模块

    0907自我总结 重新整理django中Auth模块 from django.contrib import auth 一.设置 默认Auth表单 auth默认是使用自带的user表单 自定义Auth表 ...

  8. CTF-SMB渗透

    环境 Kali ip 192.168.56.102 Smb 靶机ip 192.168.56.103  靶场下载: 链接:https://pan.baidu.com/s/1OwNjBf7ZEGmFlRq ...

  9. JedisCluster与keys/scan查找

    最近买了几个专栏,关于算法.JVM.redis,学不过来.主要是身体也不太好,视物光斑转头疼的问题出现越来越频繁.再加上早上起来嗓子痒打喷嚏.很烦. 稍记录一下redis集群的问题: 1.scan在集 ...

  10. c使用二叉链表创建二叉树遇到的一些疑问和思考

    二叉链表存储二叉树 学习的时候参考的是<大话数据结构>,书中是这样定义的 typedef char TElemType; typedef struct BiTNode { TElemTyp ...