又是一年云参营。

所以一起刷省选题吧。

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. 使用 ProcessMonitor 找到进程所操作的文件的路径

    原文:使用 ProcessMonitor 找到进程所操作的文件的路径 很多系统问题都是可以修的,不需要重装系统,但是最近我还是重装了.发现之前正在玩的一款游戏的存档没有了--因为我原有系统的数据并没有 ...

  2. go install -v github.com/gopherjs/gopherjs报错提示go cannot find package "golang.org/x/crypto/ssh/terminal" 解决方案

    1前言 方法一:go get 方法二: github clone 2 方法方法一:go get go get golang.org/x/crypto/ssh/terminal 但是这种方法容易被墙,出 ...

  3. Xcode调试打印方法

    1 NSLog 在调试的过程中,最常用的查看变量值的方法是NSLog 整数 int a = 1; NSLog("%d", a); 浮点数 float b = 1.11; NSLog ...

  4. .NET Framework 项目多环境下配置文件web.config

    解决jenkins自动构建发布的问题,统一从git/svn库中获取项目文件,根据不同配置编译发布到多个运行环境中. 转自:https://www.cnblogs.com/hugogoos/p/6426 ...

  5. Django-模型层(多表操作)

    目录 1.创建模型 1.1方式一:自行创建第三张表 1.2方式二:通过ManyToManyField自动创建第三张表 1.3关于db_column和verbose_name 1.4关于on_delet ...

  6. Docker Private Registry 常用组件

    Docker Private Registry 常用组件 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Registry概述 1>.什么是registry ...

  7. Pthon魔术方法(Magic Methods)-可视化

    Pthon魔术方法(Magic Methods)-可视化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关于可视化的魔术方法简介 __str__: str()函数,format ...

  8. PC软件/web网站/小程序/手机APP产品如何增加个人收款接口

    接入前准备 通过 XorPay 注册个人收款接口,原理是帮助你签约支付宝和微信(不需要营业执照)支持个人支付宝和个人微信支付接口,大概几分钟可以开通,开通后即可永久使用 PC 网站接入 效果:用户点击 ...

  9. go语言笔记2

    上接Go语言学习笔记(一) 11    Go错误处理11.1    nil函数通常在最后的返回值中返回错误信息.使用errors.New 可返回一个错误信息: package main         ...

  10. BLE——协议层次结构

    未完待续…… BLE协议 Bluetooth Application Applications GATT-Based Profiles/Services Bluetooth Core (Stack) ...