ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【2019.10.04】NOIP2019模拟训练题

2019-10-04 14:56:44  阅读:264  来源: 互联网

标签:ch return 04 read ll ea NOIP2019 2019.10 ans


总结

T1 想的时间太久了(1h30min),思路是完全正确的,但对dp本身理解的还不够,以为是错的没打。

T2 贪心(都算不上吧...模拟可能更接近它的本质)就直接过了,没用二分。30min左右就过了。

T3 10分应该能拿到。卡在T1上所以完全抛掉了。

总的来说还是要多刷题多总结,考试的时候要先拿好拿的分,部分分要拿到,不要在一道题上花太久时间。

 

T1.

???我怎么这道题都没打出来。我好菜。

???我怎么思路是对的没去打。我好菜。

果然还是 自己动手拿分就跑

代码:

 

T2.

(拿完部分分就跑)40分的特殊点好像很好拿的样子→(突然发现)Ci=0的情况考虑下Ci非零会被淹死不就可以了吗,时间复杂度不会算,80分总是有的吧→(考完后)听说要用二分完了我挂了→(看到成绩)AK了??

直接丢代码:

#include<bits/stdc++.h>
#define For(i,l,r) for(int i=l;i<=r;i++)
#define DFor(i,r,l) for(int i=r;i>=l;i--)
#define ll long long
#define ri register int
using namespace std;
const int M=1e5+5;
ll n,l,c[M],ans,wall,ea[M],cnt=1;
bool fb,fc;
struct node{
    ll a,b,u;
}e[M];
inline ll read(){
    ll f=1,sum=0;
    char ch=getchar();
    while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
    while(isdigit(ch)){sum=(sum<<1)+(sum<<3)+(ch^48);ch=getchar();}
    return f*sum;
}
inline ll cmpa(node x,node y) {return x.a>y.a;}
inline ll cmpp(node x,node y) {return x.u==y.u?x.a<y.a:x.u>y.u;}
inline ll cmpea(ll x,ll y) {return x>y;}
int main(){
    freopen("climb.in","r",stdin);
    freopen("climb.out","w",stdout);
    n=read(),l=read();
    For(i,1,n){
        e[i].a=read();e[i].b=read();e[i].u=e[i].a-e[i].b;
        ea[i]=e[i].a;
        if(e[i].b) fb=1;
    }
    For(i,1,n){
        c[i]=read();
        if(c[i]) fc=1;
    }
    if(!fb){//no fall
        sort(e+1,e+n+1,cmpa);
        For(i,1,n){
            ans+=e[i].a;
            wall+=c[i];
            if(ans<0){
                printf("-1");
                return 0;
            }
            if(ans>=l){
                printf("%d",i);
                return 0;
            }
            if(ans<=wall){
                printf("-1");
                return 0;
            }
        }
        printf("-1");
        return 0;
    }
    if(!fc){//no wall
        sort(e+1,e+n+1,cmpp);
        sort(ea+1,ea+n+1,cmpea);
        For(i,1,n){
            if(ans<0){
                printf("-1");
                return 0;
            }
            if(ans+ea[1]>=l){
                printf("%d",i);
                return 0;
            }
            ans+=e[i].u;
            if(ea[1]==e[i].a){
                ea[1]=ea[++cnt];
            }
        }
        printf("-1");
        return 0;
    }
    sort(e+1,e+n+1,cmpp);
    sort(ea+1,ea+n+1,cmpea);
    For(i,1,n){
        if(ans+ea[1]>=l){
            printf("%d",i);
            return 0;
        }
        ans+=e[i].u;
        wall+=c[i];
        if(ans<=wall){
            printf("-1");
            return 0;
        }
        if(ans<0){
            printf("-1");
            return 0;
        }
        if(ea[1]==e[i].a){
            ea[1]=ea[++cnt];
        }
    }
    printf("-1");
    return 0;
}
View Code

 

标签:ch,return,04,read,ll,ea,NOIP2019,2019.10,ans
来源: https://www.cnblogs.com/jian-song/p/11622101.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有