SRM593 Div1Medium——May The Best Pet Win(bitset优化)

Description

给出n个元素取值的max、min,把这n个元素分割成两个集合,求如何分割使两个累和差的最大值最小

\(n\le 50,min,max\le 10000\)

Solution

把题意化归成式子,就是 求\(max(A\sum{max}-B\sum{min},B\sum{max}-A\sum{min})\)

  • 由于已知\(A\sum{max}+B\sum{max}\),\(A\sum{min}+B\sum{min}\)
  • 分别将其定义成Max和Min
  • 那么上述式子可以化为\(max(Max-B\sum{min}-B\sum{max},B\sum{min}+B\sum{max}-Min)\)
  • 可以发现我们只用计算出\(B\sum{min}+B\sum{max}\)的所有情况即可
  • 观察数据可知,这个值可以穷举.
  • 同时可以用bitset进行常数优化

SRM549 Div1Medium——Magical Hats(状压dp)

Description

有一个矩阵,矩阵中有num个帽子,有k个硬币塞在帽子下。

小Q有x次机会,每次选择一个帽子打开,小C可在打开帽子前改变硬币放的位置,且要总是满足每一列(行)帽子数+硬币数为偶数。

小C和小Q都足够聪明,求小Q收益的最大值。

\(n,m,k,num\le 13\)

Solution 剧毒的"聪明".

  • 在这里,聪明大概可以理解为:小C总是让小Q取不到硬币,就算能取到,也是最小的硬币.而小Q会在未被打开的帽子中选择一个使自己收益最大的方案.
  • 可以这么理解: 在小Q翻开这个位置之前,小C要决定在不在这个位置上放硬币.
  • dp的定义为一个三进制数,来表示某一个帽子的状态.
  1. 表示确定这个帽子里不放硬币.
  2. 表示确定这个帽子里放硬币.
  • dp的值为小Q能取到的硬币数
  • 可以发现这个二进制数无形中维护了翻出硬币的个数(cnt of 2)还有翻开帽子(cnt of 1+2)的个数
  • 利用记忆化搜索.当剩下的硬币都确定在哪时,就可以进行判定是否合法
  • 当小Q的次数用完时,如果硬币还没放完,那就继续确定硬币的方法,如果有一种合法方案,就返回零
  • 由于小Q是聪明的,他会选择最优的取的方案,这里去max
  • 由于小C是聪明的,他能选择的是在不在小Q取的地方放硬币,所以这里取min

SRM552 Div1Medium——Fox And Flower Shop Div One(前缀和+DP+ST表优化)

Description

给出n*m的矩阵,格子有三种可能,为A,B或为空

求取出两个不相交的矩阵,使其\(|Sum(A)-Sum(B)|\le K\)且\(Sum(A)+Sum(B)\)最大

\(N,M<=30,K<=900\)

Solution

  • 最暴力的写法n^8枚举两个矩阵 \(O(n^8)\)
  • 然后稍微优化一波,预处理出以某个点为分界点,Sum(A)-Sum(B)时Sum(A)+Sum(B)的最大值,然后再求解 \(O(n^6)\)
  • 再想一下,答案的两个矩阵一定分布在一行或一列的上下,这样枚举加验证的复杂度为 \(O(n^5)\) 这样就可以过了
  • 但实际上代码可以再优化.也是枚举行或列,可以发现相邻的两行(列)之间是有递推关系的,所以不用重新算的.为了保证复杂度,关于差值\(\le K\)的方面可以用ST表解决,这样的复杂度为\(O(n^4+n^3logn)\)

SRM561 Div1Medium——Circles Game(博弈)

Description

给定一个森林,轮流取点,当且仅当子树一个点被取过,该点不能取.

Solution

  • 可以发现,每个树都是一个子游戏.
  • 取了一个点后,这个点到根节点的路径都不能取了,发现这样就把树有分割成了许多子树.
  • 那么后继状态的sg值就是这些子树sg值的异或
  • 为解决子树的sg值,就要先计算子树作为根时的sg值,由此递归,然后计算出答案.
  • 时间复杂度\(O(n^2)\)

SRM568 Div1Medium——Equal Sums(建图)

Description

给定一个有未知数的待补充矩阵,给定的值满足小于等于9,并且要使矩阵满足在所有列中取一个数,并且所有数的行编号要不同,使所有这样的组合的和都相同.
求方案数(mod1e9+7)[满足有有限解]

\(n\le 50\)

