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

    这次目测没有机会写解题报告了。

    我就大概说一下,我的过程和我的WAcode。

    第一题,我一直觉得自己是正解,然后莫名其妙wa了。我也想到了二分答案,然后枚举边。但是我觉得我的二分跟翔一样,然后我又觉得自己的枚举边+枚举点是对的。所以就没写二分。。。(┬_┬)  o(╯□╰)o           我的做法是枚举一条边,然后枚举一个点,比较它到两个点的距离,维护到较小值的端点的较小值的最大值,然后寻找边上哪一点的最大值最小。。

    第二题 看了一下题,觉得是最长上升子序列,就是说如果ai=bj=bk 那么我一定会删除下标较小的。。然后开始二分e??又是二分??

    第三题 应该是dp,dp[i]表示gcd为i至少要多少个数,转移方程显而易见:dp[gcd(i,am)]=min(*,dp[i]+1);

    最后总结一下这次考试,我悟出了七字真言:

    黑暗算法平安保!

    完结,撒花。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 int a[201][201];
     6 int b[201][201];
     7 int dis[201];
     8 int N,M;
     9 int U,V,W;
    10 int main()
    11 {
    12     double ans=1E9;
    13     memset(a,-1,sizeof(a));
    14     memset(b,-1,sizeof(b));
    15     freopen("testA.in","r",stdin);
    16     freopen("testA.out","w",stdout);
    17     cin>>N>>M;
    18     for(int i=1;i<=N;i++)
    19     {
    20         a[i][i]=0;
    21         b[i][i]=0;
    22     }
    23     for(int i=1;i<=M;i++)
    24     {
    25         scanf("%d%d%d",&U,&V,&W);
    26         if(a[U][V]!=-1)
    27         {
    28             a[U][V]=min(a[U][V],W);
    29             a[V][U]=min(a[V][U],W);
    30             b[U][V]=min(b[U][V],W);
    31             b[V][U]=min(b[V][U],W);
    32         }
    33         else
    34         {
    35             a[U][V]=W;
    36             a[V][U]=W;
    37             b[U][V]=W;
    38             b[V][U]=W;
    39         }
    40     }
    41     for(int k=1;k<=N;k++)
    42         for(int i=1;i<=N;i++)
    43             for(int j=1;j<=N;j++)
    44                 if((a[i][k]!=-1)&&(a[k][j]!=-1)&&(a[i][j]==-1||a[i][j]>a[i][k]+a[k][j]))
    45                 {
    46                     a[i][j]=a[i][k]+a[k][j];
    47                 }
    48     long long x=0,y=0;
    49     for(int i=1;i<=N;i++)
    50         for(int j=i+1;j<=N;j++)
    51             if(b[i][j]!=-1)
    52             {
    53                 x=0,y=0;
    54                 for(int k=1;k<=N;k++)
    55                 {
    56                     if(a[i][k]!=-1&&(a[i][k]<a[k][j]||a[k][j]==-1)&&x<a[i][k])
    57                         x=a[i][k];
    58                     if(a[j][k]!=-1&&(a[j][k]<a[k][i]||a[k][i]==-1)&&y<a[j][k])
    59                         y=a[j][k];
    60                 }
    61                 if(x-y>b[i][j]&&ans>(x))
    62                     ans=(double)(x);
    63                 if(y-x>b[i][j]&&ans>(y))
    64                     ans=(double)(y);
    65                 if(x-y<=b[i][j]&&y-x<=b[i][j]&&ans>((x+y+b[i][j])/2))
    66                     ans=(double)(x+y+b[i][j])/2;
    67             }
    68     printf("%.2lf
    ",ans);
    69 }
    Code testA
     1 #include<cstdio>
     2 using namespace std;
     3 int main()
     4 {
     5     int n,m,s,e;
     6     freopen("testB.in","r",stdin);
     7     freopen("testB.out","w",stdout);
     8     scanf("%d %d %d %d", &n, &m, &s, &e);
     9     printf("%d
    ", s/e);
    10 }
    Code testB
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int a[1000];
     5 int gcd(int a,int b)
     6 {
     7     while(b!=0)
     8     {
     9         a%=b;
    10         a^=b;
    11         b^=a;
    12         a^=b;
    13     }
    14     return a;
    15 }
    16 int main()
    17 {
    18     int n;
    19     freopen("testC.in","r",stdin);
    20     freopen("testC.out","w",stdout);
    21     cin>>n;
    22     for(int i=1;i<=n;i++)
    23         cin>>a[i];
    24     int k=a[1];
    25     int m;
    26     for(int i=2;i<=n;i++)
    27     {
    28         m=a[i];
    29         k=gcd(k,m);
    30     }
    31     long long ans=0;
    32     for(int i=1;i<=m;i++)
    33         if(k==a[i])
    34             ans=n-1;
    35     if(ans==n-1)
    36     {
    37         cout<<ans<<endl;
    38         return 0;
    39     }
    40     for(int i=1;i<=m;i++)
    41         for(int j=1;j<=m;j++)
    42             if(k==gcd(a[i],a[j]))
    43                 ans=n-2;
    44     cout<<ans<<endl;
    45     return 0;
    46 }
    Code testC
  • 相关阅读:
    【hihocoder1255 Mysterious Antiques in Sackler Museum】构造 枚举
    【hihocoder 1257 Snake Carpet】构造
    【HDU 5572 An Easy Physics Problem】计算几何基础
    【hihocoder 1258 Osu! Master】
    Coder-Strike 2014
    [不完全动态凸包]SGU277
    [成都七中]GCD
    [某模拟赛]鸡腿の乒乓
    [TCSRM518Div1]Nim
    BZOJ3289【莫队算法+树状数组+离散化】
  • 原文地址:https://www.cnblogs.com/JackSlowFuck/p/3826776.html
Copyright © 2011-2022 走看看