首页 > 其他 > 详细

HIHOcoder编程总结

时间:2018-01-14 16:18:31      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:一个   多少   限制   整数   pre   有一个   其中   现在   总结   

[Offer收割]编程练习赛44

对于第一题题目1 : 扫雷游戏,首先要想清楚思路,虽然是暴力算法,但是这八个方向要自己把坐标写正确,不要慌乱,自己写的时候就写错了一个,第二个就是判断的时候,j + 1>=0,这种是显然的事情,应该是j +1 < N,写草稿也要认真。

还有一个非常非常大的错误。

int N = 0;
cin >> N;    
vector<string> input;
input.resize(N);
for (int i = 0; i < N; ++i) {
    string tmp;
    cin >> tmp;
    input.push_back(tmp);
}

前面resize直接导致input有N个空串,后面再压入就会导致有2N个字符串。

 

第三题:题目3 : 车队

时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
在一条单车道的公路上有N辆汽车行驶,从前向后第i辆车的最高速度是Vi。

所有车辆都会尽量保持最高速度行驶。不过由于只有单车道,所以当后方快车追上前方慢车后,无法超车,只能降速跟在慢车后面。  

于是经过足够长时间(足够后方快车追上前方慢车)的行驶后,某些车辆会聚成一队以相同的速度向前行驶。我们把这些聚成一队的车辆称为一个"车队"。不同车队之间的距离会越来越大。  

例如假设有5辆车,速度依次是[3, 5, 4, 1, 2],则经过足够长时间行驶后,第1、2、3辆会聚成一个车队,第4、5辆会聚成另一个车队。  

现在假设你可以"拿掉"其中一些车辆,但不能改变剩余的车辆的前后次序和最高速度。请计算最少"拿掉"多少辆车,可以使得剩余的车辆数目恰好等于剩余车辆经过足够长时间行驶后形成的车队数量。(换句话说每辆车单独一个车队)  

在上例中"拿掉"第一辆和第四辆之后,[5, 4, 2]会最终形成3个车队,满足条件。  

输入
第一行包含一个整数N。  

第二行包含N个整数V1, V2, ... VN。  

对于30%的数据,1 ≤ N ≤ 1000  

对于100%的数据,1 ≤ N ≤ 100000, 1 ≤ Vi ≤ 100000, Vi保证两两不同。

输出
一个整数表示答案。

样例输入
5  
3 5 4 1 2
样例输出
2

这题是一个最长上升子序列问题。开始自己马上不想就认为找到最长上升子序列和最长下降子序列就可以了,首先需要理解题目意思,应该是最后的答案是一个最长递降子序列,所以需要将vector进行反转,然后在进行求解最长递增子序列。

HIHOcoder编程总结

标签:一个   多少   限制   整数   pre   有一个   其中   现在   总结   

原文:https://www.cnblogs.com/dingxiaoqiang/p/8283416.html

(2)
(1)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号