zoukankan      html  css  js  c++  java
  • SZU 7

    A - Megacity

    sqrtf是个坑

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <vector>
    #include <iterator>
    #include <set>
    #include <map>
    #include <sstream>
    using namespace std;
    
    #define mem(a,b) memset(a,b,sizeof(a))
    #define pf printf
    #define sf scanf
    #define spf sprintf
    #define pb push_back
    #define debug printf("!
    ")
    #define INF 10000
    #define MAXN 5010
    #define MAX(a,b) a>b?a:b
    #define blank pf("
    ")
    #define LL long long
    #define ALL(x) x.begin(),x.end()
    #define INS(x) inserter(x,x.begin())
    #define pqueue priority_queue
    
    int n,s;
    
    struct point
    {
        int x,y,h;
        double d;
    }p[1005];
    
    int cmp(const point& a,const point& b)
    { return a.d<=b.d;}
    
    int main()
    {
        int i,j;
        while(sf("%d%d",&n,&s)==2)
        {
            if(s == 1000000)
            {
                pf("%.7f
    ",0);
                continue;
            }
            mem(p,0);
    
            for(i=0;i<n;i++)
            {
                sf("%d%d%d",&p[i].x,&p[i].y,&p[i].h);
                p[i].d = sqrtf(p[i].x*p[i].x + p[i].y*p[i].y);
            }
            sort(p,p+n,cmp);
    
            int sum = s;
            double res = 0;
            int ok = 0;
    
            for(i=0;i<n;i++)
            {
                sum+=p[i].h;
                if(sum>=1000000)
                {
                    ok = 1;
                    res = p[i].d;
                    break;
                }
            }
            if(ok)
            {
                pf("%.7f
    ",res);
            }
            else
                pf("-1
    ");
        }
    }

    B - Let's Watch Football

    一看就知道可以计算,不要想太复杂

    int main()
    {
        int i,j;
        int a,b,c;
        while(sf("%d%d%d",&a,&b,&c)==3)
        {
            pf("%d
    ",(a*c-b*c+b-1)/b);
        }
    }

    C - Hopscotch

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <vector>
    #include <iterator>
    #include <set>
    #include <map>
    #include <sstream>
    using namespace std;
    
    #define mem(a,b) memset(a,b,sizeof(a))
    #define pf printf
    #define sf scanf
    #define spf sprintf
    #define pb push_back
    #define mp make_pair
    #define debug printf("!
    ")
    #define INF 1<<30
    #define MAXN 5010
    #define MAX(a,b) a>b?a:b
    #define blank pf("
    ")
    #define LL long long
    #define ALL(x) x.begin(),x.end()
    #define INS(x) inserter(x,x.begin())
    #define pqueue priority_queue
    
    int main()
    {
         int T,r,i,j,n;
         int a,x,y;
         while(sf("%d%d%d",&a,&x,&y)==3)
         {
              if(y%a==0)
                   pf("-1
    ");
              else if(y<a)
              {
                   if(2*x<a && 2*x>-a)
                        pf("1
    ");
                   else
                        pf("-1
    ");
              }
              else
              {
                   if((y-a)/a%2==0)
                   {
                        if(2*x<a && 2*x>-a)
                             pf("%d
    ",(y-a)/a/2*3+2);
                        else
                             pf("-1
    ");
                   }
                   else
                   {
                        if(x>0 && x<a)
                             pf("%d
    ",((y-a)/a+1)/2*3+1);
                        else if(x<0 && x>-a)
                             pf("%d
    ",((y-a)/a+1)/2*3);
                        else
                             pf("-1
    ");
                   }
              }
         }
    }

    Working out

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <vector>
    #include <iterator>
    #include <set>
    #include <map>
    #include <sstream>
    using namespace std;
    
    #define mem(a,b) memset(a,b,sizeof(a))
    #define pf printf
    #define sf scanf
    #define spf sprintf
    #define pb push_back
    #define debug printf("!
    ")
    #define INF 10000
    #define MAXN 5010
    #define MAX(a,b) a>b?a:b
    #define blank pf("
    ")
    #define LL long long
    #define ALL(x) x.begin(),x.end()
    #define INS(x) inserter(x,x.begin())
    #define pqueue priority_queue
    
    int n,m;
    
    int a[1005][1005];
    
    int dp[1005][1005][4];
    
    int main()
    {
        int i,j;
        while(sf("%d%d",&n,&m)==2)
        {
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                {
                    sf("%d",&a[i][j]);
                }
            }
    
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                {
                    dp[i][j][0] = max(dp[i-1][j][0],dp[i][j-1][0])+a[i][j];
                }
            }
    
            for(i=n;i>=1;i--)
            {
                for(j=m;j>=1;j--)
                {
                    dp[i][j][1] = max(dp[i+1][j][1],dp[i][j+1][1])+a[i][j];
                }
            }
    
            for(i=1;i<=n;i++)
            {
                for(j=m;j>=1;j--)
                {
                    dp[i][j][2] = max(dp[i-1][j][2],dp[i][j+1][2])+a[i][j];
                }
            }
    
            for(i=n;i>=1;i--)
            {
                for(j=1;j<=m;j++)
                {
                    dp[i][j][3] = max(dp[i+1][j][3],dp[i][j-1][3])+a[i][j];
                }
            }
    
            int ans = 0;
    
            for(i=2;i<n;i++)
            {
                for(j=2;j<m;j++)
                {
                    ans = max(ans,dp[i][j-1][0]+dp[i][j+1][1]+dp[i-1][j][2]+dp[i+1][j][3]);
                    ans = max(ans,dp[i-1][j][0]+dp[i+1][j][1]+dp[i][j-1][3]+dp[i][j+1][2]);
                }
            }
    
            pf("%d
    ",ans);
        }
    }

    E - Anagram Search

    打表法,因为?可以任意变,而且不在表范围内,所以只需要判断表范围内每个字母出现的数量

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <vector>
    #include <iterator>
    #include <set>
    #include <map>
    #include <sstream>
    using namespace std;
    
    #define mem(a,b) memset(a,b,sizeof(a))
    #define pf printf
    #define sf scanf
    #define spf sprintf
    #define pb push_back
    #define mp make_pair
    #define debug printf("!
    ")
    #define INF 1<<30
    #define MAXN 5010
    #define MAX(a,b) a>b?a:b
    #define blank pf("
    ")
    #define LL long long
    #define ALL(x) x.begin(),x.end()
    #define INS(x) inserter(x,x.begin())
    #define pqueue priority_queue
    
    char a[100005],b[100005];
    
    int s[30],t[30];
    
    int main()
    {
         int T,r,i,j,n;
         while(sf("%s%s",a,b)==2)
         {
              int al = strlen(a);
              int bl = strlen(b);
    
              mem(s,0);
              mem(t,0);
    
              for(i=0;i<bl;i++)
              {
                   if(b[i]!='?')
                        s[b[i]-'a']++;
              }
    
              int cnt = 0;
    
              for(i=0;i<al;i++)
              {
                   if(a[i]!='?') t[a[i]-'a']++;
                   int ok = 1;
    
                   if(i>=bl-1)
                   {
                        for(j=0;j<26;j++)
                        {
                             if(t[j]>s[j])
                             {
                                  ok = 0;
                                  break;
                             }
                        }
                        if(ok) cnt++;
                        t[a[i-bl+1]-'a']--;
                   }
              }
              pf("%d
    ",cnt);
         }
    }
  • 相关阅读:
    WebApi 安全认证
    Autofac 学习
    autofac实现批量注入
    Autofac -入门练习
    Struts2 Namespace_命名空间
    Deployment failure on Tomcat 6.x. Could not copy all resources
    chm 已取消到该网页的导航 或者 无法显示网页 的问题
    GPT 分区详解
    mount 中文手册
    rpm 中文手册
  • 原文地址:https://www.cnblogs.com/qlky/p/5325151.html
Copyright © 2011-2022 走看看