FZU Monthly-201909 tutorial

题目(难度递增) easy easy-medium medium medium-hard hard
思维难度 AB CD EF G H

A. IQ-spray

签到题
给喷雾按照恢复理智的量排个序,按量从多往少买即可。
O(N^2)的冒泡我们也放过去了。

B. OF-1 火山制造

这道题为临时更改,所以题面上漏洞较多,包括M,N,A,B不应该是正整数,而是自然数、M大于等于N时即可喷发,而不需要超过等,在此表示抱歉,至于该题的原题,你们应该能够在下次月赛见到。

这道题属于比较简单的细节题,但是按照出题人在现场观察的情况来看,大部分选手都在稿纸上讨论奇偶性问题,某些选手甚至写出了一百多行的代码,然而最快的一位仅7分钟就完成了这道题。

事实上这道题首先应该判断初始值是否已经喷发,随后考虑A即可,很简单的可以想到,如果AB都是0,那么肯定GG。进一步可以想到,如果A是0或者1时,如果B是奇数,那么会陷入死循环,也是GG,否则由于B是偶数,那么答案一定是偶数,剩下的交给暴力循环就可以了。

C. OF-EX1 演出继续

这道题的题意简单来说就是N个数中取出M个,使得这M个数方差最小,输出这个方差的M*M倍。本题中的“数”为一条直线上的二维点,和一维数字差别不大。

根据方差公式的变形,DX = E(X^2) - E(X) ^ 2,预处理前缀和即可在时限内完成此题。

这道题原本的定位是属于简单题,所以放在C的位置上,但是现场却没有人做出来。赛后询问原因,得到的回答包括忘记了方差公式、不确定是总体方差还是样本方差等等。有若干位选手已经很接近AC了,但是他们均只对横坐标进行排序,有一组数据是所有的点都在Y轴上,于是。。。。

D. move on circle

容易证明合并方式为某一个人的位置保持不动,两边的人向他靠拢,只要枚举不动的人,再枚举从顺时针方向与逆时针方向靠拢的分界线,分别统计两边的移动步数即可取和最小即可

E. treesum

树dp,对每个节点,分别有与子树有或无相连路径,根据子树的状态求根节点怎样构造路径使得两种状态下树的路径和最大即可

F. Mountain

我们知道一个无序序列通过交换相邻位置变换到有序序列的最小操作次数为该无序序列的逆序对数。那么问题就转换成构造一个单峰序列,使得其相较于初始位置的逆序对数最小。明显的贪心思路:先将所有山按高度从大到小排,然后每次取出一个山,看是放在已排好山峰的最左还是最右,判断标准就是看放入哪边所产生的逆序对数最小,这个用树状数组即可O(logn)求得。总时间复杂度O(nlogn)。

G. powerful bit operation

套路题
这题是一道2-sat的经典题,队员们有必要通过这题去学习一下2-sat。
由于是位运算,位之间的关系是独立的,可以想到要去逐位判断。
那么我们可以枚举矩阵的元素,获取原序列那两个数的一些关系:
1.如果是与运算得到的结果
1.1 0的情况,那么一个数取了1,另一个数就要取0
1.2 1的情况,两个数都得是1
2.如果是或运算得到的结果
2.1 0的情况,两个数都得是0
2.2 1的情况,那么一个数取了0,另一个数就要取1
3.如果是异或运算得到的结果
无论结果是0还是1,只要知道其中一位,那么另一位就固定了
上述关系都可以用一张有向图来表示,这样可以得到31张有向图,分别tarjan缩点判断有没有解就可以了,全部有解才输出Yes。
时间复杂度O(N^2),有个31的常数。

H. Dinner

​ 首先,可以先算出所有奇数号桌子摆菜的方案数C(m, n) * n!,且任意一种方案对其他偶数号桌子来说都是一样的。故可以假设奇数号桌子的摆菜方案为1、2、…、n。

​ 其次,在假设的基础上考虑偶数号桌子的摆菜方案,容易得到如下DP方程:

​ DP( i, j ) = sigma( DP( i - 1, k ) ) 其中,k 不等于 i, i + 1, j,j 不等于i, j不等于i + 1。

