TC做题笔记
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的定义为一个三进制数,来表示某一个帽子的状态.
- 表示确定这个帽子里不放硬币.
- 表示确定这个帽子里放硬币.
- 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做题笔记的更多相关文章
- C语言程序设计做题笔记之C语言基础知识(下)
C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...
- C语言程序设计做题笔记之C语言基础知识(上)
C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...
- SDOI2017 R1做题笔记
SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30
- SDOI2014 R1做题笔记
SDOI2014 R1做题笔记 经过很久很久的时间,shzr又做完了SDOI2014一轮的题目. 但是我不想写做题笔记(
- SDOI2016 R1做题笔记
SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...
- LCT做题笔记
最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ...
- java做题笔记
java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ...
- SAM 做题笔记(各种技巧,持续更新,SA)
SAM 感性瞎扯. 这里是 SAM 做题笔记. 本来是在一篇随笔里面,然后 Latex 太多加载不过来就分成了两篇. 标 * 的是推荐一做的题目. trick 是我总结的技巧. I. P3804 [模 ...
- PKUWC/SC 做题笔记
去年不知道干了些啥,什么省选/营题都没做. 现在赶应该还来得及(?) 「PKUWC2018」Minimax Done 2019.12.04 9:38:55 线段树合并船新玩法??? \(O(n^2)\ ...
随机推荐
- pytorch安装问题
目录 1.版本 2.pytorch调试中出现的Module 'torch' has no 'zero' member如何解决 3.No module named 'numpy.core._multia ...
- SQL SERVER MONTH函数
定义: MONTH函数返回指定日期的月的部分 语法: MONTH(date) 参数: ①date参数是合法的日期表达式. 返回值: int型数据 例: 声明:本文是本人查阅网上及书籍等各种资料,再加 ...
- linux 从远程服务器拷贝文件
1.从服务器复制文件到本地: scp root@192.168.1.100:/data/test.txt /home/myfile/ 2.从服务器复制文件夹到本地: scp -r root@192.1 ...
- 【AC自动机】洛谷三道模板题
[题目链接] https://www.luogu.org/problem/P3808 [题意] 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过. [题解] 不再介绍基础知识了,就是裸的模 ...
- Linux/CentOS 配置Mysql-server过程和遇到错误解决方法
第一步:下载mysql-server 方法1.wget url(你所要下载的链接,可以从mysq官网查找)到当前目录下 方法2.到mysql官网下载包之后通过xftp传到linux 第二步:解压tar ...
- 记笔记的软件(vnote)
前面我们已经把我们的 Ubuntu 系统在物理机上运行起来了,也做了一些简单的优化,教了大家怎么使用 Ubuntu 系统自带的应用商店和 apt 安装和卸载软件.接着我们安装了搜狗输入法,现在我们的系 ...
- python 画图像训练结果的loss图
得到每个epoch的loss和predict精度后,就可以愉快地画图直观地看出训练结果和收敛性了. # coding:utf-8 import matplotlib.pyplot as plt dat ...
- zepto学习(一)之click事件和tap事件比较
一.click 和 tap 比较 两者都会在点击时触发,但是在手机WEB端,click会有 200~300 ms,所以请用tap代替click作为点击事件. singleTap和doubleTap分别 ...
- UVA10140PrimeDistance题解--质数/技巧
题目链接 https://www.luogu.org/problemnew/show/UVA10140 分析 \(L,R\)都很大,显然不能直接筛出\(L,R\)区间中的质数,这里需要一个结论 结论 ...
- 初学java4 编译器优化
编译器自动转义 short/char/byte 在定义变量时,后面赋值小于边界值,即可自动转义 右侧值小于左侧范围,编译器直接强转 右侧值大于左侧范围,编译器报错 short a = 10+1; // ...