zoukankan      html  css  js  c++  java
  • 8月11号的练习:POJ 3094&&HDU 1175&&HDU 2602&&HDU 2059

                                      Quicksum POJ 3094

    非常水:

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<stdio.h>
     4 #include<string.h>
     5 #include<string>
     6 using namespace std;
     7 int main()
     8 {
     9     char a[260];
    10     int n,sum,i;
    11     while(3)
    12     {
    13         gets(a+1);
    14         if(a[1]=='#')
    15             break;
    16         n=strlen(a+1);
    17         sum=0;
    18         for(i=1;i<=n;i++)
    19         {
    20             if(a[i]<'A'||a[i]>'Z')
    21                 continue;
    22             else
    23             {
    24                 sum+=i*(a[i]-'A'+1);
    25             }
    26         }
    27         printf("%d
    ",sum);
    28     }
    29     return 0;
    30 }

                                                 连连看 HDU 1175

    终于有感觉了!!!

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 #include<string.h>
     5 using namespace std;
     6 int b[4][2]={0,1,0,-1,1,0,-1,0};
     7 int a[1005][1005],c1[1005][1005],t,flag,n,m,x2,y2;
     8 void dfs(int x,int y,int z)
     9 {
    10     int i,z1,x1,y1;
    11     if(x==x2&&y==y2&&t<=2)
    12     {
    13         flag=1;
    14         return ;
    15     }
    16     if(t==2)
    17     {
    18         if(x-x2!=0&&y-y2!=0)
    19             return ;
    20         if(x-x2==0&&y-y2!=0&&z!=-1)
    21             return ;
    22         if(x-x2!=0&&y-y2==0&&z!=1)
    23             return ;
    24     }//此处剪枝最重要!不然就会超时!!
    25     if(t>=3)
    26         return ;
    27     if(flag)
    28         return ;
    29     for(i=0;i<4;i++)
    30     {
    31         x1=x+b[i][0];
    32         y1=y+b[i][1];
    33         if(x1-x!=0)
    34             z1=1;
    35         if(y1-y!=0)
    36             z1=-1;
    37         if(x1>=1&&x1<=n&&y1>=1&&y1<=m&&!c1[x1][y1]&&(a[x1][y1]==0||x1==x2&&y1==y2))//还要注意重点不为零要格外地判断
    38         {
    39             c1[x1][y1]=1;
    40             if(z1!=z&&z!=0)
    41                 t++;
    42             dfs(x1,y1,z1);
    43             c1[x1][y1]=0;
    44             if(z1!=z&&z!=0)
    45                 t--;//此处进行了回溯!
    46         }
    47     }
    48 }
    49 int main()
    50 {
    51     int i,j,x1,y1,t1;
    52     while(scanf("%d%d",&n,&m)!=EOF)
    53     {
    54         if(n==0&&m==0)
    55             break;
    56         memset(c1,0,sizeof(c1));
    57         for(i=1;i<=n;i++)
    58             for(j=1;j<=m;j++)
    59              {
    60                  scanf("%d",&a[i][j]);
    61                  if(a[i][j]!=0)
    62                     c1[i][j]=1;
    63              }
    64         scanf("%d",&t1);
    65         while(t1--)
    66         {
    67             scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    68             if(a[x1][y1]!=a[x2][y2])
    69             {
    70                 printf("NO
    ");
    71                 continue;
    72             }
    73             if(a[x1][y1]==0||a[x2][y2]==0)
    74             {
    75                 printf("NO
    ");
    76                 continue;
    77             }
    78             flag=0;t=0;c1[x2][y2]=0;
    79             dfs(x1,y1,0);
    80             c1[x2][y2]=1;
    81             if(flag==0)
    82                 printf("NO
    ");
    83             else
    84                 printf("YES
    ");
    85         }
    86     }
    87     return 0;
    88 }//Z用来判断是否拐弯的

                                              Bone Collector HDU 2602

    非常水的背包问题:

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<stdio.h>
     4 #include<string.h>
     5 using namespace std;
     6 int main()
     7 {
     8     int a[1005],b[1005];
     9     int c[10005];
    10     int t,i,j,n,m;
    11     scanf("%d",&t);
    12     while(t--)
    13     {
    14         scanf("%d%d",&n,&m);
    15         for(i=1;i<=n;i++)
    16             scanf("%d",&a[i]);
    17         for(j=1;j<=n;j++)
    18             scanf("%d",&b[j]);
    19         memset(c,0,sizeof(c));
    20         for(i=1;i<=n;i++)
    21         {
    22                 for(j=m;j>=b[i];j--)
    23                 {
    24                     if(c[j]<c[j-b[i]]+a[i])
    25                         c[j]=c[j-b[i]]+a[i];
    26                 }
    27         }
    28         printf("%d
    ",c[m]);
    29     }
    30     return 0;
    31 }

                                                   龟兔赛跑   HDU 2059

    一道动态规划题目:重点找到状态转移方程!

    看到解释就很好懂了,属于那种爆发型的。。。

    定义状态dp[i]表示的是乌龟到第i个加油站时花费的最短时间。
    那么dp[i] = min(dp[i],dp[j]+time);其中j < i且time是
    在j加油后走到i所花的时间。意思就是,从0~j这些加油站中,选
    择哪个来加油才能使去到i的时间最短。所以时间复杂度是O(n^2)。
    不过值得注意的细节时,把起点和终点也当成加油站,上述的0就是
    指起点。其中起点是是不用花时间的加油站。
     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 using namespace std;
     5 int main()
     6 {
     7     int L,n,c,t,v,v1,v2,a[105],i,j;
     8     double d,dp[105],temp;
     9     while(~scanf("%d",&L))
    10     {
    11         scanf("%d%d%d",&n,&c,&t);
    12         scanf("%d%d%d",&v,&v1,&v2);
    13         for(i=1;i<=n;i++)
    14             scanf("%d",&a[i]);
    15         a[0]=0;
    16         a[n+1]=L;
    17         for(i=1;i<=n+1;i++)
    18             dp[i]=10000005;
    19         dp[0]=0;
    20         d=L*1.0/v;//没有(*1.0)会错的。。。(double与int的转化)
    21         for(i=1;i<=n+1;i++)
    22         {
    23             for(j=0;j<i;j++)
    24             {
    25                 if(a[i]-a[j]<=c)
    26                     temp=(a[i]-a[j])*1.0/v1+t;
    27                 else
    28                     temp=c*1.0/v1+t+(a[i]-a[j]-c)*1.0/v2;
    29                 if(!j)
    30                     temp-=t;//起点不算加速时间!
    31                 dp[i]=min(dp[i],dp[j]+temp);
    32             }
    33         }
    34         if(dp[n+1]<d)
    35             printf("What a pity rabbit!
    ");
    36         else
    37             printf("Good job,rabbit!
    ");
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    微软BI 之SSAS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSAS 系列
    微软BI 之SSIS 系列
    微软BI 之SSRS 系列
    微软BI 之SSAS 系列
    微软BI 之SSAS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
  • 原文地址:https://www.cnblogs.com/tt123/p/3252557.html
Copyright © 2011-2022 走看看