省赛刷题训练(二)
UVA 1152
一个简单的二分题目,将a数组和b数组排个序,c数组和d数组排个序,然后对第二个数组进行二分查找。这里要找的是个数,所以upper_bound和lower_bound一相减然后加起来就是答案。
1 | #include <iostream> |
HDU 1058
再一次做感觉思路清晰了挺多,第一次做没有理解本质,再一次做的时候,想到每一个数其实都可以通过它前面的数字乘积得到。2 3 5 7作为乘积的一个参数,另一个参数就是前面已经出现过的数字。比如8,通过2 * 4得到,2是一个因子,4是因为前边已经出现过了。
1 |
|
HDU 1022
模拟火车的进出站。注意栈为空就要停止。
1 |
|
HDU 3823
需要注意的是输入的A和B的大小关系不一定,素数打表范围要开的很大。第一次WA是因为没有搞懂什么是prime neighbor . 比如说输入2 和 4这两个数字,我们找到了1,因为1 + 2 和 1 + 4是素数,同时 3 和 5 还是素数相邻。 这样的话我们最终在枚举的时候,就枚举相邻的两个素数就行了,满足条件的话就输出对应的数字。而不是从1遍历任意一个数字,看这个数字是否满足条件。
1 |
|