zoukankan      html  css  js  c++  java
  • NEERC 2015 Adjustment Office /// oj25993

    题目大意:

    输入n,q; 矩阵大小为n*n 每个位置的值为该位置的行数+列数

    接下来q行

    “R m”表示输出第m行的总和并整行消去

    “C m”表示输出第m列的总和并整列消去

    Sample Input

    3 7
    R 2
    C 3
    R 2
    R 1
    C 2
    C 1
    R 3

    Sample Output

    12
    10
    0
    5
    5
    4
    0

     
    即 3*3的矩阵
    2   3   4 | 9
    3   4   5 | 12
    4   5   6 | 15
    9  12 15
     
    R 2 输出12 后 sumr=2,r=1
    2   3   4 | 9
    0   0   0 | 0
    4   5   6 | 15
    6   8  10
    C 3 输出10 后 suml=3,l=1
    2   3   0 | 9
    0   0   0 | 0
    4   5   0 | 15
    6   8   0
    ......
    可发现在C 3时 时可由15-r*3-sumr得出
    因为每个位置对应的值为 行数加列数
    则 整列的总和 = 行的总数*列数+行数总和
    则整列的值 = 原本的总和 - 消去的行的总数*列数 - 消去的行数总和
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    long long row[1000010],col[1000010];
    int main()
    {
        long long n,q;
        while(~scanf("%lld%lld",&n,&q)){
            long long sum=n+(n+1)*n/2;
            for(int i=1; i<=n; i++)
            {
                row[i]=col[i]=sum; 
                sum+=n;
            }
    
            long long sumc,sumr,l,r,c;
            sumc=sumr=c=r=0;
            char op;
            for(int i=1; i<=q; i++)
            {
                scanf(" %c%lld",&op,&l);
    
                if(op=='R')
                {
                        if(row[l]==0) printf("0
    ");
                        else
                        {
                            printf("%lld
    ",row[l]-sumc-l*c);
                            sumr+=l; r++; /// 记录消去的行的 总和 和 数量
                            row[l]=0; /// 标记为已消去的行
                        }
                }
                else if(op=='C')
                {
                        if(col[l]==0) printf("0
    ");
                        else
                        {
                            printf("%lld
    ",col[l]-sumr-r*l);
                            sumc+=l; c++; /// 记录消去的列的 总和 和数量
                            col[l]=0; /// 标记为已消去的列
                        }
                }
    
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    mysql数据库安装与配置
    redis主从配置+sentinel哨兵模式
    Oracle 本地验证和密码文件
    Oracle 12c hub和leaf的转换
    oracle 12c CPU资源隔离
    oracle12 listagg 与 wm_concat行列转换
    Oracle 12c rac搭建
    ClassLoader.loadClass()与Class.forName()的区别《 转》
    docker 安装mysql8.0
    spring boot @EnableWebMvc禁用springMvc自动配置原理。
  • 原文地址:https://www.cnblogs.com/zquzjx/p/8876418.html
Copyright © 2011-2022 走看看