其中DP(i,j)表示当前摆到第i个桌子,且摆第j种菜的方案数。将上式展开后化简,即可O(n)递推。

​ 最后,ans = max( C( m, n ) * n! * sigma( dp(n - 1, k) ) )。

FZU Monthly-201909 tutorial的更多相关文章

  1. FZU Monthly-201903 tutorial

    FZU Monthly-201903 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 ABF G CH D E A. D ...

  2. FZU Monthly-201901 tutorial

    FZU Monthly-201901 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AHG F B CE D 编码难度 ...

  3. FZU Monthly-201906 tutorial

    FZU Monthly-201906 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AE B DG CF H A. X ...

  4. FZU Monthly-201905 tutorial

    FZU Monthly-201905 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AB H DG CE F A. C ...

  5. 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 ...

  6. Career Planning:Developers Best Practices Tutorial

    This small tutorial is based on my past 16+ years of experience in software development industry. I ...

  7. [翻译+山寨]Hangfire Highlighter Tutorial

    前言 Hangfire是一个开源且商业免费使用的工具函数库.可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于Windows ...

  8. Monthly Income Report – August 2016

    原文链接:https://marcoschwartz.com/monthly-income-report-august-2016/ Every month, I publish a report of ...

  9. Django 1.7 Tutorial 学习笔记

    官方教程在这里 : Here 写在前面的废话:)) 以前学习新东西,第一想到的是找本入门教程,按照书上做一遍.现在看了各种网上的入门教程后,我觉得还是看官方Tutorial靠谱.书的弊端一说一大推 本 ...

随机推荐

  1. 使用 sql server 默认跟踪分析执行的 SQL 语句

    如果没有启用 SQL SERVER 的跟踪器来跟踪 SQL SERVER 的 SQL 执行情况,又想查最近的 SQL 执行情况,网上一般说是使用 LogExprorer 这个工具,网上找了这个工具很久 ...

  2. IDEA新建一个Spring Boot项目

    Maven构建项目模板 maven构建的是maven风格的纯净模板,要转变成spring boot项目需要自己添加依赖等配置. mvn archetype:generate: Maven插件原型是一个 ...

  3. xmlhttp.status的值及解释

      100——客户必须继续发出请求 101——客户要求服务器根据请求转换HTTP协议版本 200——交易成功 201——提示知道新文件的URL 202——接受和处理.但处理未完成 203——返回信息不 ...

  4. vue路由切换时内容组件的滚动条回到顶部

    在使用vue的时候会出现切换路由的时候滚动条保持在原来的位置,要切换路由的时候滚动条回到顶部才有更好的用户体验 1.当页面整体都要滚动到顶部的情况 router.afterEach(() => ...

  5. Android-----使用SoapObject获取服务器数据

    新建两个工具类ConnectWeb.java 和 ConnectMethod.java 进行对服务器进行数据交互 ConnectWeb.java代码如下: public class ConnectWe ...

  6. Thinkphp5.1允许uni-app的H5跨域请求接口解决方法

    情景: uni-app使用vue框架开发混合APP,虽然APP或者小程序没有跨域,但希望就是写完这个既有H5,又有APP,小程序等,所以能通过后端解决跨域最好.但是不知道是vue的原因还是什么,在PH ...

  7. Android Ant Build 遇到的问题

    Ant的具体使用这里就不详细说明了,这里记录下自己使用Ant批量打包apk的时候遇到的问题. 1. build 出现 crunch等字样的错误 <span style="color: ...

  8. window10自动更换bing壁纸

    问题描述: bing的每日推荐的首页壁纸很不错,想当做系统壁纸! https://cn.bing.com/ 问题解决: 在window-store商店搜索  “Dynamic Theme”,安装即可! ...

  9. win10系统下安装Ubuntu18.04双系统

    1.http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso下载Ubuntu 18.04镜像,准备好一个空的U盘 2.下载ru ...

  10. FreeBSD安装过程

    对于现在版本,安装过程中该使用哪些键,现简单总结: Space:选中/取消选中: Tab:切换,主要是分区界面时用它选择输入行: Enter:确定(并进入下一页): 方向键:在一些子组里更换输入项得用 ...