FZU Monthly-201906 tutorial
FZU Monthly-201906 tutorial
| 题目(难度递增) | easy | easy-medium | medium | medium-hard | hard |
|---|---|---|---|---|---|
| 思维难度 | AE | B | DG | CF | H |
A. Xorisk
求出前缀异或和。从头到尾扫一遍,维护map[x]表示之前有多少个前缀异或和为x,枚举到第i个数就加上map[ai^k]即可。
B. short-path-problem
裸的最短路,构造数据卡掉了SPFA写法,使用Dijkstra就可以正常AC。
C. cover
可以先把字符串插入AC自动机里,用dp来计数,状态表示为f[i][j][k],表示长度为i,现在在自动机状态为j,而且已经有长度为k没被覆盖了,转移就是枚举4个字符,转移一下自动机状态和没被覆盖的长度
D. banzhuan
题意
三维空间一块方形空间,要摆一些实心格子,每个格子有个代价,这格子可以摆当且仅当下面是地面或者下面的格子已经摆了,求最大代价最小代价
题解: 贪心+数学
这个题目,出题组搞出了个假的贪心策略,也就是说标程写了个假算法,特在此致歉,不知道在考试期间,有没有给选手们带来困扰或者不必要的麻烦,但是大部分选手这题都没有提交,不知道是否是时间安排不当,这个题目定位是个仅次于签到的贪心难度,虽然纠正之后的贪心难度,要比之前的稍微难一些,但是贪心策略是不难想到的,选手们应该要有尝试;经过后来补充测试,本场冠军的这道题在倒数第二发通过了,时间离结束也不远
另一方面,本题题面还有点小歧义,虽然按照正常一些的理解,是符合出题人的设定的,但是没有严格明确强调,主要是中文题面,里面有个字“放”,有点语义上的歧义,比如可以理解为放这个动作,也可以理解为放着这种状态
显然最底下一层要铺满,考虑上面的任意一层,如果你把贡献的\(z\)这个因子,提取出来,那么容易发现这个一层就转化为一个平面的问题了,因为剩余的因子大家是一样的
考虑一层如何摆布才能最小:
1)考虑最优的方案中,2-n这些列显然不会同一列出现两个;如若不然,设有两个棋子,上面这个设为\(A\),下面设为\(B\),可以把\(A\)移动到第一列,这样显然效果更好,且代价更低,故由调整法可证2-n这些列最多一个棋子,且每列至少一个,故每列严格一个棋子

2)2-n每一列的棋子一定放在第1行,反证法,如若不然,将一个棋子\(C\)拆分为两个棋子\(C1\)和\(C2\),如图:
\[
xy^2-(x1^2+1y^2)=xy^2-x-y^2+1-1=(x-1)(y^2-1)-1 \ge 2 \gt 0,\forall x \ge 2,y \ge2
\]
故由调整法知2-n的棋子严格放在第1行

3)2-n行每行只会放一个棋子,且放在第一列,且\((1,1)\)不放棋子,显然

