Loj刷题记录
又是一年云参营。
所以一起刷省选题吧。
LOJ2028 「SHOI2016」随机序列
题目链接。
发现+和-可以互相抵消,于是有贡献的时候一段前缀的乘积。设\(s[i]=\prod_{j=1}^i a[j]\),则答案为\(2\sum_{i=1}^{n-1}3^{n-i}s[i]+s[n]\)。
使用线段树维护前缀积就可以了。code
LOJ2038 「SHOI2015」超能粒子炮・改
\[
\begin{aligned}
F(n,k)&=\sum_{i=0}^k\binom{n}{i} \\
&=\sum_{i=0}^k\binom{n \ \mathrm{mod} \ p}{i \ \mathrm{mod} \ p}\binom{n/p}{i/p} \\
&=\sum_{i=0}^p\binom{n \ \mathrm{mod} \ p}{i}\sum_{j=0}^{\lfloor\frac{k-i}{p}\rfloor}\binom{n/p}{j}
\end{aligned}
\]
差不多转成一个递归的柿子了。预处理\(F(n,k)(n,k\in [0,p))\),时间复杂度\(O(n^2+T\log n)\).code
LOJ2143 「SHOI2017」组合数问题
组合意义,转为在\(n\)个元素中选\(\mathrm{mod} k=r\)个元素。
矩阵乘法优化转移,时间复杂度\(O(k^3\log n)\),code
LOJ2146 「SHOI2017」寿司餐厅
最大权闭合子图的模板。
闭合子图:在一个有向图中的一个子图\(S\),满足\(\forall x\in S\),\(x\)不能到达\(S\)之外的点。
最大权闭合子图:字面意思(点带权)
具体到这题就是,我们发现实际上这些元素是一些互相依赖的关系(选了\(y\)才能选\(x\)),那么连一条边\(x\rightarrow y\),构成了一个有向图。
标准做法是使用最小割,设一个源点\(S\)和一个汇点\(T\),对于点\(x\),割掉与\(S\)相连的边表示不选这个物品,否则割掉与\(T\)相连的边表示选这个物品。若\(v>0\),则连一条边\((S,x,v)\),否则连一条边\((x,T,-v)\)。
那么我们看边\(x\rightarrow y\),如果不割\((x,y)\),要保证\(S\rightarrow x\rightarrow y\rightarrow T\)这条路径不存在,就是不能不选\(y\)且选\(x\)。所以连边\((x,y,+\infty)\)
直接跑一遍dinic就可以过了。code
LOJ2192 「SHOI2014」概率充电器
首先大家都知道是树d,设\(f[x]\)表示\(x\)没有通上电的概率,但是我们不能列出一个高斯消元的式子,不然复杂度就炸掉了。
正解是使用up down的方法,首先计算出\(g[x]\)表示只考虑\(x\)的子树,\(x\)通上电的概率,这个直接dfs一遍,并且\(f[rt]=g[rt]\)。之后推下去,计算\(x\)对\(x\)的儿子\(v\)的贡献,发现\(f_x\)对\(f_v\)就是\(f_x\)去掉\(g_v\)对它的贡献(这里比较绕,建议画图理解)
注意除0的问题,时间复杂度\(O(n)\),code
LOJ6044 「雅礼集训 2017 Day8」共
首先要在\(n-1\)个点中选出\(k-1\)个点作为奇数的点。
于是就变为了有标号完全二分图\(K_{n,m}\)有多少个生成树。
你可以手推行列式,也可以使用prufer序列来理解。
首先prufer序列的长度为\(n+m-2\),回想一下prufer序列和树互相转化的过程,就知道里面有\(m-1\)个位置填\([1,n]\)的数,有\(n-1\)个位置填\([1,m]\)的数,并且位置是已经固定的。
所以答案就是\(\binom{n-1}{k-1}\times k^{n-k-1}\times (n-k)^{k-1}\)。
代码?雾。。。
LOJ6045 「雅礼集训 2017 Day8」价
我回想起刚才好像做过一道题叫寿司餐厅,于是开始思考怎么用网络流建图。。。
然后我自闭了。。。日常不会网络流建图。。。
点开了题解,题解说只用连这些边就可以。\((S,i,\infty-w_i),(i,j+n,\infty),(j+n,T,\infty)\),然后用\(S\)连出的所有边的边权之和-最小割就可以了。其中\(i\)表示减肥药,\(i+n\)是药材。
为什么呢?跟刚才一样,割掉\((S,i)\)表示不选第\(i\)个减肥药。首先割掉中间的边没有割掉右边的边优。其次,所有边权都是\(\infty\)级别的,而且求的是最小割,所以割掉\(n\)条边,也就是不选的减肥药+选的药材=n,所以就是选的减肥药=选的药材。满足这两个条件,跑出来的就是正确答案了。
代码?咕了。。。
LOJ6046 「雅礼集训 2017 Day8」爷
你发现如果没有\(len\le 10\)这个限制的话,这是个open题。于是只能从这里入手。
暴力分块的话,外层二分,块内二分要两个log,比\(n^2\)还慢。
所以考虑去掉一个,不容易发现相邻几个数都是比较接近的,所以我们可以重新分块。build的时候从左往右扫,当发现\(max-min>S\)的时候就分出一个块,其中\(S\)是个常数,大约取2000,然后就可以对每一块维护\(\le i\)的数的个数(因为\(i\in [min,max]\)的值域较小)。
大概1000次修改重构一次整个序列。这样就可以过去了。
代码?咕了。。。
LOJ2036 「SHOI2015」自动刷题机
QNMD 省选题(逃
LOJ2037 「SHOI2015」脑洞治疗仪
线段树维护当前区间最大脑洞,和\(1\)的个数,修改就直接打标记。
QNMD 省选题(逃
Loj刷题记录的更多相关文章
- AC 自动机刷题记录
目录 简介 第一题 第二题 第三题 第四题 第五题 第六题 简介 这就是用来记录我对于<信息学奥赛一本通 · 提高篇>一书中的习题的刷题记录以及学习笔记. 一般分专题来写(全部写一起可能要 ...
- PE刷题记录
PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...
- leetcode刷题记录--js
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
- Leetcode刷题记录(python3)
Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...
- 刷题记录:[HarekazeCTF2019]encode_and_encode
目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...
- 刷题记录:[De1CTF 2019]Giftbox && Comment
目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...
- 刷题记录:[强网杯 2019]Upload
目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...
- 刷题记录:[XNUCA2019Qualifier]EasyPHP
目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...
- 刷题记录:[DDCTF 2019]homebrew event loop
目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ...
随机推荐
- 在linux系统下安装两个nginx以及启动、停止、重起
如果没有安装过nginx请看:linux下nginx部署以及配置详解 1.第一个nginx已经安装完成后,现在安装第二个nginx 启动:sudo /usr/sbin/nginx3 重起:sudo / ...
- springcolud 的学习(一),架构的发展史
一.传统架构 传统的SSH架构,分为三层架构 web控制层.业务逻辑层.数据库访问层. 传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务没有进行拆分,都 ...
- XXL-JOB使用命令行的方式启动python时,日志过多导致阻塞的解决方式
一.Runtime.getRuntime().exec()的阻塞问题 这个问题也不能算是XXL-JOB的问题,而是Java的Runtime.getRuntime().exec()造成的,Buffere ...
- 2019 巨人网络java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.巨人网络等公司offer,岗位是Java后端开发,最终选择去了巨人网络. 面试了很多家公司,感觉大部分公司考察的点 ...
- jQuery实现图片上传
$('input[type="file"]').change(function(event) { var currentTarget = event.currentTarget; ...
- iOS多线程GCD简介(二)
在上一篇中,我们主要讲了Dispatch Queue相关的内容.这篇主要讲一下一些和实际相关的使用实例,Dispatch Groups和Dispatch Semaphore. dispatch_aft ...
- 捡回reset的未提交修改
使用 Reflog 如果一開始沒有記下來 Commit 的 SHA-1 值也沒關係,Git 裡有個 reflog 指令有保留一些紀錄.再次借用上個章節的例子,但這次我改用 --hard 模式來進行 r ...
- 一道经典面试题,atoi函数的实现
参考资料 (1)atoi函数的实现 (2)<剑指offer> 题目分析 本题需要注意的有几个方面: (1)检查输入参数,指针是否为NULL: (2)去除字符串前面的空格 (3)处理正负符号 ...
- Java 单文件、多文件上传 / 实现上传进度条
博客地址:https://ainyi.com/76 日常,工作 在这里总结一下上传吧(是以前做过的练习,就汇总到个人博客吧) java ssm 框架实现文件上传 实现:单文件上传.多文件上传(单选和多 ...
- Oracle数据库插入过程中特殊符号
-- 问题描述:(插入数据中有特殊符号)数据插入后乱码. -- 背景:客户提供部分Excel表格数据要求导入数据库.由于考虑到数据量不大所以粗略在Excel中进行了sql处理(在数据前后添加sql及对 ...