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. Spark 学习笔记之 Standalone与Yarn启动和运行时间测试

    Standalone与Yarn启动和运行时间测试: 写一个简单的wordcount: 打包上传运行: Standalone启动: 运行时间: Yarn启动: 运行时间: 测试结果: Standalon ...

  2. vim设置golang语法高亮 (Centos)

    Go语言自带vim 的语法高亮文件. http://www.golangtc.com/download 下载   go1.3.3.src.tar.gzgo1.3.3 (source only),解压缩 ...

  3. python获取全国各个城市pm2.5、臭氧等空气质量

    随着国家发展,中国很多城市的空气质量其实并不好,国家气象局会有实时统计,但是要去写爬虫爬取是十分麻烦的事情,并且官方网站也会做一些反爬虫措施,所以实现起来比较麻烦,最好的办法就是使用现成的免费接口,空 ...

  4. 软件开发工具(第12章: CVS的安装及使用)

    一.CVS介绍 并发版本系统(Concurrent Versions System——CVS)是一个常用 的代码版本控制系统. 使用CVS可以对代码进行集中管理,记录代码所有的更改历史,提供 协作开发 ...

  5. spring boot通过Spring Data Redis集成redis

    在spring boot中,默认集成的redis是Spring Data Redis,Spring Data Redis针对redis提供了非常方便的操作模版RedisTemplate idea中新建 ...

  6. java生成32位UUID

    java生成32位UUID,具体代码如下: package com.fxsen.uuid; import java.util.UUID; /** * Copyright: Copyright (c) ...

  7. UDP方式的传输

    UDP 部分内容需要查文档学习,我们需要了解下面的两个类:java.net.DatagramSocket和java.net.DatagramPacket java.net.DatagramSocket ...

  8. msf各种弱口令爆破

    Msf: 写的很乱 记录下msf各个爆破弱口令的模块 run post/windows/gather/arp_scanner RHOSTS=10.10.10.0/24 使用arp_scanner模块 ...

  9. [CF494B] Obsessive String

    Hamed has recently found a string t and suddenly became quite fond of it. He spent several days tryi ...

  10. ‎Cocos2d-x 学习笔记(23) 分辨率与屏幕适配

    Cocos2d-x的分辨率可以分为两种:屏幕分辨率和设计分辨率. 屏幕分辨率就是屏幕窗口的大小,单位是像素. 设计分辨率单位是点,一个点可能包括多个像素. 如果把一台显示器自身的分辨率比作屏幕分辨率的 ...