原本要求的一天一总结,由于前几天可能忘了关于总结的事,所以现在集中总结一下(2018/8/9 22:50)
时间:2018/8/6-----2018/8/6
练习内容:二分、分治、贪心;

 8/6,二分其实在上半年学习数据结构的时候就有讲过,只不过在当时没有熟练掌握。没记错的话,当时学得二分算法是关于一些普通的二分查找,并没有深入研究。
             说说今天学的什么:二分查找、二分法求方程根、练习”openjudge 百练 2456“ 牛栏问题,这题真正解决是在今天下午,花了一下午时间终于把它给弄明白了,但是不巧的是在OJ上测试时总是RunTime
    Error【捂脸】,测试了各种我能想到的案例,预估是数据溢出;
             收获:在使用二分法时注意:最好用L+(R-L)/2代替(L+R)/2以避免(L+R)过大溢出;![避免(L+R)过大溢出(https://img-blog.csdn.net/20180809231225296?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2N3eXAxODgwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)




     8/7、8/8,这两天学的分治和贪心,其实这三天学的有关二分的在上半年数据结构中的算法部分都有讲过,这次主要以复习、巩固为主,主要着重复习了快速排序,归并基本没看,看能不能找时间补回来,有点怀疑自己会忘记【捂脸】。
     get了一个新技能:学会使用sort()函数

ACM集训日志18/8/6-18/8/9-LMLPHP
sort(room, room + n); ->表示从0号排到n-1,n为需要排的元素个数, room为需要排序的那个数组,一般默认从小到大排序,如果需要从大到小则需要在sort里再加一个函数,调用三个参数的sort:sort(begin,end,compare)就成了,compare需要自己编写。
bool compare(int a,int b)
{
return a<b; //升序排列,如果改为return a>b,则为降序

}
get的另一种排序方式:OJ 百练 4110为例
在结构体中的
#include
#include
#include
using namespace std;
const double eps = 1e-6;
#define MAXSIZE 110

struct Candy{
int v, w;
bool operator < (const Candy & c) const
{return double(v) / w - double(c.v) / c.w > eps;}
}candies[MAXSIZE];

//这个是把结构体中储存的V与W的比值从大到小排序

struct Candy{
int v, w;
bool operator < (const Candy & c) const
{return double(v) / w - double(c.v) / c.w < eps;}
}candies[MAXSIZE];
//这个是把结构体中储存的V与W的比值从小到大排序
加粗部分是可更改部分,基本按照这个格式写就行;

关于它的调用:sort(candies, candies + n);//按礼物的价值 /重量比从大到小依次选 取礼物,尽可能多地装,直到达总重量 w

10-07 17:18