zoukankan      html  css  js  c++  java
  • 20140711总结

      第一题,傻逼题。但是忘判平方了。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 int xx[4000001];
     6 inline void work(int n)
     7 {
     8     for(int i=1;i*i<=n;i++)
     9     {
    10         if(n%i==0)
    11         {
    12             if(i*i==n) xx[n/i]++;
    13             xx[i]++;
    14         }
    15     }
    16 
    17 }
    18 char k;
    19 inline int getint()
    20 {
    21     int ans=0;
    22     k=getchar();
    23     while(k=='
    '||k==' ')
    24         k=getchar();
    25     while(k!='
    '&&k!=' ')
    26     {
    27         ans=ans*10+(int)k-(int)'0';
    28         k=getchar();
    29     }
    30     return ans;
    31 }
    32 int ans=0;
    33 int main()
    34 {
    35     freopen("set.in","r",stdin);
    36     freopen("set.out","w",stdout);
    37     int N=getint();
    38     for(int i=1;i<=N;i++)
    39     {
    40         k=getchar();
    41         getchar();
    42         if(k&1)
    43         {
    44             int t=getint();
    45             work(t);
    46         }
    47         else
    48         {
    49             int t=getint();
    50             ans^=xx[t];
    51         }
    52         
    53         
    54     }
    55     printf("%d
    ",ans);
    56 }
    View Code

      第二题,并查集,详见食物链。

     1 #include<cstdio>
     2 #include<string>
     3 #include<cstring>
     4 using namespace std;
     5 long long father[3000030];
     6 long long Find(long long x)
     7 {
     8     if(father[x]==x)
     9         return x;
    10     return father[x]=Find(father[x]);
    11 }
    12 bool Same(long long L,long long R)
    13 {
    14     if(Find(L)==Find(R))
    15         return true;
    16     return false;
    17 }
    18 void Union(long long L,long long R)
    19 {
    20     long long fL,fR;
    21     fL=Find(L);
    22     fR=Find(R);
    23     if(fL==fR)
    24         return;
    25     father[fL]=fR;
    26 }
    27 int main()
    28 {
    29     long long n,k,ans=0;
    30     scanf("%I64d%I64d",&n,&k);
    31     for (int i=1;i<=n*3;i++)  //扩大为三个节点
    32         father[i]=i;
    33     for (int i=1;i<=k;i++)
    34     {
    35         long long d,x,y;
    36         scanf("%I64d%I64d%I64d",&d,&x,&y);
    37         if (x>n||y>n) ans++;
    38         else if (d!=1&&d!=2) ans++;
    39         else if (d==2&&x==y) ans++;
    40         else if (d==1) //x,y 同类时
    41         {
    42             if (Same(x,y+n)) ans++; //x吃y
    43             else if (Same(x+n,y)) ans++; //y吃x
    44             else //合并操作
    45             {
    46                 Union(x,y);
    47                 Union(x+n,y+n);
    48                 Union(x+n+n,y+n+n);
    49             }
    50         }
    51         else  //x吃y时
    52         {
    53             if (Same(x,y)) ans++; //x,y同类
    54             else if (Same(x+n,y)) ans++; //y吃x
    55             else
    56             {
    57                 Union(x,y+n);
    58                 Union(x+n,y+n+n);
    59                 Union(x+n+n,y);
    60             }
    61         }
    62     }
    63     printf("%I64d
    ",k-ans);
    64     return 0;
    65 }
    View Code

      第三题,调和级数是收敛的(笑)。标程是数据分治。。哎。我错的很离谱。

     1 #include<cmath>
     2 #include<cstdio>
     3 using namespace std;
     4 long long n;
     5 int m;
     6 int main() 
     7 {
     8     scanf("%I64d%d",&n,&m);
     9     if(n<5000000)
    10     {
    11         double ans=0.0;
    12         for(int i=1;i<=n;i++)
    13             ans+=1.0/i;
    14         printf("%d
    ",(int)floor(ans*m - (1e-7)));
    15      }
    16     else
    17     {
    18         printf("%d
    ",(int)floor((log(n)+0.57721566490)*m - (1e-7)));
    19     }
    20     return 0;
    21 }
    View Code
  • 相关阅读:
    Grid++Report 报表开发工具
    docker(1):virtualbox 安装CoreOS系统,配置registry-mirror
    [Network]Introduction and Basic concepts
    Java进程堆外内存(off heap)大小
    可设置指定时间自己主动消失的 MessageBox实现
    《iOS Human Interface Guidelines》——Wallet
    什么是OpenStack
    Filters.h各种信号恢复滤波器头文件
    Android时间轴效果,直接使用在你的项目中
    浅析C++多重继承
  • 原文地址:https://www.cnblogs.com/JackSlowFuck/p/3838234.html
Copyright © 2011-2022 走看看