上午写了一个二分题,然后卡住了,卡在了最后一个题上。。。。。。练习二还没做完,练习三开了QAQ
下午做的练习赛
一共a了三个题
poj2229 https://cn.vjudge.net/problem/30465/origin
poj3170 https://cn.vjudge.net/problem/17594/origin
poj2376 https://cn.vjudge.net/problem/10046/origin
poj2229
一个递推解的题,直接做肯定tle,先打表就ok了.
一、当n为奇数时,a[n]=a[n-1];
二、当n为偶数时有两种情况:
1、n=n-2+1+1;
2、n=n/2*2;
所以:a[n]=a[n-2]+a[n/2];
poj3170
你的角色从2出发,到3终止,但你要拿到一个4 给3,其中1不能走,0是可以走的路,问最短路的长度
可以两次BFS, 一次从起点2开始,记录每一个点到起点的最短距离,
第二次BFS从终点3开始,记录每一个点到终点的最短距离,最后遍历4的位置,取个最小距离之和
poj2376
所有的活必须在1~T天里完成,每头牛可以在a[i].begain~a[i].end时间内干活,现将活安排给牛去做,尽量安排最少的牛去完成。
就是贪心算法
以每头牛开始的时间为标准,从小到大为牛排序。然后,对于没有找过的牛,选取begin小于Max且end大于Max的最大区间(牛),直到end>=T为止。
一下午做了三个题,其中遇到了几个问题
第一个就是按位运算符来判断奇偶性
与运算,两个数同时为1的时候才为1,你可以随便取一个奇数,转成二进制最后一位肯定是1
比如:11 转成二进制
1 0 1 1
& 0 0 0 1
------------------
0 0 0 1
所以,奇数与1作与运算,结果肯定是1
第二个如何在不新建结构体的情况下用queue在同一时间存两个变量(这么表达好像不是很清楚)
今天才问度娘搜到的 pair<int,int >
pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。。
pair<string,int> p;
pair<int ,int > p;
pair<double,int> p;
都可以。。。
应用:如果一个函数有两个返回值 的话,如果是相同类型,就可以用数组返回,如果是不同类型,就可以自己写个struct ,但为了方便就可以使用 c++ 自带的pair ,返回一个pair,其中带有两个值。除了返回值的应用,在一个对象有多个属性的时候 ,一般自己写一个struct ,如果就是两个属性的话,就可以用pair 进行操作。。。
基本上就这样了,明天新专题差不多到线段树那块了,开荒去