Solution

  • 可以得到结论,对于满足这样关系的矩阵,每行每列都有特征值
  • 那么对于已知的值,只用枚举行特征值(枚举次数<=10),就可以知道行的特征值.
  • 由于这些递推关系可以传递,所以可以连边,枚举一个值之后就把联通的特征值全部计算出来
  • 但同时要考虑去重,因为如果每列特征值都+1,行特征值都-1,那么结果也会满足条件.但这样的结果是一样的,不能重复算
  • 所以只要使列特征值的最小值严格等于0就好.
  • 关于这个可以通过容斥解决

SRM416 Div1Medium——CustomDice

Description

求使互不相同六个正整数的和小于等于n的方案数.

\(n\le1e6\)

Solution

  • 难点在于很难让这六个数不同.
  • 先令这六个数有序,设这六个数为\(a_1,a_2,a_3,a_4,a_5,a_6\)
  • 令\(b_1=a_1,b_2=a_2-a_1...b_6=a_6-a_5\)
  • 同时发现:\(6b_1+5b_2+4b_3+3b_4+2b_5+b_6=n\)
  • 然后问题就转换成找到\(b_{1...6}>0,\sum_{i=1}^{6}b_i*i<=n\)的方案数.
  • 然后直接dp转移+前缀和优化就好了,时间复杂度\(O(6n)\)

TC做题笔记的更多相关文章

  1. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  2. C语言程序设计做题笔记之C语言基础知识(上)

    C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...

  3. SDOI2017 R1做题笔记

    SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30

  4. SDOI2014 R1做题笔记

    SDOI2014 R1做题笔记 经过很久很久的时间,shzr又做完了SDOI2014一轮的题目. 但是我不想写做题笔记(

  5. SDOI2016 R1做题笔记

    SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...

  6. LCT做题笔记

    最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ...

  7. java做题笔记

    java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ...

  8. SAM 做题笔记(各种技巧,持续更新,SA)

    SAM 感性瞎扯. 这里是 SAM 做题笔记. 本来是在一篇随笔里面,然后 Latex 太多加载不过来就分成了两篇. 标 * 的是推荐一做的题目. trick 是我总结的技巧. I. P3804 [模 ...

  9. PKUWC/SC 做题笔记

    去年不知道干了些啥,什么省选/营题都没做. 现在赶应该还来得及(?) 「PKUWC2018」Minimax Done 2019.12.04 9:38:55 线段树合并船新玩法??? \(O(n^2)\ ...

随机推荐

  1. pytorch安装问题

    目录 1.版本 2.pytorch调试中出现的Module 'torch' has no 'zero' member如何解决 3.No module named 'numpy.core._multia ...

  2. SQL SERVER MONTH函数

    定义: MONTH函数返回指定日期的月的部分 语法: MONTH(date) 参数: ①date参数是合法的日期表达式. 返回值: int型数据 例:  声明:本文是本人查阅网上及书籍等各种资料,再加 ...

  3. linux 从远程服务器拷贝文件

    1.从服务器复制文件到本地: scp root@192.168.1.100:/data/test.txt /home/myfile/ 2.从服务器复制文件夹到本地: scp -r root@192.1 ...

  4. 【AC自动机】洛谷三道模板题

    [题目链接] https://www.luogu.org/problem/P3808 [题意] 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过. [题解] 不再介绍基础知识了,就是裸的模 ...

  5. Linux/CentOS 配置Mysql-server过程和遇到错误解决方法

    第一步:下载mysql-server 方法1.wget url(你所要下载的链接,可以从mysq官网查找)到当前目录下 方法2.到mysql官网下载包之后通过xftp传到linux 第二步:解压tar ...

  6. 记笔记的软件(vnote)

    前面我们已经把我们的 Ubuntu 系统在物理机上运行起来了,也做了一些简单的优化,教了大家怎么使用 Ubuntu 系统自带的应用商店和 apt 安装和卸载软件.接着我们安装了搜狗输入法,现在我们的系 ...

  7. python 画图像训练结果的loss图

    得到每个epoch的loss和predict精度后,就可以愉快地画图直观地看出训练结果和收敛性了. # coding:utf-8 import matplotlib.pyplot as plt dat ...

  8. zepto学习(一)之click事件和tap事件比较

    一.click 和 tap 比较 两者都会在点击时触发,但是在手机WEB端,click会有 200~300 ms,所以请用tap代替click作为点击事件. singleTap和doubleTap分别 ...

  9. UVA10140PrimeDistance题解--质数/技巧

    题目链接 https://www.luogu.org/problemnew/show/UVA10140 分析 \(L,R\)都很大,显然不能直接筛出\(L,R\)区间中的质数,这里需要一个结论 结论 ...

  10. 初学java4 编译器优化

    编译器自动转义 short/char/byte 在定义变量时,后面赋值小于边界值,即可自动转义 右侧值小于左侧范围,编译器直接强转 右侧值大于左侧范围,编译器报错 short a = 10+1; // ...