2017/8/15训练日记

来源:互联网 发布:淘宝上什么祛痘产品好 编辑:程序博客网 时间:2024/05/20 06:51

上午写了一个二分题,然后卡住了,卡在了最后一个题上。。。。。。练习二还没做完,练习三开了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 进行操作。。。

基本上就这样了,明天新专题差不多到线段树那块了,开荒去吐舌头