zoukankan      html  css  js  c++  java
  • noip2019(普及组) 公交换乘 (不剪枝见祖宗题)

    luogu题目传送门

    其实就是一道普普通通的模拟题,但是1e5的数据让很多不看数据范围和不加优化的小伙伴们莫名其妙的T了。(包括我

    因此,论减枝的重要性!!

    于是乎,最重要的一点也就出来了。早就过期的票还有什么要搜的必要呢!!

    #include<bits/stdc++.h>
    using namespace std;
    #define N 666666
    
    struct piao{
        int t,price,vis;
    } p[N];
    
    namespace work{
        int ans = 0,cac = 0;
        int last = 1;
    
        int read(){//数据有点大,打快读保险一点
            char c;
            int x = 0,s = 1;
            c = getchar();
            while(c < '0' || c > '9'){
                if(c == '-')s = -1;
                c = getchar();
            }
            while(c >= '0' && c <= '9')x = x * 10 + c - '0',c = getchar();
            return x * s;
        }
    
        void main(int n){
            for(int i = 1;i <= n;i++){
                int time,price,a;
                a = read(),price = read(),time = read();
                ans += price;
                if(a == 0){
                    p[++cac].price = price;
                    p[cac].t = time;
                }
                if(a == 1){
                    for(int i = last;i <= cac; i++){
                        if(time - p[i].t > 45)last = i;//这句话最重要,把早就超时的全部剪掉,剪掉这一部分也足够AC了
                        if(!p[i].vis && time - p[i].t <= 45 && p[i].price >= price){
                            ans -= price;
                            p[i].vis = 1;//已经使用过了,不再使用
                            break;
                        }
                    }
                }
    
            }
            printf("%d",ans);
        }
    }
    
    int main(){
        int n = work::read();
        work::main(n);
        return 0;
    }

    (虽然不考普及组,但是水水模拟题还是可以的)

  • 相关阅读:
    限制CPU个数
    delphi 不阻塞提示对话框
    快捷打开vnc 某个连接
    delphi ShellExecute 传递多个参数
    JS对JSON的操作总结 (转)
    Windows Server 2008 IIS下部署网站出现的问题
    SqlParameter序列化的问题
    求解,工作流点通过时,弹出窗口让用户录入审核意见
    oracle调度
    c# 多态
  • 原文地址:https://www.cnblogs.com/wondering-world/p/12642418.html
Copyright © 2011-2022 走看看