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. Django:RestFramework之-------分页

    9.分页操作 分页,看第n页,每页显示n条数据 分页,在n个位置,向后查看n条数据. 加密分页,上一页和下一页 1.基于PageNumberPagination分页 1.路由: url(r'^(?P& ...

  2. android中activity和service是否在同一个进程中

    分两种情况,如果是本地线程,肯定是同一个进程中的, 如果是远程服务,那么activity和service将在不同的进程中的 ----- 非远程服务,和Activity属于同一个进程和线程:而远程服务和 ...

  3. Java中遇到Case cannot be resolved to a variable问题

    Java中遇到Case cannot be resolved to a variable问题 记录一下这两天项目中遇到的一个小问题. 在项目中遇到一个问题,一直显示   Case cannot be ...

  4. mybatis + oracle,出现ORA-01461:仅能绑定要插入LONG列的LONG值

    1.这个异常是指,用户向数据库执行插入数据操作时,某条数据的某个字段值过长,如果是varchar2类型的,当长度超过2000,--4000(最大值)之间的时候,oracle会自动将该字段值转为long ...

  5. 【转载】自定义View学习笔记之详解onMeasure

    网上对自定义View总结的文章都很多,但是自己还是写一篇,好记性不如多敲字! 其实自定义View就是三大流程,onMeasure.onLayout.onDraw.看名字就知道,onMeasure是用来 ...

  6. 《linux就该这么学》课堂笔记03 命令初识 echo、date、reboot、poweroff、wget...

    Linux进程的六种状态(R.S.D.T.Z.X): R --- TASK_RUNNING(可执行状态) S --- TASK_INTERRUPTIBLE(可中断的睡眠状态) D --- TASK_U ...

  7. Junit测试入门

    junit测试的6大注解 @BeforeClass    最先执行,在整个测试类中只会执行一次,所以它只能声明一次,并且被它标注的方法必须声明为static @Before       可以声明多个方 ...

  8. SaltStack--远程执行

    saltstack远程执行 安装完Saltstack后可以立即执行shell命令,更新软件包并将文件同时分不到所有受管系统.所有回复都以一致的可配置格式返回.远程执行参考文档:http://docs. ...

  9. Go基本运行编译命令解释

    go run命令: 直接执行命令源码文件:一定要声明自己是在main包下,要是只有一个工作区,相应的文件就会存在bin文件下 go build: 把文件夹下的命令源码文件编译成直接运行文件,但是不能有 ...

  10. 纯数据结构Java实现(9/11)(AVL)

    欢迎访问我的自建博客: CH-YK Blog.