头像

EsforzarsePorAmar




离线:18小时前


最近来访(76)
用户头像
Cyzh
用户头像
浩哥哥
用户头像
kuan525
用户头像
搽畵Sue
用户头像
来罐达芬奇
用户头像
纪念曾经的信念
用户头像
Qw1ko_
用户头像
听闻爱情
用户头像
有机物
用户头像
fw一个
用户头像
栒寻
用户头像
ㅤ_942
用户头像
唔西迪西
用户头像
无名小卒x
用户头像
小郭冲冲冲
用户头像
soccoder
用户头像
狮子星
用户头像
哦呼_2
用户头像
南京理工大学泰州科技学院_第一届ACC决赛
用户头像
你是水


#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1050;
int a[N][N],b[N][N];
int main()
{
    int n,m,q;
    cin >> n >> m >> q;
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            cin >> a[i][j];
        }
    }
    while(q--)
    {
        int x1,y1,x2,y2,c;
        cin >> x1 >> y1 >> x2 >> y2 >> c;
        b[x1][y1]+=c;
        b[x1][y2+1]-=c;
        b[x2+1][y1]-=c;
        b[x2+1][y2+1]+=c;
    }
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            b[i][j]+=(b[i-1][j]+b[i][j-1]-b[i-1][j-1]);
            a[i][j]+=b[i][j];
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}




#include <iostream>
#include <cstring>
#include <algorithm>
const int N = 1e5+50;
int a[N],b[N];
using namespace std;
void dif(int l,int r,int c)
{
    b[l]+=c;
    b[r+1]-=c;
}
int main()
{
    int n,m;
    cin >> n >> m;
    for(int i=1;i<=n;++i)
    {
        cin >> a[i];
    }
    for(int i=1;i<=m;++i)
    {
        int l,r,c;
        cin >> l >> r >> c;
        dif(l,r,c);
    }
    for(int i=1;i<=n;++i)
    {
        b[i]+=b[i-1];
        cout << a[i]+b[i] << " ";
    }
    return 0;
}



#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 5050;
int a[N][N];                        // 开两个数组会内存超限
int main()
{
    int n,r;
    cin >> n >> r;
    r=min(5001,r);                  // 地图最多5000*5000,下面横纵坐标都加1,所以和5001作比较
    int maxx=r,maxy=r;
    for(int i=1;i<=n;++i)
    {
        int x,y,w;
        cin >> x >> y >> w;
        ++x,++y;                    // 横纵坐标都加1,方便前缀和从 1 1 开始计算
        maxx=max(maxx,x);
        maxy=max(maxy,y);
        a[x][y]+=w;                 // 不同目标可能在同一位置,此时a为该位置价值总和
    }
    for(int i=1;i<=maxx;++i)
    {
        for(int j=1;j<=maxy;++j)
        {
            a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];        // =前的a[i][j]更新为前缀和数组,=后的a[i][j]为该位置价值总和
        }
    }
    int ans=-1;
    for(int i=r;i<=maxx;++i)
    {
        for(int j=r;j<=maxy;++j)
        {
            ans=max(ans,a[i][j]-a[i-r][j]-a[i][j-r]+a[i-r][j-r]);   // r*r范围的前缀和
        }
    }
    cout << ans << endl;
    return 0;
}



#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1050;
int a[N][N],b[N][N];
int main()
{
    int n,m,q;
    cin >> n >> m >> q;
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            cin >> a[i][j];
            b[i][j]=b[i-1][j]+b[i][j-1]+a[i][j]-b[i-1][j-1];
        }
    }
    // for(int i=1;i<=n;++i)
    // {
    //     for(int j=1;j<=m;++j)
    //     {
    //         cout << b[i][j] << " ";
    //     }
    //     cout << endl;
    // }
    while(q--)
    {
        int x,y,z,t;
        cin >> x >> y >> z >> t;
        cout << b[z][t]-b[x-1][t]-b[z][y-1]+b[x-1][y-1] << endl;
    }
    return 0;
}



#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+50;
int a[N],b[N];
int main()
{
    int n,m;
    cin >> n >> m;
    for(int i=1;i<=n;++i)
    {
        cin >> a[i];
        b[i]=b[i-1]+a[i];
    }
    while(m--)
    {
        int x,y;
        cin >> x >> y;
        cout << b[y]-b[x-1] << endl;
    }
    return 0;
}



#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+50;
int a[N];
long long b[N];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;++i)
    {
        b[i]=b[i-1]+a[i];
    }
    long long ans=0;
    long long sum=b[n];
    if(sum%3!=0 || n<3)
        cout << 0 << endl;
    else
    {
        long long t=sum/3,cnt=0;
        for(int i=1;i<n;++i)
        {
            if(b[i]==2*t)
                ans+=cnt;
            if(b[i]==t)
                ++cnt;
        }
        cout << ans << endl;
    }
    return 0;
}


活动打卡代码 AcWing 3400. 统计次数

模拟

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    int n,k;
    cin >> n >> k;
    char c=k+'0';
    int ans=0;
    for(int i=1;i<=n;++i)
    {
        string s=to_string(i);
        int sn=s.length();
        for(int j=0;j<sn;++j)
        {
            if(s[j]==c)
                ++ans;
        }
    }
    cout << ans << endl;
    return 0;
}


活动打卡代码 AcWing 4699. 如此编码

推公式

如此编码.png

#include<iostream>
using namespace std;
const int N=25;
int a[N],b[N],c[N];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    c[0]=1;
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&a[i]);
        c[i]=c[i-1]*a[i];
        int d=m%c[i]-m%c[i-1];
        cout << d/c[i-1] << " ";
    }
    return 0;
}


活动打卡代码 AcWing 4509. 归一化处理

模拟

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    vector<int> vec;
    int sum=0;
    for(int i=1;i<=n;++i)
    {
        int t;
        cin >> t;
        vec.push_back(t);
        sum+=t;
    }
    double avg=(double)sum/n;
    double sum1=0;
    for(int i=0;i<n;++i)
    {
        sum1+=(vec[i]-avg)*(vec[i]-avg);
    }
    double d=sum1/n;
    for(int i=0;i<n;++i)
    {
        cout << (vec[i]-avg)/sqrt(d) << endl;
    }
    return 0;
}


活动打卡代码 AcWing 4454. 未初始化警告

哈希

#include<iostream>
using namespace std;
const int N=1e5+50;
bool a[N];
int main()
{
    int n,k;
    cin >> n >> k;
    a[0]=true;
    int ans=0;
    while(k--)
    {
        int x,y;
        cin >> x >> y;
        if(!a[y])
            ++ans;
        a[x]=true;
    }
    cout << ans << endl;
    return 0;
}