zoukankan      html  css  js  c++  java
  • 【做题记录】USACO gold * 50(第一篇)

     

     orz xhk

    5/50

    1597: [Usaco2008 Mar]土地购买

      $ f[i]=min(f[j]+x[i]*y[j+1]) $ 然后斜率优化

    1699: [Usaco2007 Jan]Balanced Lineup排队

      silver里好像做过?

      静态RMQ直接上st表

    1578: [Usaco2009 Feb]Stock Market 股票市场

      看成完全背包。对于每天都搞一下完全背包

    1574: [Usaco2009 Jan]地震损坏Damage

      语文题QwQ。大力搜索,代码:

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=30500, INF=1e9;
    int  n, vis[maxn];
    vector<int> G[maxn];
    void Addedge(int u,int v ){
        G[u].push_back(v); G[v].push_back(u);
    }
    int ans;
    int dfs(int x){ 
        vis[x]=1; ans--;
        for(int i=0;i<G[x].size();i++){
            int v=G[x][i];
            if(!vis[v]){
                vis[v]=1; dfs(v);
            }
        }
    }
    int main(){
        int a,b,p,c;
        scanf("%d%d%d",&n,&c,&p); ans=n;
        while(c--){
            scanf("%d%d",&a,&b); Addedge(a,b);
        }
    //    vis[1]=1;
        while(p--){
            scanf("%d",&a); // vis[a]=1;
            for(int i=0;i<G[a].size();i++) vis[G[a][i]]=1;
        }
        dfs(1);
        printf("%d
    ",ans);
        return 0;
    }
    /*
    4 5 1
    1 2 
    2 3 
    3 4 
    2 4
    1 3
    3 
    
    
    */
    View Code

    1577: [Usaco2009 Feb]庙会捷运Fair Shuttle

      数据范围看出来肯定是带个log的。。。。

      按照右端点从小到大排序,然后从前往后选取,要用线段树维护一下区间最大值。

    #include <bits/stdc++.h>
    #define ls o<<1,l,mid
    #define rs o<<1|1,mid+1,r
    using namespace std;
    const int maxn=5e5, INF=1e9;
    struct Node{
        int l,r,num;
    }a[maxn];
    bool cmp(Node a,Node b){
        return (a.r<b.r || (a.r==b.r && a.l>b.l));
    }
    int v[maxn],lazy[maxn];
    void pushdown(int o,int l,int r){
        v[o<<1]+=lazy[o]; v[o<<1|1]+=lazy[o];
        lazy[o<<1]+=lazy[o]; lazy[o<<1|1]+=lazy[o];
        lazy[o]=0;
    }
    int query(int o,int l,int r,int L,int R){
        if(l>R || r<L) return -1;
        if(l>=L && r<=R) return v[o];
        pushdown(o,l,r);
        int mid=l+r>>1;
        return max(query(ls,L,R),query(rs,L,R));
    }
    void add(int o,int l,int r,int val,int L,int R){
        if(l>R || r<L) return;
        if(l>=L && r<=R){v[o]+=val,lazy[o]+=val;return;}
        int mid=l+r>>1;
        add(ls,val,L,R); add(rs,val,L,R);
        v[o]=max(v[o<<1],v[o<<1|1]); 
    }
    
    int main(){
        int k,n,c; scanf("%d%d%d",&k,&n,&c);
        for(int i=0;i<k;i++){
            scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].num); a[i].r--;
        }
        sort(a,a+k,cmp); 
        int Ans=0;
        for(int i=0;i<k;i++){
            int ans=min(c-query(1,1,n,a[i].l,a[i].r),a[i].num);
        //    printf("----- %d  %d
    ",query(1,1,n,a[i].l,a[i].r),ans);
            Ans+=ans;
            add(1,1,n,ans,a[i].l,a[i].r);
        }
        printf("%d
    ",Ans);
        return 0;
    }
    View Code
  • 相关阅读:
    使用Apache CXF开发WebServices服务端、客户端
    javascript 获取项目根路径
    js密码的校验(判断字符类型、统计字符类型个数)
    JS正则表达式基础总结
    mysql之视图
    mysql之触发器trigger(1)
    mysql之触发器before和after的区别(2)
    MySQL之左连接与右连接
    @Resource和@Autowired的区别
    java计时器
  • 原文地址:https://www.cnblogs.com/noblex/p/8516805.html
Copyright © 2011-2022 走看看