比赛 2024暑期C班集训2 评测结果 TTTTTTTTTT
题目名称 Vera 与现代艺术 最终得分 0
用户昵称 小金 运行时间 20.000 s
代码语言 C++ 内存使用 17.11 MiB
提交时间 2024-07-02 11:06:03
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
map<long long,int> b;
map<long long,long long> p;
int n,q;
long long ma,hr[200010];
struct rs{
    long long x,y,v,a,b;
}c[200010];
void chu()
{
    long long a=2,j=1;
    for(int i=1;i<=62;i++)
    {
        j=j*a;
        b[j]=1;
    }
    b[1]=1;
    b[0]=1;
}
void find(int bh,long long nx,long long ny)
{
    while(b[nx]!=1)
    {
        nx--;
    }
    c[bh].a=nx;
    while(b[ny]!=1)
    {
        ny--;
    }
    c[bh].b=ny;
}
void qi(long long nr,long long nc)
{
    long long ans=0;
    for(int i=1;i<=n;i++)
    {
        if((nr-c[i].x)%c[i].a==0&&(nc-c[i].y)%c[i].b==0)
        {
            ans+=c[i].v;
        }
    }
    printf("%lld\n",ans);
}
void bj(int bh)
{
    for(int i=1;;i++)
    {
        long long l=c[bh].x+c[bh].a*i;
        if(l>ma)
        {
            break;
        }
        p[l]+=c[bh].v;
    }
}
int main()
{
    freopen("modern.in","r",stdin);
    freopen("modern.out","w",stdout);
    chu();
    scanf("%d%d",&n,&q);
    int flag=1;
    for(int i=1;i<=n;i++)
    {
        scanf("%lld%lld%lld",&c[i].x,&c[i].y,&c[i].v);
        find(i,c[i].x,c[i].y);
        if(c[i].y!=1)
        {
            flag=0;
        }
    }
    if(flag==0)
    {
        for(int i=1;i<=q;i++)
        {
            long long r,c;
            scanf("%lld%lld",&r,&c);
            qi(r,c);
        }
    }
    else
    {
        for(int i=1;i<=q;i++)
        {
            long long c;
            scanf("%lld%lld",&hr[i],&c);
            ma=max(ma,hr[i]);
        }
        for(int i=1;i<=n;i++)
        {
            bj(i);
        }
        for(int i=1;i<=q;i++)
        {
            printf("%lld\n",p[hr[i]]);
        }
    }
    return 0;
}