zoukankan      html  css  js  c++  java
  • BZOJ 刷题记录 PART 5

    拖了好久才写的。

    【BZOJ2821】接触分块大法。这道题略有点新颖。首先我们先分块。然后统计每块中每一个数出现的个数。

    以下是联立各个方块,预处理出第I个方块到第J个方块出现正偶数次数的个数。

    for (i=1;i<=s;i++)
      {
        for (j=i;j<=s;j++)
        {
          sum[i][j]=sum[i][j-1];
          for (k=a[j].l;k<=a[j].r;k++)
          {
            temp[data[k]]++;
            if (!(temp[data[k]]&1)) sum[i][j]++;
            else if (temp[data[k]]>1) sum[i][j]--;
          }
        }
        memset(temp,0,sizeof(temp));
      }

    事实上查询的时候也是和上面类似的。

    注意统计零散的点时要和已经预处理好的整数块发生关系。

    【BZOJ1189】还是比較水的。先二分一个答案,然后拆点构图。

    【BZOJ3060】这是想法题。

    ——哈哈,看题解的。首先,一条边上假设两个点的编号都大于K。显然我们不须要删。那么倒着做,先所有拆开。然后先把上述的边加上去(并查集)。遇到连上标号小于等于K的点的边——假设两端都在同一连通块。那么这条边必须删;否则合并连通块。

    【BZOJ1306】T到要死。!SKYDEC大爷推荐我做。感觉数据范围还是挺小的。然后就被爆了。

    首先,有些剪枝是必须加的。比方当前的队伍的分数加上之后比赛*3仍然小于要求的分数就退出等等。

    狂T。后来我预处理了一下,用cut[I][J]表示第i个队伍在第J场的时候后面还有属于他的几场。

    for (i=1;i<=n;i++)
      {
        for (j=m;j;j--)
          cut[i][j]=cut[i][j+1]+(beat[j].u==i)+(beat[j].v==i);
        for (j=1;j<=m;j++)
          cut[i][j]=cut[i][j+1];
      }

    还是T。后来我发现我是枚举到终于才推断全部队是否合法。事实上在每一队的最后一场比赛时我们就能够推断了。A。

    【BZOJ1832】真是奇怪的LCA。開始用TARJAN的。后来发现最后验证的时候还要LCA!果断转倍增。

    【BZOJ2724】分块好题。

    权限题啦啦啦。

    【BZOJ1965】数论还是要好好学。搞了半天总算搞懂了扩欧求解同余方程。

    LL extend_gcd(LL a,LL b,LL &x,LL &y)
    {
      if (b==0){x=1;y=0;return a;}
      LL temp=extend_gcd(b,a%b,x,y);
      LL t=x;x=y;y=t-a/b*y;return temp;
    }
    int main()
    {
      scanf("%lld%lld%lld",&B,&b,&n);B++;
      A=pow();
      extend_gcd(A,B,x,y);
      x=x*n%B;
      while (x<=0) x+=B;
      while (x>B) x-=B;
      printf("%lld",x);
      return 0;
    }

    【BZOJ1966】据说是什么AC自己主动机什么的?反正我直接DP使过了。耶!

    【BZOJ1967】我用奇怪的贪心使。(见骗分导论)还打了一个点。

      for (i=1;i<=n;i++)
      {
        t1=(sx>x[i])&&(sy>y[i])&&(sx<x[i]+c[i])&&(sy<y[i]+c[i]);
        t2=(tx>x[i])&&(ty>y[i])&&(tx<x[i]+c[i])&&(ty<y[i]+c[i]);
        if (t1^t2) ans++;
      }

    【BZOJ2287】背包。

  • 相关阅读:
    Linux下并发网络设计之I/O复用
    嵌入式系统 Boot Loader
    linux下curl编程
    c语言中-----分配内存函数
    关于typedef之四种用途 和 两个陷进
    Libcurl安装及编译
    linux线程之pthread_join和pthread_detach
    Linux系统源码安装过程中的prefix选项
    linux之线程之互斥
    linux之线程
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7025840.html
Copyright © 2011-2022 走看看