最优排布一层的就是这样,红色部分为棋子
现在考虑很多层,假设前\(k\)层已经都排布好了,现在放第\(k+1\)层,因为第\(k+1\)层这样放是最优的,且恰好可以放在第\(k\)层上,由归纳法知就这样放满\(n\)层就是可行且最优的方案
最大值显然就是全部排满\(n^3\),只要计算一下答案即可
\[
ret_{max}=(\sum_{z=1}^nz)(\sum_{x=1}^nx)(\sum_{y=1}^ny^2) \\
ret_{min}=(\sum_{x=1}^nx)(\sum_{y=1}^ny^2)+\sum_{z=2}^nz(\sum_{x=2}^nx+\sum_{y=2}^ny^2)
\]
E. spanning-tree
题意
问1到n这些数,构成完全图,w(i,j)=i+j,次小生成树
题解
很简单的贪心,就所有点都连1,这样就是最小的,然后把3连1改成3连2即可,就是次小的了(比最小的多1)
证明:
首先,最小生成树严格有\(n-1\)条边,\(2n-2\)个度之和,那么答案显然为\(2n-2\)的正整数之和\(S=\sum_{i=1}^na_i\)
最小生成树要联通,即每个点至少一个度,那么其中\(n\)个数固定为\(1,2,3\dots n\)
剩下的\(n-2\)个数,显然至少为\(1\),那么\(S \ge n-2 +\sum_{i=1}^ni=n(n+1)/2+n-2\)
前面我们显然找到了一种构造方案,使得上式取到等号
F. 8862015
数位DP中的基础题
G. Euclid
可以发现两个式子可以拼成一个矩形内整点数量,所以答案是(p - 1) * (q - 1) /4,注意p和q相等时拼的线要多算一次,所以还要加 (p - 1) / 2.
H. i-love-gcd
题意与题解
本题留有空白,给选手们自己思考,考点和算法方向也隐藏
FZU Monthly-201906 tutorial的更多相关文章
- FZU Monthly-201903 tutorial
FZU Monthly-201903 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 ABF G CH D E A. D ...
- FZU Monthly-201901 tutorial
FZU Monthly-201901 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AHG F B CE D 编码难度 ...
- FZU Monthly-201909 tutorial
FZU Monthly-201909 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AB CD EF G H A. I ...
- FZU Monthly-201905 tutorial
FZU Monthly-201905 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AB H DG CE F A. C ...
- Microsoft Azure Tutorial: Build your first movie inventory web app with just a few lines of code
Editor’s Note: The following is a guest post from Mustafa Mahmutović, a Microsoft Student Partner wh ...
- Career Planning:Developers Best Practices Tutorial
This small tutorial is based on my past 16+ years of experience in software development industry. I ...
- [翻译+山寨]Hangfire Highlighter Tutorial
前言 Hangfire是一个开源且商业免费使用的工具函数库.可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于Windows ...
- Monthly Income Report – August 2016
原文链接:https://marcoschwartz.com/monthly-income-report-august-2016/ Every month, I publish a report of ...
- Django 1.7 Tutorial 学习笔记
官方教程在这里 : Here 写在前面的废话:)) 以前学习新东西,第一想到的是找本入门教程,按照书上做一遍.现在看了各种网上的入门教程后,我觉得还是看官方Tutorial靠谱.书的弊端一说一大推 本 ...
随机推荐
- Java自学-基本变量类型
Java中的基本变量类型 一个变量的类型,决定了该变量可以包含什么样的值. Java中有八种基本类型,都是Java语言预先定义好的,并且是关键字. 这八种基本类型分别是: 整型 (4种) 字符型 (1 ...
- Serverless
一.介绍 是指依赖于第三方应用程序或服务来管理服务器端逻辑的应用程序. 此类应用程序是基于云的数据库(如Google Firebase)或身份验证服务. 无服务器也意味着开发为事件触发的代码,并且在无 ...
- springboot使用Fiber纤程踩过的坑
@RequestAttribute为null 在springboot中使用@FiberSpringBootApplication注解标注在SpringBootApplication上时,发现在拦截器( ...
- CentOS7 安装 浏览器
firefox(火狐) sudo yum install firefox chrome(谷歌) 添加源:sudo wget http://repo.fdzh.org/chrome/google-chr ...
- SparkStreaming之checkpoint检查点
一.简介 流应用程序必须保证7*24全天候运行,因此必须能够适应与程序逻辑无关的故障[例如:系统故障.JVM崩溃等].为了实现这一点,SparkStreaming需要将足够的信息保存到容错存储系统中, ...
- 揭秘MySQL主从数据不一致
前言: 目前MySQL数据库最常用的是主从架构,大多数高可用架构也是通过主从架构演变而来.但是主从架构运行时间长久后容易出现数据不一致的情况,比如因从库可写造成的误操作或者复制bug等,本篇文章将会详 ...
- 常用内置模块(一)--time、os、sys、random、shutil、pickle、json
一.time模块 Python中,通常有这几种方式来表示时间: 1.时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type( ...
- 第十周LINUX 学习笔记
LVS集群nat丶DR HA:高可用 平均无故障时间/(平均无故障时间+平均修复时间) 负载均衡 次序lb(负载)——>ha()LB tcp:lvs,haproxy 应用 ...
- Android Studio--Logcat
他只是坐在那里,嘴里说:“做这个!做那个!当然,什么都不会发生,光说不做是没有用的” --哈里·杜鲁门“论<总统的权利>” 移动端的技术演进愈演愈烈,原生突破口已被打破. flutter. ...
- OAuth 第三方登录授权码(authorization code)方式的小例子
假如上面的网站A,可以通过GitHub账号登录: 下面以OAuth其中一种方式,授权码(authorization code)方式为例. 一.第三方登录的原理 所谓第三方登录,实质就是 OAuth 授 ...