zoukankan      html  css  js  c++  java
  • 解题:USACO13NOV Empty Stalls

    题面

    当然可以用并查集做,不过你需要按秩合并+路径压缩(才可能过),因为数据范围十分不友好......

    USACO的官方做法更为优秀。首先题目告诉我们牛们加入的前后顺序不影响结果(自己证明也很容易,显然两头牛到达一个房子最后的结果看起来是一样的)。所以我们不妨先把牛们都安排在它们喜欢的房子,然后$O(n)$扫描一遍模拟把它们放进对应的房子这个过程。因为第一次我们先扫到前面,可能后面一些牛之后又到了前面,所以要再扫一遍。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 const int N=3000005;
     6 int n,k,x,y,a,b,s;
     7 int cow[N],used[N];
     8 int main()
     9 {
    10     scanf("%d%d",&n,&k);
    11     for(int i=1;i<=k;i++)
    12     {
    13         scanf("%d%d%d%d",&x,&y,&a,&b);
    14         for(int j=1;j<=y;j++) cow[(1ll*a*j+b)%n]+=x;
    15     }
    16     for(int i=0;i<n;i++)
    17         {s+=cow[i]; if(s) s--;}
    18     for(int i=0;i<n;i++)
    19     {
    20         s+=cow[i]; if(s) s--;
    21         else {printf("%d",i); break;}
    22     }
    23     return 0;
    24 }
    View Code
  • 相关阅读:
    KMP算法
    IEEE754 32位浮点数表示范围
    银行家算法
    字符串类
    栈类
    稀疏数组类
    队列类
    多维数组类
    单向链表类
    哈希表类
  • 原文地址:https://www.cnblogs.com/ydnhaha/p/9757317.html
Copyright © 2011-2022 走看看