FZU Monthly-201910 tutorial

FZU Monthly-201910 tutorial

题目(难度递增)easyeasy-mediummediummedium-hardhard
思维难度ABCDEFGH

A. welcome-to-fzu-monthly

签到题,按题目意思模拟就可以了。
k只有10,不会循环写10个if都能过。

B. 低保

简单的IF判断条件题。
一个进阶的写法是根据输入对指定物品的权重+1,最后输出权重为2的物品。
无法通过这道题的同学可能需要担心一下你们的C语言期末考试。

C. chocolates

从第1天开始依次计算每天所需的费用,同时维护一个最小的生产1块巧克力的花费t=min(ci, t+s),时间复杂度O(n)。

D. joseph

按题意模拟。
每次将游标+2然后对n取模,记录出队的人编号,最后针对每个询问输出结果即可。

E. 炼金

问题的本质为:问M通过操作“+A”与操作“*B”产生的整数集对C的剩余系中是否包含N。
初始时将M模C加入队列,然后反复将没有访问过的队首元素+A模C和队首元素*B模C的结果加入队列。重复操作直到找到N,或者队列为空。最坏复杂度为O©。

F. 洪尼玛的魔法卡

用X能力将所有卡片变成a<b的状态,按a值从小到大排序。
最小的a值固定放在第1堆,从a值第2小的开始枚举。假设枚举到a[i],将i及之后的所有卡先放在第2堆,i之前的所有卡放到第1堆。这时需要从第2堆中选择n-i+1张放到第1堆,选择的策略如下:
将第2堆的所有卡牌按b值从小到大排序,然后选择前n-i+1张给第1堆或者选择后n-i+1张给第1堆。实际上是求b值第1小或者第n-i+1大的卡牌,这个过程用treap维护,总时间复杂度O(nlogn)。

G. cake

明显每次去最大的蛋糕吃,由于每次值除2放回,考虑2进制表示相当于每次右移1位放回,则某时刻一定会出现所有值最高位1位置相同的情况,且在这种情况后蛋糕被吃顺序一定是循环的。接下来分奇偶讨论即可。

H. taxi

dp[i][j][k]表示把前i个人接上车,车上状态为j,目前出租车位置为k的最小花费时间,第一维需要滚动处理。
因为上了车之后,我们就只关心目的地了。而目的地就9种,加上一个位置为空,一个位置最多有10个状态,可以10进制状态压缩。
然后按照题目意思做转移即可,每次接一个人上车,然后倒着枚举状态,做下车的动作即可。
最后答案从dp[n][0][1-9]里+开回家的时间,取最小值即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值