又是一年云参营。

所以一起刷省选题吧。

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刷题记录的更多相关文章

  1. AC 自动机刷题记录

    目录 简介 第一题 第二题 第三题 第四题 第五题 第六题 简介 这就是用来记录我对于<信息学奥赛一本通 · 提高篇>一书中的习题的刷题记录以及学习笔记. 一般分专题来写(全部写一起可能要 ...

  2. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  3. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  4. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  5. 刷题记录:[HarekazeCTF2019]encode_and_encode

    目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

  6. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  7. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

  8. 刷题记录:[XNUCA2019Qualifier]EasyPHP

    目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...

  9. 刷题记录:[DDCTF 2019]homebrew event loop

    目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ...

随机推荐

  1. java之spring mvc之拦截器

    1. springmvc 中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的. 2. 自定义实现一个拦截器的步骤: a). ...

  2. feign.FeignException: status 400 reading

    feign.FeignException: status 400 reading : 请求方调用报错: 服务方被调用报错: 用fegin给redis设置缓存时报错,刚好 卡到8k这个临界点 ,就一直报 ...

  3. Java调用Http/Https接口(5)--HttpAsyncClient调用Http/Https接口

    HttpAsyncClient是HttpClient的异步版本,提供异步调用的api.文中所使用到的软件版本:Java 1.8.0_191.HttpClient 4.1.4. 1.服务端 参见Java ...

  4. js获取列表多条数据(接口)

    读取数据://ajax去服务器端校验 $.ajax({ type:"post", url:"http://", data:{deviceid:1}, dataT ...

  5. 激活windows去掉右下角水印

     激活windows去掉右下角水印 //需要隔一段时间执行一次 // 卸载已有的激活产品slmgr.vbs /upk // 重新按照激活产品slmgr /ipk NPPR9-FWDCX-D2C8J-H ...

  6. WAS更新web.xml配置文件不生效的问题

    问题及原因分析: 之前修复漏洞时,写了个过滤器配置在web.xml中,但是部署到服务器并重启后,重新扫描漏洞,还是没有解决对应问题.在确定了这种修复方案是切实可行之后分析,可能是配置的web.xml未 ...

  7. 折叠面板实现,上传文件进度条,三级联选择器,多级联选择器, 利用layui实现

    首先贴出html代码 <form class="layui-form" action=""> <div class="layui-f ...

  8. MySQL修炼之路五

    1. 存储引擎和锁 1. 存储引擎(处理表的处理器) 1. 基本操作 1. 查看所有存储引擎 mysql>show engines; 2. 查看已有表的存储引擎 mysql>show cr ...

  9. mysql导入数据和导出数据

    导入数据: 首页进入mysql命令行界面: use 数据库名: source d:/data/test.sql; 如果是windows系统必须使用d:/,如果使用d:\会报语法错误. 那么如何导出(备 ...

  10. PostgreSQL分区表实现——pg_pathman安装、配置

    近日由于系统运行时间太长,数据库库表中的数据也是越来越多,为了缩短库表的操作时间,所以对数据库中的部分库表进行分区的操作. 通过研究,决定采用pg_pathman插件对库表进行分区操作.pg_path ...