2018.7.23模拟考试

Posted water-radish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018.7.23模拟考试相关的知识,希望对你有一定的参考价值。

天我居然A了一道题???怕不是把明年的运气都用光了

T1 题意简述:给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和。

             n<=2000,m<=50000

   解题思路:这道题其实最主要的是这个...每个测试点时限6秒

             这告诉我们...暴力就能过...

             当然也不能随便暴力。二维前缀和即可。复杂度O(nm)。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<ctime>
#define ll long long
using namespace std;
ll n,m;
ll ans,suma[2010][2010],sumb[2010][2010];
ll read()
{
    ll f=1;ll x=0;char s=getchar();
    while(s<0||s>9){if(s==-)f=-1;s=getchar();}
    while(s>=0&&s<=9){x=x*10+s-0;s=getchar();}
    x*=f;return x;
}
int main()
{
//    system("CreatRand.exe");
    freopen("matrix.in","r",stdin);
    freopen("matrix.out","w",stdout);
//    ll st=clock();
    n=read(),m=read();
    for(ll i=1;i<=n;i++)
        for(ll j=1;j<=n;j++)
            suma[i][j]=read(),suma[i][j]+=suma[i-1][j];
    for(ll i=1;i<=n;i++)
        for(ll j=1;j<=n;j++)
            sumb[i][j]=read(),sumb[i][j]+=sumb[i][j-1];
    for(ll i=1;i<=m;i++)
    {
        ans=0;
        ll xa=read(),ya=read(),xb=read(),yb=read();
        if(xa>xb) swap(xa,xb);
        if(ya>yb) swap(ya,yb);
        for(ll i=1;i<=n;i++)
            ans+=(suma[xb][i]-suma[xa-1][i])*(sumb[i][yb]-sumb[i][ya-1]);
        printf("%lld
",ans);
    }
//    ll ed=clock();
//    printf("%lld
",ed-st);
    return 0;
}

 


 

T2 题意简述平面上有N个整数坐标点。如果将点(x0,y0)移动到(x1,y1)。则代价为它们之间的切比雪夫距离。求使得K个点在同一位置上最少需要的代价。

 

以上是关于2018.7.23模拟考试的主要内容,如果未能解决你的问题,请参考以下文章

考试系统(用xml文件模拟数据库)

[考试反思]1002csp-s模拟测试57:平庸

2018.7.5模拟考试

考试心得 模拟22

考试总结 模拟26

[考试反思]0410省选模拟67:迷惑