• 第八周 10.18-10.24


    10.18

    HDU 5504 GT and sequence

    sb了。copy后忘改一个数字。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 using namespace std;
     5 typedef long long LL;
     6 LL a[100];
     7 
     8 int main(void)
     9 {
    10     int T; cin>>T;
    11     while(T--)
    12     {
    13         int N; scanf("%d",&N);
    14         int p=0,n=0;
    15         for(int i=0;i<N;i++)
    16         {
    17             scanf("%I64d",a+i);
    18             if(a[i]>0) p++;
    19             else if(a[i]<0) n++;
    20         }
    21         sort(a,a+N);
    22         LL ans;
    23         if(p==0&&n<2) ans=a[N-1];
    24         else
    25         {
    26             if(p)
    27             {
    28                 ans=a[N-1];
    29                 for(int i=N-2;i>=0;i--) if(a[i]>0) ans*=a[i];
    30                 for(int i=0;i<N-2;i++) if(a[i]<0&&a[i+1]<0)
    31                 {
    32                     ans*=a[i]*a[i+1]; i++;
    33                 }
    34             }
    35             else
    36             {
    37                 ans=a[0]*a[1];
    38                 for(int i=2;i<N-1;i++) if(a[i]<0&&a[i+1]<0)
    39                 {
    40                     ans*=a[i]*a[i+1]; i++;
    41                 }
    42             }
    43         }
    44         printf("%I64d
    ",ans);
    45     }
    46     return 0;
    47 }
    Aguin

    HDU 5505 GT and numbers

    没筛表T死。文霸筛还是挺好用。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 using namespace std;
     6 typedef unsigned long long ull;
     7 const int maxn=1e6;
     8 int pr[maxn];
     9 
    10 void GetPrime(void)
    11 {
    12     memset(pr,0,sizeof(pr));
    13     for(int i=2;i<=maxn;i++)
    14     {
    15         if(!pr[i]) pr[++pr[0]]=i;
    16         for(int j=1;j<=pr[0]&&pr[j]*i<=maxn;j++)
    17         {
    18             pr[i*pr[j]]=1;
    19             if(i%pr[j]==0) break;
    20         }
    21     }
    22     return;
    23 }
    24 
    25 int main(void)
    26 {
    27     GetPrime();
    28     int T; cin>>T;
    29     while(T--)
    30     {
    31         ull N,M;
    32         scanf("%I64u%I64u",&N,&M);
    33         int ans=0;
    34         for(int i=1;i<=pr[0];i++)
    35         {
    36             if(pr[i]>min(M,N)) break;
    37             int t1=0,t2=0;
    38             if(N%pr[i]==0) while(N%pr[i]==0) {t1++; N/=pr[i];}
    39             if(M%pr[i]==0) while(M%pr[i]==0) {t2++; M/=pr[i];}
    40             if(!t1&&t2||t1&&!t2) {ans=-1;break;}
    41             while((1<<ans)*t1<t2) ans++;
    42         }
    43         if(M!=1||N!=1) ans=-1;
    44         printf("%d
    ",ans);
    45     }
    46     return 0;
    47 }
    Aguin

    HDU 5506 GT and set

    就是暴。赛时想起STL有求交。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <set>
     5 using namespace std;
     6 set<int> ss[30];
     7 set<int> S[5];
     8 int N,L;
     9 
    10 bool dfs(int pos)
    11 {
    12     if(pos>=N) return true;
    13     set<int> tmp;
    14     for(int i=0;i<L;i++)
    15     {
    16         tmp=S[i];
    17         if(S[i].empty()) S[i]=ss[pos];
    18         else
    19         {
    20             set<int> in; in.clear();
    21             set_intersection(S[i].begin(),S[i].end(),ss[pos].begin(),ss[pos].end(),inserter(in,in.begin()));
    22             if(in.empty()) {S[i]=tmp;continue;}
    23             S[i]=in;
    24         }
    25         if(dfs(pos+1)) return true;
    26         S[i]=tmp;
    27     }
    28     return false;
    29 }
    30 
    31 int main(void)
    32 {
    33     int T; cin>>T;
    34     while(T--)
    35     {
    36         scanf("%d%d",&N,&L);
    37         for(int i=0;i<L;i++) S[i].clear();
    38         for(int i=0;i<N;i++)
    39         {
    40             int sz; scanf("%d",&sz);
    41             ss[i].clear();
    42             for(int j=0;j<sz;j++)
    43             {
    44                 int x; scanf("%d",&x);
    45                 ss[i].insert(x);
    46             }
    47         }
    48         puts(dfs(0)?"YES":"NO");
    49     }
    50     return 0;
    51 }
    Aguin

    10.19-10.24

    似乎什么都没干?

  • 相关阅读:
    Android研究之游戏开发处理按键的响应
    C语言指针的初始化和赋值
    Cloudera CDH 5集群搭建(yum 方式)
    未将对象引用设置到对象的实例--可能出现的问题总结
    内存泄漏以及常见的解决方法
    都能看懂的嵌入式linux/android alsa_aplay alsa_amixer命令行使用方法
    Life is hard!
    EasyUI基础入门之Resiable(可缩放)
    Android -- Looper.prepare()和Looper.loop() —深入版
    vi 命令 使用方法
  • 原文地址:https://www.cnblogs.com/Aguin/p/4889679.html
Copyright © 2020-2023  润新知