【水】4月21日模拟题解

(((((((((((((((((((((((((((((((((((((((((((((((((((((4.21模拟题解(((((((((((((((((((((((((((((((((((((((((((((((((((((((((

欢迎查看本校最水题解

第1 题 小麦亩产一千八

【问题描述】

“有了金坷垃,肥料一袋能顶两袋撒,小麦亩产一千八,吸收两米下的氮磷钾……”,

话说HYSBZ(Hengyang School for Boys & Zy)学识渊博孩纸们一讲到粮食,都会想起印度那

个著名的故事:国王要在第一个格子里放入一粒小麦,接下来的格子放入前面一个格子的两

倍的小麦。这样所需小麦总数是巨大的,哪是不用金坷垃就能完成的任务?不过为了减轻国

王的任务,那个下棋获胜的宰相换了一个要求:“我只需要你在棋盘外放一粒小麦,可以将

其理解为第0 个格子,然后你需要在第一个格子里放入若干小麦,之后每一个格子放入前两

个格子的小麦数之和的小麦,并且要满足第a 个格子放x 粒小麦,第b 个格子放……”说到

这,宰相突然发现自己说的满足第a 个格子放x 粒小麦的情况可能不存在……欺君可是大罪

啊!国王看到宰相迟迟不说,自己也烦了!我自己来算!于是国王拜托你,让你算出第b

个格子应该放几粒小麦。当然,就算答案不存在,你也是要告诉国王的。

【输入格式】kela.in

该题有多组数据,请读到文件末结束。

对于每一组数据仅一行,3 个正整数a,x,b,分别表示第a 个格子放了x 粒小

麦,以及你所需要计算的是第b 个格子的小麦数量。

【输出格式】kela.out

对于每一次询问,仅1 个整数,为第b 个格子的小麦数量,若宰相说的情况不

存在,那么请输出-1。

啊啊我已经写出正解了然而因为一直while下去就爆〇了

这题我一看就知道是高配版fblq。我就自己推出了式子。也是非常简单的。计算这一段的代码如下:

 1 if((x - fblq(a)) % (fblq(a - 1)) == 0){
 2
 3                    c = (x - fblq(a)) / fblq(a - 1);
 4
 5                    printf("%lld\n",fblq(b) + c * fblq(b - 1));
 6
 7          }
 8
 9          else  printf("-1\n");
10
11 }

再配上一个计算fblq的小函数

 1 ll fblq(ll x)
 2
 3 {
 4
 5          if(f[x] != 0)         return f[x];
 6
 7          else{
 8
 9                    return f[x] = fblq(x - 1) + fblq(x - 2);
10
11          }
12
13 }

关于这个算法,题解告诉我们:

明显题目就是给出了一个拓展的Fibonacci 数列,其满足:

f[0]=1, f[1]=p, f[2]=p+1, f[3]=2*p+1……

原本的Fibonacci 数列满足:f’[0]=1, f’[1]=1, f’[2]=2, f’[3]=3……

设g[i]=f[i]-f’[i],那么其满足g[0]=0, g[1]=p-1, g[2]=p-1, g[3]=2p-2,

g[4]=3p-3……

已知f[a]=x,那么在a>0 的情况下,g[a]=x-f’[a]=f’[a-1]*(p-1)。f’[]我

们可以O(a)预处理出来,因此对于每组数据我们可以O(1)计算出p(答案

不存在的情况即无法整除的情况)。之后便O(b)递推计算答案就可以了。

每组数据的时间复杂度为O(b)。

我也没认真看他讲了什么。

关键还是这句罪恶的话

while(scanf("%d ",&a) != EOF)

emmmmmmmmmmmmmmmmm

我没什么可说的。

第2 题休息

【问题描述】

休息的时候,可以放松放松浑身的肌肉,打扫打扫卫生,感觉很舒服。在某

一天,某LMZ 开始整理他那书架。已知他的书有n 本,从左到右按顺序排列。他

想把书从矮到高排好序,而每一本书都有一个独一无二的高度Hi。他排序的方法

是:每一次将所有的书划分为尽量少的连续部分,使得每一部分的书的高度都是

单调下降,然后将其中所有不少于2 本书的区间全部翻转。重复执行以上操作,

最后使得书的高度全部单调上升。可是毕竟是休息时间,LMZ 不想花太多时间在

给书排序这种事上面。因此他划分并翻转完第一次书之后,他想计算,他一共执

行了多少次翻转操作才能把所有的书排好序。LMZ 惊奇地发现,第一次排序之前,

他第一次划分出来的所有区间的长度都是偶数。

【输入格式】rest.in

第一行一个正整数n, 为书的总数。

接下来n 行,每行仅一个正整数Hi,为第i 本书的高度。

【输出格式】rest.out

仅一个整数,为LMZ 需要做的翻转操作的次数。

这是求匿序对数,说是要用到归并排序……

这都是什么东西啊……

我真的不会啊……

第3 题军训

【问题描述】

HYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必

须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每

个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢

家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求:

1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。

2.每个学生必须要被分到某个班上。

3.每个班的欠扁值定义为该班中欠扁值最高的那名同学的欠扁值。所有班的

欠扁值之和不得超过Limit。

4.每个班的女友指数定义为该班中所有同学的女友数量之和。在满足条件

1、2、3 的情况下,分班应使得女友指数最高的那个班的女友指数最小。

请你帮HYSBZ 的教务处完成分班工作,并输出女友指数最高的班级的女友指

数。

输入数据保证题目有解。

【输入格式】training.in

第一行仅2 个正整数n, Limit,分别为学生数量和欠扁值之和的上限。

接下来n 行每行2 个正整数Hi,Gi,分别为学号为i 的学生的欠扁值和女友

数。

【输出格式】training.out

仅1 个正整数,表示满足分班的条件下女友指数最高的班级的女友指数。

我连dp都不会……

我太菜了……

原文地址:https://www.cnblogs.com/aristocrat/p/8946159.html

时间: 2024-11-12 19:52:28

【水】4月21日模拟题解的相关文章

FJoi2017 1月21日模拟赛 comparison(平衡树+thita重构)

题目大意: 经黄学长指出,此题原题出自2014湖北省队互测 没有人的算术 规定集合由二元组(A,B)构成,A.B同时也是两个这样的集合,即A.B本身也是二元组 规定二元组S为严格最小集合,S=(S,S),规定T为严格最大集合T=(T,T) 刚开始我们有两个集合S和T,即全局最小集合和全局最大集合,编号分别为0,n+1 下面我们规定集合的比较规则,是递归定义的 我们称集合X(X1,X2)等于Y(Y1,Y2)当且仅当 X1=Y1 并且 X2=Y2 我们称集合X(X1,X2)小于Y(Y1,Y2)当且仅

3月21日考试 题解(数据结构+区间DP+贪心)

前言:T3写挂了,有点难受. --------------- T1 中位数 题意简述:给你一段长度为$n$的序列,分别输出$[1,2k-1]$的中位数$(2k-1\leq n)$. ------------- 其实正解是用两个堆分别为大根堆和小根堆.但我这里偷了个懒,直接由STL函数upper_bound二分查找插入数字(STL大法好 Code: #include<bits/stdc++.h> using namespace std; vector<int> v; int n; i

10月15日模拟赛题解

10月15日模拟赛题解 A 树 Description 给定一棵 \(n\) 个节点的树,每个节点有两个参数 \(a,~b\),对于每个节点,求子树中参数为 \(b\) 的所有节点的 \(a\) 之和 Limitations \(100\%\) \(1 \leq b \leq n \leq 10^5,~a \leq 1000\) \(60\%\) \(1 \leq b,n\leq 1000\) \(30\%\) \(1 \leq b, n \leq 10\) Solution 对于 \(30\%

6月21日 bc总结

6月21日 bc总结 最近bc由于急于提交,增加了WA的概率,今天1001数据没测完全就提交了,WA了一次,很不划算,在bc等于罚时10min,下次一定要确保数据正确且所有的情况都考虑到再提交. 1001 水题,5分钟WA了一次,6分钟过.手速还是慢了,重点是居然WA了一次. 1002 给定一个数组,多次询问L和R区间内的逆序数. 数组大小是小于1000. 暴力FST了. 思路:设dp(l,r)为区间 l 到 r 的逆序数.dp(l,r)=dp(l,r-1)+cnt(l,r),其中cnt(l,r

2016年7月21日学习笔记

2016年7月21日学习笔记 Linux安装以后出现的文件目录的作用: 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码.SHELL脚本.二进制的可执行文件等,可用cat.less.more.vi.emacs来察看内容,用mv来改名. 目录文件:包括文件名.子目录名及其指针.它是LINUX储存文件名的唯一地方,可用ls列出目录文件. 连接文件:是指向同一索引节点的那些目录条目.用ls来查看是,连

回忆5月21日9:00~21:00于橘园洲工业区举行了福州市第一届黑客马拉松活动

5月21日9:00~21:00于橘园洲工业区举行了福州市第一届黑客马拉松活动,参加活动的大多是在IT行业浸淫多年的前辈,活动的形式就是将参与者分为组,分别是算法.性能测试.信息安全.Android.产品经理和web VR方向.探讨时间为12个小时,要求写出项目方案并拿出成果. 作为志愿者的我被允许自由走动,观摩各个小组的大概进程.算法方向的小组用一些核心代码编制了一个人脸识别系统,性能测试小组在虚拟机搭建的LINUX系统环境下利用一款软件测试模拟博客访问的抗压能力(并发性),Android小组比

Linux运维学习-2——2016年7月21日

格式说明: 操作 概念 命令 说明及举例 二 internet 因特网ethernet 以太网ctrl+alt+F1 图形界面ctrl+alt+F2-F6 字符界面 命令:who am i/who/who me i/tty/df/ifconfig/w/ halt 关机 reboot 重启 chvt 1-6 切换终端 init 3 关闭图形界面 init 5 打开图形界面 cp 复制 pwd 显示当前目录 lsblk 列出硬盘信息 id -u mg 查看用户ID,root为9,其他为普通用户,不加

【每日圣经日历】2014年9月21日

Dimanche le 21 Septembre 2014 礼拜日 2014年9月21日 O Dieu! tu ne dédaignes pas un coeur brisé et contrit.                                                                      Psaumes 51. 17 神啊,忧伤痛悔的心,你必不轻看.                                                  

2014年8月21日 &nbsp; 第一天学习linux linux的下载地址

第一天学习linux 个人实验用的linux版本为CentOS linux 下载地址: 32位版本      http://mirror.symnds.com/distributions/CentOS-vault/6.3/isos/i386/CentOS-6.3-i386-LiveDVD.iso 64位版本  http://mirror.symnds.com/distributions/CentOS-vault/6.3/isos/x86_64/CentOS-6.3-x86_64-LiveDVD.