2019-8-10 考试总结

2019-8-10 考试总结,第1张

概述A. Blue 贪心,是个水题。 考试的时候打的代码时间复杂度有点高,得了$80$分。 正解: 维护一个优先队列,队首为编号最小的。 每次贪心,队首能走就走,然后替换队首为当前节点编号。 队首掉队后直接$pop$。 丑陋的代码: #include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#includ A. Blue

贪心,是个水题。

考试的时候打的代码时间复杂度有点高,得了$分。

正解:

维护一个优先队列,队首为编号最小的。

每次贪心,队首能走就走,然后替换队首为当前节点编号。

队首掉队后直接$pop$。

丑陋的代码:

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<queue>#define Maxn 1000050#define Reg register#define int long long#define _max(x,y) ((x)>(y)?(x):(y))using namespace std;int T,n,m,d,l,las,ans,A[Maxn],nex[Maxn];priority_queue<int,vector<int>,greater<int> > q;signed main(){    scanf("%lld",&T);    while(T--)    {        scanf("%lld%lld%lld%lld",&n,&m,&d,&l);        las=0;        for(Reg int i=1;i<=n;++i) scanf("%lld",&A[i]);        ans=0;        for(Reg int i=1;i<=m;++i) q.push(0);        for(Reg int i=1;i<=n;++i)        {            while(!q.empty()&&A[i]-A[q.top()]>d) q.pop();            if(q.empty()) break;            if(A[i]-A[q.top()]<=d)            {                q.pop();                q.push(i);            }        }        while(!q.empty())        {            if(l-A[q.top()]<=d) ++ans;            q.pop();        }        if(ans>=m) printf("Excited\n");        else printf("%lld\n",ans);    }    return 0;}
VIEw Code

 

B. Weed

 

C. Drink

 

总结:

考得还不是非常烂。

先溜了一眼三个题,发现$T2$又是个原题,而且学长讲过。

好吧,一点思路都没有。

调整心态。

开始看$T1$,想了一会儿,直接贪心就可以了。

但是好像常数有点大,基本上$O(nlogn)$,最坏情况下可能$n^2$,

然后拍了大点,发现时间也不是那么长,然后就没管它,拿了$分。

$T2$前50分其实很好拿,但是我就拿到$分。

$T3$题目都读不懂。。。

"顺时针旋转一圈"是个什么鬼,跟没转有什么区别。

理解了半天题意,然后教练员说有小样例。

模了一下,发现是旋转$度。

这才把暴力打完,复杂度基本$O(n^3)$,拿到$分。

考试时用暴力拍大点,然后时间很短,所以我感觉这道题可以暴力水过。

然后它数据范围错了。

最后+30+30=140$

没什么水平。。。

总结

以上是内存溢出为你收集整理的2019-8-10 考试总结全部内容,希望文章能够帮你解决2019-8-10 考试总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1005064.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存