清北学堂游记day1(这是补上昨天的,,)

在经历了空间向量和圆锥曲线的洗礼后,,我们lqyz坐着两辆小轿车逃到了这里,到的时候已经晚上七点了(还没有吃饭灰常饿饿饿饿饿)到了以后才发现都在考试,,第一题,,乍一看是个水题,不过理解错题意了,股票一天可以多次买卖,,于是第一题就炸了。第二题题如其名water,,一道数学题(这比算二面角的余弦值简单多了,,),第三题没有看懂题意(gg)得分100,,

第一题炒股票就是知道每一天股票的价格,每次最多持有一个股票,算出最多交多少钱

30分做法:枚举i,j,每次更新ans最小值

for(int i=1;i<=n;i++)
   for(int j=i+1;j<=n;j++)
      ans+=a[i]-a[j];

复杂度O(n^2)

60分:比如这样的一组价格:1 3 2 0 7 9

我们考虑最优的情况应该是从票价最低的那一天买入,那么一定从这一天后的某一天再卖出;

第四天的价格最低为0,所以我们从第四天买入一次,然后在这天之前最低价格是第一天1,从这一天买入,第二天是第四天之前价格最高的,卖出赚2元,从第四天买入,最后一天卖出,共赚2+9=11元

定义一个指针val记录1到n-1的最小值,每次检查一下a[i]-val是否比当前ans更优即可

ans=max(ans,a[i]-val);

val=min(a[i],val);

复杂度就降到了O(n)

100分做法:加入多次买卖。易得第i天买入第j天卖出等价于第i天到第j天每天进行一次买卖操作

for(int i=2;i<=n;i++)
   if(a[i]>a[i-1]
      ans+=a[i]-a[i-1];

第二题的杯子是由若干个上开口的圆柱体组成,外层圆柱直径大于内层,内层圆柱高度大于外层,问需要多少体积的水可以把这个几何体灌满水

对于前五个点,圆柱是按顺序给出的,每次增加的体积为

ans+=((c[i].d)*(c[i].d)*(c[i].h-c[i-1].h));

对于后五个点,圆柱体不按顺序给出,这时只需将这些圆柱sort一下就好啦

  sort(c+1,c+1+n,cmp);
bool cmp(re a,re b)
{
	return a.h

第三题不太懂,,直接放官方题解,,

清北学堂游记day1(这是补上昨天的,,)_第1张图片

清北学堂游记day1(这是补上昨天的,,)_第2张图片



你可能感兴趣的:(清北学堂)