2017.08.08【NOIP提高组】模拟赛B组
Summary
今天的题目也不算很难,唯一一道没做出来的题目是以前做过的,太不应该了。
Problem
T1 油滴扩展
题目大意
给你一堆点,你准备要在这么多的点当中滴油。你可以自己安排顺序,每次滴油,呈圆形扩散,知道碰到别的油或者边框。
想法
因为点的数目很小,可以直接暴力枚举顺序。可以用两点距离减去已有半径得出现有半径。
T2 数列
题目大意
给你一堆数,你可以删去其中某些数,使得下标和数相同的数最多。
想法
显然可以用DP
设f[i,j]表示当前选到了i这个数,前面删去了j个数
那么可以考虑删除当前的数
f[i,j]=f[i-1,j]
也可以考虑不删除当前的数
f[i,j]=f[i-1,j-1]+p
其中p表示当前数是否符合题目条件,是的话为1,反之为0
T3 软件开发
题目大意
有两个软件,每个软件分成m个模块,有n个工人,给出他们完成第一个软件,第二个软件的各个模块的天数,问最少多少天可以弄完。
想法
显然暴力可以设f[i,j,k]表示选到第i个,完成A,B软件模块个数分别为i,j。显然可以O(nm4)暴力来做
显然超时
我们可以二分天数,再用这个DP去判断,那么你只要枚举当前这个选A软件模块个数即可,选B的模块个数可以通过总天数减去A软件花费的天数。
也有更好的方法。
如果用一个数组去表示状态,显然浪费
我们设f[i,j]表示选到i个,完成A软件模块个数为j,其B软件能完成的最多个数。
显然,我们枚举一个当前选A软件模块个数,那么B软件模块个数同样求得出来。转移即可,方程如下
f[i,j]=f[i-1,j-k]+p
p是B软件能完成的个数,通过计算得出。
T4 黑匣子
题目大意
每次插入一个数到一个有序的序列中,让你求第k大
想法
可以维护两个堆,一个大根堆和一个小根堆
GET:i加1,然后输出Blackhox中第i小的数”
如果GET操作不是按顺序询问,而是随机询问,那么平衡树自然是首选。但是GET操作是按顺序询问的,平衡树未免有点大材小用…….
所以,我们建立两个堆,一个小根堆hmin,一个大根堆hmax。一开始读入数据时,将数据加入hmin。进行GET操作时,输出hmin的堆顶,并将其移入hmax。
这样,hmax中存有的,就是当前黑箱中最小的i个数。当最新读入的数x比hmax的堆顶y要小时,说明x在新黑箱最小的i个数之中,相当于y的位置就被x挤掉了。那么就将y移回hmin。若x比y要大,则将x加入hmin。
这种双堆的技巧,也适用于求多个连续区间的中位数。
同样可以用线段树和权值线段树来做,先全部排序,模拟插入过程,根据个数来判断第k大即可。
2017.08.08【NOIP提高组】模拟赛B组的更多相关文章
- 2017.1.16【初中部 】普及组模拟赛C组总结
2017.1.16[初中部 ]普及组模拟赛C组 这次总结我赶时间,不写这么详细了. 话说这次比赛,我虽然翻了个大车,但一天之内AK,我感到很高兴 比赛 0+15+0+100=115 改题 AK 一.c ...
- 2018.12.08【NOIP提高组】模拟B组总结(未完成)
2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...
- 2018.12.30【NOIP提高组】模拟赛C组总结
2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...
- ZROI提高组模拟赛05总结
ZROI提高组模拟赛05总结 感觉是目前为止最简单的模拟赛了吧 但是依旧不尽人意... T1 有一半的人在30min前就A掉了 而我花了1h11min 就是一个简单的背包,我硬是转化了模型想了好久,生 ...
- NOIP2017提高组 模拟赛15(总结)
NOIP2017提高组 模拟赛15(总结) 第一题 讨厌整除的小明 [题目描述] 小明作为一个数学迷,总会出于数字的一些性质喜欢上某个数字,然而当他喜欢数字k的时候,却十分讨厌那些能够整除k而比k小的 ...
- NOIP2017提高组 模拟赛13(总结)
NOIP2017提高组 模拟赛13(总结) 第一题 函数 [题目描述] [输入格式] 三个整数. 1≤t<10^9+7,2≤l≤r≤5*10^6 [输出格式] 一个整数. [输出样例] 2 2 ...
- NOIP2017提高组模拟赛 10 (总结)
NOIP2017提高组模拟赛 10 (总结) 第一题 机密信息 FJ有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的 ...
- NOIP2017提高组模拟赛 8(总结)
NOIP2017提高组模拟赛 8(总结) 第一题 路径 在二维坐标平面里有N个整数点,Bessie要访问这N个点.刚开始Bessie在点(0,0)处. 每一步,Bessie可以走到上.下.左.右四个点 ...
- NOIP2017提高组模拟赛 9 (总结)
NOIP2017提高组模拟赛 9 (总结) 第一题 星星 天空中有N(1≤N≤400)颗星,每颗星有一个唯一的坐标(x,y),(1≤x,y ≤N).请计算可以覆盖至少K(1≤K≤N)颗星的矩形的最小面 ...
- NOIP2017提高组模拟赛 7(总结)
NOIP2017提高组模拟赛 7(总结) 第一题 斯诺克 考虑这样一个斯诺克球台,它只有四个袋口,分别在四个角上(如下图所示).我们把所有桌子边界上的整数点作为击球点(除了4个袋口),在每个击球点我们 ...
随机推荐
- vue 引入Element组件
1.打开cmd,在当前目录中运行: npm i element-ui -S 2.src/main.js(红色的) import Vue from 'vue' import App from './Ap ...
- 在th中显示图片
从DataTable中获取值: foreach (DataRow dr in ((DataTable)ViewBag.bookInfoList).Rows) { <tr> <th c ...
- Ansible playbook 部署filebeat
- hosts: all tasks: - name: Copy Package copy: src=/usr/local/filebeat--linux-x86_64.tar.gz dest=/us ...
- [转] Mongoose 参考手册
Mongoose 参考手册 标签(空格分隔): MongoDB Mongoose 是什么? 一般我们不直接用MongoDB的函数来操作MongoDB数据库 Mongose就是一套操作MongoDB数据 ...
- Windows下Mongodb启动问题
把mongodb安装完,运行server出现问题
- 执行shell脚本提示“-bash: ./checkP.sh: /bin/sh^M: bad interpreter: No such file or directory”解决方法
在windows机器下新建了一个shell脚本如下
- Python 面向对象4-继承
#!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-08-05 # O ...
- P2661 信息传递 二分图的最小环
题目描述 有 nn 个同学(编号为 11 到 nn )正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 ii 的同学的信息传递对象是编号为 T_iTi 的同学. 游戏开 ...
- P1087 FBI树 二叉树
题目描述 我们可以把由“00”和“11”组成的字符串分为三类:全“00”串称为BB串,全“11”串称为I串,既含“00”又含“11”的串则称为F串. FBIFBI树是一种二叉树,它的结点类型也包括FF ...
- 20165319 《JAVA程序设计》第一周学习总结
教材内容学习总结 1.了解了基础的JAVA历史 2.学会了JDK的安装 3.学会了JAVA的基本应用 git的学习以及代码相关 1.学会了git在Windows系统上的安装以及linux系统的安装 2 ...