zoukankan      html  css  js  c++  java
  • 2017-10-04-afternoon

    注意完全平方数统计时的特判

     1 #include <cstdio>
     2 
     3 inline void read(int &x)
     4 {
     5     x=0; register char ch=getchar();
     6     for(; ch>'9'||ch<'0'; ) ch=getchar();
     7     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
     8 }
     9 const int N(40005);
    10 int n,cnt[N],ans;
    11 
    12 inline void Update(int x)
    13 {
    14     int i;
    15     for(i=1; i*i<x; ++i)
    16         if(x%i==0) cnt[i]++,cnt[x/i]++;
    17     if(i*i==x) cnt[i]++;
    18 }
    19 
    20 int Presist()
    21 {
    22     freopen("a.in","r",stdin);
    23     freopen("a.out","w",stdout);
    24 
    25     read(n);
    26     for(int op,x; n--; )
    27     {
    28         read(op),read(x);
    29         if(op==1) Update(x);
    30         else ans^=cnt[x];
    31     }
    32     printf("%d
    ",ans);
    33     return 0;
    34 }
    35 
    36 int Aptal=Presist();
    37 int main(int argc,char**argv){;}
    AC

     1 #include <cstring>
     2 #include <cstdio>
     3 
     4 #define LL long long
     5 inline void read(int &x)
     6 {
     7     x=0; register char ch=getchar();
     8     for(; ch>'9'||ch<'0'; ) ch=getchar();
     9     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
    10 }
    11 const int N(3e5+5);
    12 
    13 int cnt[2][N],val[N],dad[N];
    14 int sumedge,head[N];
    15 struct Edge {
    16     int v,next,w;
    17     Edge(int v=0,int next=0,int w=0):v(v),next(next),w(w){}
    18 }edge[N<<1];
    19 inline void ins(int u,int v,int w)
    20 {
    21     cnt[0][u]++; cnt[0][v]++;
    22     edge[++sumedge]=Edge(v,head[u],w); head[u]=sumedge;
    23     edge[++sumedge]=Edge(u,head[v],w); head[v]=sumedge;
    24 }
    25 
    26 bool vis[N];
    27 long long ans;
    28 
    29 inline void Add(int u)
    30 {
    31     for(; dad[u]; u=dad[u]) cnt[1][dad[u]]++;
    32 }
    33 void DFS(int u,int fa,int pre)
    34 {
    35     for(int v,i=head[u]; i; i=edge[i].next)
    36     {
    37         v=edge[i].v;
    38         if(vis[v]||fa==v||edge[i].w==pre) continue;
    39         cnt[1][v]++, dad[v]=u;
    40         DFS(v,u,edge[i].w); Add(v); dad[v]=0;
    41     }
    42 }
    43 
    44 int Presist()
    45 {
    46     freopen("b.in","r",stdin);
    47     freopen("b.out","w",stdout);
    48     int n; read(n);
    49     for(int i=1; i<=n; ++i) read(val[i]);
    50     for(int u,v,w,i=1; i<n; ++i)
    51         read(u),read(v),read(w),ins(u,v,w);
    52     for(int i=1; i<=n; ++i)
    53         if(cnt[0][i]==1) vis[i]=1,DFS(i,0,0);
    54     for(int i=1; i<=n; ++i)
    55         if(!vis[i]) vis[i]=1,DFS(i,0,0);
    56     for(int i=1; i<=n; ++i)
    57         ans+=1ll*cnt[1][i]*val[i];
    58     printf("%I64d
    ",ans);
    59     return 0;
    60 }
    61 
    62 int Aptal=Presist();
    63 int main(int argc,char**argv){;}
    额。。想法有问题

    1 /*
    2 呃呃呃
    3 */
    未完成
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    -----------------------------2015年 年度总结-----------------------------
    ------第二节-----------------第二讲----单链表的基本操作---------
    shell 字符串截取
    express, mocha, supertest,istanbul
    Qunit 和 jsCoverage使用方法(js单元测试)
    jsp tutorial
    Unicode 和 UTF-8 是什么关系?
    wget -d --header
    python array
    responsive and functional programming RxJava
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7663468.html
Copyright © 2011-2022 走看看