二模 (5) day2
第一题:
有 N 个人顺时针围在一圆桌上开会,他们对身高很敏感。 因此决定想使得任意相邻的两人的身高差距最大值最小。 如果答案不唯一,输出字典序最小的排列,指的是身高的排列。N<=50
解题过程:
1.最大值最小的问题直接想到二分答案。。然后就变成判断环的问题,但是想不到什么好的算法,就直接爆搜了。。事实证明全部超时。。
2.正解:首先有一个贪心原则:即最高的和最矮的人肯定不会排到一起,然后他们之间的人必定是递增或者递减的(最矮的递增到最高的,然后最高的递减到最矮的),可用交换的方法证明。那么先把人按高度从小到大排序,就变成一个双线dp问题。

F[i][j](i<j)表示 一个人在i,一个人在j,且1~j这些点都走过的最优解。
当i+1=j时,F[i][j]=min{max(F[k][i],dist[k][j])}; ( k<i )
当i+1<j时,F[i][j]=max(F[i][j-1],dist[j-1][j]);
ans=min{max(F[i][n],dist[i][n])};
最后输出答案也是个难点,一开始想到记录F[i][j]的转移方式然后递归输出,但是实际上是没法确定两个人的顺序的,也就是没法保证字典序最小。
实际上可以贪心求解。。先模拟从maxH到minH的路径,倒着走,从minH出发,那么每次要走的尽可能远。。剩下的点就是minH到maxH的路径了。
初始得分0分。
第二题:
题目描述:
在直角坐标系上,有 N 个边平行于坐标轴的矩形。你的任务是把其中的 K 个矩形染色,使按次序放下后,可以看见的有色面积最大。可看见的意思就是这一部分没有被后面的矩形覆盖。你的答案是返回 K 个整数,表示你染色的是哪 K 个矩形。如果有多种答案,输出字典序最小的。
算法:(离散化/矩形切割/线段树)
第一次写矩阵切割,记录一下大致思路。
首先有个上浮的思想,假设有N个矩形,(倒序放置矩形)第一个矩形深度为1,第K个矩形深度为K。每放一个矩形,就想象让往上面浮,每次碰到之前放过的矩形,就让他断裂,分成几个矩形,继续上浮(递归实现)。。
算法实现:
1.先判断相离的情况,让矩形一直上浮直到到了顶层或者碰到另外一个不相离的矩形。
2.根据两个矩形的位置关系切割,然后分成多个小矩形继续上浮。
第三题:
神牛 LXX 昨天刚刚满 18 岁,他现在是个成熟的有为男青年。他有 N 个 MM,分别从 1 到 N 标号。这些 MM 有些是互相认识的。现在,LXX 为了处理和 MM 们复杂的关系,想把他们划分成尽量多的集合,要求任意两个属于不同集合的 MM 都必须互相认识。这样方便交流。现在 LXX 想知道最多可以分成多少个集合,每个集合的人数是多少。1≤N≤100000,1≤M≤2000000。
解题过程:
1.首先如果两个元素之间没有边相连,那么他们肯定只能在同一个集合了。这是此题所有算法的基础。。。于是果断地写了个并查集,然后用邻接矩阵存边,能过N<=3000的数据吧。 于是拿到了50分左右。
2.正解:M相对于N来说还是比较小的,那么可以找出边最少的点K,找出和它没有相连的点合并到一个集合(还是并查集实现,O(M)的时间扫一遍所有边)。这样就可以把很多点缩成一个点,最坏的情况也就是N=2000,M=2000000左右的时候,不能缩点,那么点还是2000个,所以缩点后的点就变成了最多2000个,然后用1中的算法实现即可。。
表示被这道题虐爆了。。没有超纲的东东,只有想不到的巧方法。。
二模 (5) day2的更多相关文章
- 二模 (8) day2
第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- 二模 (9) day2
第一题: 题目大意:求满足条件P的N位二进制数的个数.P:该二进制数有至少3个0或者3个1挨在一起.. N<=20000 解题过程: 1.一开始直接写了个dfs把表打了出来,不过没发现什么规律, ...
- 二模 (16) day1&day2
第一题:题目大意: 数列a[0]=a[1]=1, a[n]=a[n-2]*a[n-1]*n,求a[n]的因子个数 mod 1000000007. n<=1000000 解题过程: 1.递推式还 ...
- 二模 (15)day2
第一题:Alice和Bob两个人正在玩一个游戏,游戏有很多种任务,难度为p的任务(p是正整数),有1/2p 的概率完成并得到2p−1分,如果完成不了,得0分.一开始每人都是0分,从Alice开始轮流做 ...
- 二模 (13)day2
第一题: 题目大意: 给出一个N*M的矩阵,定义一条路径的权值为经过的所有点权值的最大值.求一条从第一行到第N行的路径,使得路径权值最小. N,M<=1000 矩阵内点的权值小于1000. 解题 ...
- 又是一个二模02,不过day2
话说比较简单.除了第三题不会写平衡树啊你妹!!边做边写吧. 机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链 ...
- 二模Day2题解
小明搬家 题目描述 小明要搬家了,大家都来帮忙. 小明现在住在第N楼,总共K个人要把X个大箱子搬上N楼. 最开始X个箱子都在1楼,但是经过一段混乱的搬运已经乱掉了.最后大家发现这样混乱地搬运过程效率太 ...
- 二模 (12)day2
第一题: 题目大意: 有N颗糖,两个人轮流取,每次只能取质数颗,不能取的输.求先取者若必胜,最少需要多少步胜利.(N<=10000) 解题过程: 1.看到N的范围比较小,先打个素数表,然后dp即 ...
- 二模 (11) day2
第一题: 题目大意: 有一本n个单词的字典,其中每个单词的长度不超过4且大于0.现在给你一篇文章,文章中没有分隔符,只有小写字母.现在需要你修改最少的字母,使文章(长度为m 是由字典中的单词构成. n ...
随机推荐
- 【夯实Mysql基础】记一次mysql语句的优化过程!
1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同 ...
- 可重入锁 & 自旋锁 & Java里的AtomicReference和CAS操作 & Linux mutex不可重入
之前还是写过蛮多的关于锁的文章的: http://www.cnblogs.com/charlesblc/p/5994162.html <[转载]Java中的锁机制 synchronized &a ...
- Android 上千张图片的列表滑动加载
一般项目中图片加载用的比较多的是ImageLoader 但是需求自己配置一些参数 上手有些复杂 对于手机图库中有上千张图片需要加载时 一个使用性能很好的库Glide可以解决 效果图如下 滑动非常流畅 ...
- linux 文件类型 文件权限
linux中常见的文件类型有: “—”表示普通文件 :-rw-r--r-- 1 root root 41727 07-13 02:56 install.log “d”表示目录 :drwxr-xr- ...
- [css] 【转载】 精简高效的CSS命名准则/方法
原文链接:http://www.zhangxinxu.com/wordpress/2010/09/%E7%B2%BE%E7%AE%80%E9%AB%98%E6%95%88%E7%9A%84css%E5 ...
- 转:程序员最值得关注的10个C开源项目
程序员最值得关注的10个C开源项目 1. Webbench Webbench 是一个在 linux 下使用的非常简单的网站压测工具.它使用 fork ()模拟多个客户端同时访问我们设定的 URL,测试 ...
- JAVA获取当前系统时间System.currentTimeMillis()
System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,Date()其实就是相当于Date(System.currentTimeMi ...
- Hbase之插入数据
/** * Created by similarface on 16/8/17. */ import org.apache.hadoop.conf.Configuration; import org. ...
- 树 - 从零开始实现by C++
参考链接:数据结构探险之树篇
- Machine Learning - 第5周(Neural Networks: Learning)
The Neural Network is one of the most powerful learning algorithms (when a linear classifier doesn't ...