比赛 |
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;
}