• 9/8模拟赛


    又是一次不愿透露分数的模拟赛

    T1–Luogu P3045

    数据巨水,以下是错误操作,同时也是90分操作

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cstdlib>
    using namespace std;
    #define ll long long
    int n,k;
    ll m;
    struct node{ll p,c;}cow[50005];
    bool vis[50005];
    bool cmp(node a,node b){
        return a.c<b.c;
    }
    bool cmpp(node a,node b){
        return a.p<b.p;
    }
    
    int main(){
        freopen("coupons.in","r",stdin);
        freopen("coupons.out","w",stdout);   
        scanf("%d%d%lld",&n,&k,&m);
        memset(vis,false,sizeof(vis));
        for(int i=1;i<=n;i++){
            scanf("%d%d",&cow[i].p,&cow[i].c);
        }
        sort(cow+1,cow+1+n,cmp);
        int ans=k;
        ll sum=0;
        for(int i=1;i<=k;i++)sum+=cow[i].c,vis[i]=1;
        sort(cow+1,cow+1+n,cmpp);
        int o=1;
        while(sum<m){
            if(!vis[o]) sum+=cow[o].p,ans++;
            o++;
        }
        cout<<ans<<endl;
    
        return 0;
    }

    T2—Luogu P1849

    啥?这是SPFA?图论不会……思路是bfs+dp,听老师讲才知道这竟然是spfa……

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    using namespace std;
    bool map[1005][1005],vis[1005][1005]; 
    int ans[1005][1005],q1[1000005],q2[100005];
    int qwq[4]={1,-1,0,0};
    int qaq[4]={0,0,1,-1};
    int main(){
        freopen("tractor.in","r",stdin);
        freopen("tractor.out","w",stdout);   
        int n,x,y,a,b;
        scanf("%d%d%d",&n,&x,&y);
        while(n--){
            scanf("%d%d",&a,&b);
            map[a][b]=1;
        }
        for(int i=0;i<=1001;i++)//从0开始啊啊啊,好久才找出错来qaq 
        for(int j=0;j<=1001;j++)  ans[i][j]=19260817;
        q1[0]=x,q2[0]=y;
        vis[x][y]=1;ans[x][y]=map[x][y];
        int head=0;int tail=1;
        while(head!=tail){
            int xx=q1[head];int yy=q2[head]; head=(head+1)%100000;
            for(int i=0;i<=3;i++){
                int xxx=xx+qwq[i];int yyy=yy+qaq[i];
                if(xxx>=0 && xxx<=1001 && yyy>=0 && yyy<=1001){
                    if(ans[xxx][yyy]>ans[xx][yy]+map[xxx][yyy]){
                        ans[xxx][yyy]=ans[xx][yy]+map[xxx][yyy];
                        if(!vis[xxx][yyy]){
                            vis[xxx][yyy]=1;
                             tail=(1+tail)%100000;
                            q1[tail]=xxx;q2[tail]=yyy;
                        }
                    }
                }
            }
            vis[xx][yy]=0;
        }
        cout<<ans[0][0]<<endl;
        return 0;
    }

    T3–Luogu P3054

    第一反应就是【追及问题】,算出每头牛跑到了第几圈的哪个位置。
    套圈有两种情况,不到一整圈时不能算。
    所以想到求排名和余数位置的逆序对数量即可。

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    #define ll long long
    int n,c,l;
    ll temp,maxn,m;
    ll v[100005],e[1000005];
    struct node{
        ll s,t;
    }a[100005];
    bool cmp(node a,node b){
        if(a.s!=b.s)return a.s<b.s;
        return a.t<b.t;
    }
    void update(ll x){
        for(;x<=m;x+=(x&-x))e[x]++;
    }
    ll question(ll x){
        ll ret=0;
        for(;x>=1;x-=(x&-x))ret+=e[x];
        return ret;
    }
    
    
    int main(){
        freopen("running.in","r",stdin);
        freopen("running.out","w",stdout);   
        scanf("%d%d%d",&n,&l,&c);
        m=1e6;
        for(int i=0;i<n;i++){
            scanf("%lld",&v[i]);
            maxn=maxn>v[i]?maxn:v[i];
        }
        for(int i=0;i<n;i++){
            a[i].s=v[i]*l/maxn;
            a[i].t=v[i]*l%maxn;
        }
        sort(a,a+n,cmp);
        ll ans=0;
        for(int i=0;i<n;i++){
            ans+=i*a[i].s-temp-question(m)+question(a[i].t);
            temp+=a[i].s;
            if(a[i].t)update(a[i].t);
            }       
        cout<<ans<<endl;
    
        return 0;
    } 
    
  • 相关阅读:
    Java创建多线程的方法
    Spring Cloud 学习笔记 来自csdn
    Java线程退出
    Java线程的中断与插入
    Java守护线程
    Linux安装jdk
    内部类
    枚举,包类型
    jenkins
    设计模式之装饰者模式
  • 原文地址:https://www.cnblogs.com/erutsiom/p/9905153.html
Copyright © 2020-2023  润新知