• codeforces 821


    A

    给你一个n*n矩阵

    判断不是1的数 能不能有 同一行 + 同一列的  一个数 相加得到   暴力下就行

    #include<stdio.h>
    #include<string.h>
    #include<map>
    #include<algorithm>
    
    using namespace std;
    
    #define inf 1e9+7
    #define MAXN  100
    #define long long ll
    
    int z[MAXN][MAXN];
    
    int main()
    {
    
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                    scanf("%d",&z[i][j]);
            }
            int ok=0;
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    if(z[i][j]!=1)
                    {
                        int a=0;
                        for(int k=1;k<=n;k++)
                        {
                            if(k==i)
                                continue;
                            z[k][j];
                            for(int kk=1;kk<=n;kk++)
                            {
                                if(kk==j)
                                    continue;
                                if(z[k][j]+z[i][kk]==z[i][j])
                                    a=1;
                            }
                        }
                        if(a==0)
                            ok=1;
                    }
                }
            }
            if(ok==0)
                printf("Yes
    ");
            else
                printf("No
    ");
        }
        return 0;
    }
    View Code

    B

    y= - x/m+b

    求最大的矩阵的权值   矩阵权值计算方法是  每个点的x y 都加起来

    暴力跑下x   0*m  1*m    ... 

    然后推一下矩阵权值

    (x+1)*(y+1)*(x+y)/2

    求max

    #include<stdio.h>
    #include<string.h>
    #include<map>
    #include<algorithm>
    
    using namespace std;
    
    #define inf 1e9+7
    #define MAXN  100
    #define ll __int64
    
    
    int main()
    {
        ll m,b;
    
        while(scanf("%I64d%I64d",&m,&b)!=EOF)
        {
    
            ll ans=0;
            for(int i=0;;i++)
            {
                ll y=-i+b;
                ll x=i*m;
                if(y>=0)
                {
                    ans=max(ans,(i*m+1)*(y+1)*(i*m+y)/2);
                }
                else
                    break;
            }
            printf("%I64d
    ",ans);
        }
    
        return 0;
    }
    View Code

    C

    n   然后2*n个操作 

    add  a 代表  把a加到栈里面 

    remove  代表出栈 

    要求是出栈顺序是 1 ~ n  可以用一个费用   然后让栈排序  求最小费用

    要出栈的话    如果栈顶不对  那么  显然费用要加

    那么  都排序了  其实就可以把栈里的数去掉了 他们不再要费用 

    #include<stdio.h>
    #include<string.h>
    #include<map>
    #include<algorithm>
    #include<stack>
    
    using namespace std;
    
    #define inf 1e9+7
    #define MAXN  100
    #define ll __int64
    
    stack<int>s1;
    
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            int to;
            int ans=0;
            int c1=0;
    
            for(int i=1;i<=n*2;i++)
            {
                char z[10];
                scanf("%s",z);
                if(z[0]=='a')
                {
                    int a;
                    scanf("%d",&a);
                    s1.push(a);
                }
                else
                {
                    c1++;
                    if(s1.empty())
                        continue;
                    if(s1.top()==c1)
                        s1.pop();
                    else
                    {
                        ans++;
                        while(!s1.empty())
                            s1.pop();
                    }
                }
            }
            printf("%d
    ",ans);
        }
    
    
        return 0;
    }
    View Code

    D

    n m k

    n*m 地图  然后k   个 x y

    这些点如果相邻的话可以直接点

    可以用一个花费   点亮一行或者一列  

    求从左上走到右下 最小花费

    spfa    ...

    #include<stdio.h>
    #include<string.h>
    #include<map>
    #include<algorithm>
    #include<stack>
    #include<deque>
    #include<math.h>
    
    using namespace std;
    
    #define inf 1e9+7
    #define MAXN  10100
    #define ll __int64
    
    struct node
    {
        int x,y;
    }z[MAXN];
    int n,m,q;
    deque<int>q1;
    bool vis[MAXN];
    int  d[MAXN];
    
    int spfa()
    {
        memset(vis,0,sizeof(vis));
        for(int i=1;i<=q;i++)
            d[i]=inf;
        d[1]=0;
        vis[1]=1;
        q1.push_back(1);
        while(!q1.empty())
        {
            int now=q1.front();
            q1.pop_front();
            vis[now]=0;
            for(int i=1;i<=q;i++)
            {
                if(i==now)
                    continue;
                int dx=abs(z[i].x-z[now].x);
                int dy=abs(z[i].y-z[now].y);
                int w=inf;
                if(dx+dy<=1)
                    w=0;
                else if(dx<=2||dy<=2)
                    w=1;
                if(d[now]+w<d[i])
                {
                    d[i]=d[now]+w;
                    if(!vis[i])
                    {
                        if(q1.empty())
                            q1.push_back(i);
                        else
                        {
                            if(d[q1.front()]>d[i])
                                q1.push_front(i);
                            else
                                q1.push_back(i);
                        }
                        vis[i]=1;
                    }
                }
            }
        }
        if(d[q]==inf)
            return -1;
        return d[q];
    }
    
    int main()
    {
    
        while(scanf("%d%d%d",&n,&m,&q)!=EOF)
        {
            int a=0;
            for(int i=1;i<=q;i++)
            {
                scanf("%d%d",&z[i].x,&z[i].y);
                if(z[i].x==n&&z[i].y==m)
                    a=1;
            }
            if(a==0)
            {
                q++;
                z[q].x=n+1;
                z[q].y=m+1;
            }
            printf("%d
    ",spfa());
    
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Extjs Ext.extend函数的使用
    Silverlight 4 用户名密码验证提示
    Balsamiq Mockups
    自定义RDLC报表的数据集(手工编辑rdlc文件,配置数据集)
    VS2010 帮助文档离线安装
    为 Silverlight 客户端生成服务
    将Win7电脑改造成无线路由
    RDLC报表:每页显示N条记录
    C# 禁止ALT+F4
    让C#程序run anywhere 脱离.net Framework框架环境
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/7085433.html
Copyright © 2020-2023  润新知