zoukankan      html  css  js  c++  java
  • codefoeces 816

    A

    给你一个时间

    问到最近的 回文的时间   模拟

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    #include<math.h>
    #include<queue>
    #include<set>
    #include<map>
    
    using namespace std;
    
    #define ll __int64
    #define inf  1e15+7
    #define MAXN 200010
    #define exp 1e-4
    
    
    int main()
    {
    
        int n,m;
        while(scanf("%d:%d",&n,&m)!=EOF)
        {
            int cnt=0;
    
            while(1)
            {
                int a=n/10;
                int b=n%10;
                int c=m/10;
                int d=m%10;
                if(b==c&&a==d)
                    break;
                m++;
                if(m==60)
                {
                    m=0;
                    n++;
                }
                if(n==24)
                    n=0;
                cnt++;
            }
            printf("%d
    ",cnt);
        }
        return 0;
    }
    View Code

    B

    n k  q

    n种咖啡  然后每个的温度范围  

    然后有q个查询求 li  ri  求这个温度范围内有多少温度 满足 数目 >=k

    没遇到过的前缀和

    cnt[li]++  cnt[ri+1]--;

    然后n求前缀和

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    #include<math.h>
    #include<queue>
    #include<set>
    #include<map>
    
    using namespace std;
    
    #define ll __int64
    #define inf  1e15+7
    #define MAXN 200010
    #define exp 1e-4
    
    int cnt[MAXN];
    int sum[MAXN];
    
    int main()
    {
        int n,k,q;
        while(scanf("%d%d%d",&n,&k,&q)!=EOF)
        {
            memset(cnt,0,sizeof(cnt));
            memset(sum,0,sizeof(sum));
            for(int i=1;i<=n;i++)
            {
                int l,r;
                scanf("%d%d",&l,&r);
                cnt[l]++;
                cnt[r+1]--;
            }
            for(int i=1;i<=200000;i++)
            {
                cnt[i]=cnt[i-1]+cnt[i];
                if(cnt[i]>=k)
                    sum[i]=sum[i-1]+1;
                else
                    sum[i]=sum[i-1];
            }
            for(int i=1;i<=q;i++)
            {
                int l,r;
                scanf("%d%d",&l,&r);
                printf("%d
    ",sum[r]-sum[l-1]);
            }
        }
        return 0;
    }
    View Code

    C

    n *m矩阵

    每次可以有1种操作

    1 给一行加一

    2 给一列加一

    从 0 开始变到给你的矩阵

    然后步数要最少

    统计行和列的最小的  1  先行   2 先列   步数可能不一样    当列里面统计出来最小的>=1那么行都要减去这个数

    1 1 1

    1 1 1

    1 1 1     x[1] 1               y[1] 1

                 x[2]  1              y[2]  1

                 x[3]  1              y[3]   1   那么y都要减去1    

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    #include<math.h>
    #include<queue>
    #include<set>
    #include<map>
    
    using namespace std;
    
    #define ll __int64
    #define inf  1e15+7
    #define MAXN 110
    #define exp 1e-4
    
    int x[MAXN],y[MAXN],x1[MAXN],y2[MAXN];
    int z[MAXN][MAXN],z1[MAXN][MAXN];
    char s1[50010][10],s2[50010][10];
    int ind[50010],ind1[50010];
    
    int main()
    {
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(int i=1;i<=n;i++)
            {
                int mi=inf;
                for(int j=1;j<=m;j++)
                {
                    scanf("%d",&z[i][j]);
                    z1[i][j]=z[i][j];
                    mi=min(mi,z[i][j]);
                }
                x[i]=mi;
                x1[i]=mi;
            }
            for(int i=1;i<=m;i++)
            {
                int mi=inf;
                for(int j=1;j<=n;j++)
                    mi=min(mi,z[j][i]);
                y[i]=mi;
                y2[i]=mi;
            }
            int ok=0;
            int cnt=0;
            int cnt1=0;
            int mi=inf;
            for(int i=1;i<=n;i++)
                mi=min(mi,x[i]);
            for(int i=1;i<=m;i++)
                y[i]-=mi;
            mi=inf;
            for(int i=1;i<=m;i++)
                mi=min(mi,y2[i]);
            for(int i=1;i<=n;i++)
                x1[i]-=mi;
    
            for(int i=1;i<=n;i++)
            {
                if(x[i]>0)
                {
                    for(int j=1;j<=m;j++)
                        z[i][j]-=x[i];
                    while(x[i]>0)
                    {
                        strcpy(s1[cnt],"row");
                        ind[cnt]=i;
                        cnt++;
                        x[i]--;
                    }
                }
            }
            for(int i=1;i<=n;i++)
            {
                if(x1[i]>0)
                {
                    for(int j=1;j<=m;j++)
                        z1[i][j]-=x1[i];
                    while(x1[i]>0)
                    {
                        strcpy(s2[cnt1],"row");
                        ind1[cnt1]=i;
                        cnt1++;
                        x1[i]--;
                    }
                }
            }
                for(int i=1;i<=m;i++)
                {
                    if(y[i]>0)
                    {
                        for(int j=1;j<=n;j++)
                            z[j][i]-=y[i];
                        while(y[i]>0)
                        {
                            strcpy(s1[cnt],"col");
                            ind[cnt]=i;
                            cnt++;
                            y[i]--;
                        }
                    }
                }
    
                for(int i=1;i<=m;i++)
                {
                    if(y1[i]>0)
                    {
                        for(int j=1;j<=n;j++)
                            z1[j][i]-=y2[i];
                        while(y2[i]>0)
                        {
                            strcpy(s2[cnt1],"col");
                            ind1[cnt1]=i;
                            cnt1++;
                            y2[i]--;
                        }
                    }
                }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                    if(z[i][j])
                        ok=1;
            }
            if(ok==1)
                printf("-1
    ");
            else
            {
                if(cnt<cnt1)
                {
                    printf("%d
    ",cnt);
                    for(int i=0;i<cnt;i++)
                        printf("%s %d
    ",s1[i],ind[i]);
                }
                else
                {
                     printf("%d
    ",cnt1);
                    for(int i=0;i<cnt1;i++)
                        printf("%s %d
    ",s2[i],ind1[i]);
                }
            }
    
        }
        return 0;
    }
    View Code
  • 相关阅读:
    linux 用户、组,修改文件权限
    linux下获取帮助
    PHPSESSID的cookie//session_start()
    【python】import 模块、包、第三方模块
    python练习——最长的递减子序列
    python练习——水仙花数
    Linux目录结构
    Scala入门3(特质线性化)
    Scala入门2(特质与叠加在一起的特质)
    人工智能我见及特征提取mfcc算法理解
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/7052730.html
Copyright © 2011-2022 走看看