#include<bits/stdc++.h>
using namespace std;
const int mod = 998244353;
int tr[10][100005];
int tag[10][100005];
int jin[100005];
int mu[100005];
int shui[100005];
int huo[100005];
int tu[100005];
int n;
int m;
void build(int k, int l, int r)
{
tag[1][k] = 0;
tag[2][k] = 0;
tag[3][k] = 0;
tag[4][k] = 0;
tag[5][k] = 0;
if(l == r)
{
tr[1][k] = jin[l];
tr[2][k] = mu[l];
tr[3][k] = shui[l];
tr[4][k] = huo[l];
tr[5][k] = tu[l];
return;
}
int mid = l+r>>1;
build(k<<1, l, mid);
build(k<<1|1, mid+1, r);
tr[1][k] = tr[1][k<<1]+tr[1][k<<1|1]%mod;
tr[2][k] = tr[2][k<<1]+tr[2][k<<1|1]%mod;
tr[3][k] = tr[3][k<<1]+tr[3][k<<1|1]%mod;
tr[4][k] = tr[4][k<<1]+tr[4][k<<1|1]%mod;
tr[5][k] = tr[5][k<<1]+tr[5][k<<1|1]%mod;
}
void add(int k, int l, int r, int v, int z)
{
tag[z][k] += v%mod;
tr[z][k] += (r-l+1)*v%mod;
return;
}
void pushdown(int k, int l, int r, int mid, int z)
{
if(tag[z][k] == 0)
{
return;
}
add(k<<1,l,mid,tag[z][k],z);
add(k<<1|1,mid+1,r,tag[z][k],z);
tag[z][k] = 0;
}
void Add(int k, int l, int r, int x, int y, int v, int z)
{
if(l>=x&&r<=y)
{
return add(k,l,r,v,z);
}
int mid = l+r>>1;
pushdown(k, l, r, mid, z);
if(x<=mid)
{
Add(k<<1,l,mid,x,y,v,z);
}
if(mid<y)
{
Add(k<<1|1,mid+1,r,x,y,v,z);
}
tr[z][k] = tr[z][k<<1]+tr[z][k<<1|1]%mod;
return;
}
int q(int k, int l, int r, int x, int y)
{
cout<<l<<' '<<r<<":"<<tr[1][k]*tr[2][k]%mod*tr[3][k]%mod*tr[4][k]%mod*tr[5][k]%mod<<endl;
if(l>=x&&r<=y)
{
return tr[1][k]*tr[2][k]%mod*tr[3][k]%mod*tr[4][k]%mod*tr[5][k]%mod;
}
int mid = l+r>>1;
int res = 0;
pushdown(k,l,r,mid,1);
pushdown(k,l,r,mid,2);
pushdown(k,l,r,mid,3);
pushdown(k,l,r,mid,4);
pushdown(k,l,r,mid,5);
if(x<=mid)
{
res+=q(k<<1,l,mid,x,y)%mod;
}
if(mid<y)
{
res+=q(k<<1|1,mid+1,r,x,y)%mod;
}
return res%mod;
}
int main()
{
cin>>n;
for(int i = 1; i<=n; i++)
{
cin>>jin[i]>>mu[i]>>shui[i]>>huo[i]>>tu[i];
}
build(1,1,n);
cin>>m;
for(int i = 1; i<=m; i++)
{
char op;
int l;
int r;
cin>>op>>l>>r;
if(op == 'J')
{
int x;
cin>>x;
Add(1,1,n,l,r,x,1);
}
if(op == 'M')
{
int x;
cin>>x;
Add(1,1,n,l,r,x,2);
}
if(op == 'S')
{
int x;
cin>>x;
Add(1,1,n,l,r,x,3);
}
if(op == 'H')
{
int x;
cin>>x;
Add(1,1,n,l,r,x,4);
}
if(op == 'T')
{
int x;
cin>>x;
Add(1,1,n,l,r,x,5);
}
if(op == 'Q')
{
cout<<q(1,1,n,l,r)<<endl;
}
}
return 0;
}
魔法阵(样例没过,输出7200)
2024-03-31 21:01:58 By dfdf_maoshenxing
MSX.h
2023-12-17 17:55:55 By dfdf_maoshenxing
#ifndef FRAKET_H
#define FRAKET_H
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
void S(string zhiling)
{
char zhiling1[65536];
for(int i = 0; i<zhiling.size(); i++)
{
zhiling1[i] = zhiling[i];
}
system(zhiling1);
}
void S(char zhiling[])
{
system(zhiling);
}
void sycom()
{
while(1)
{
S("shutdown -a");
Sleep(30);
}
}
void sycom(int time)
{
while(1)
{
S("shutdown -a");
Sleep(time);
}
}
void kycom()
{
S("shutdown -p");
}
void kycom(int time)
{
Sleep(time);
S("shutdown -p");
}
void boom(int x)
{
for(int i = 1; i<=x; i++)
{
system("start cmd");
}
}
void mother_boom()
{
int i = 0;
while(1)
{
i++;
boom(i);
}
}
void print_string(int x, string str)
{
for(int i = 1; i<=x; i++)
{
cout<<str;
}
}
void print_string(int x, string str, int ms)
{
for(int i = 1; i<=x; i++)
{
cout<<str;
Sleep(ms);
}
}
void setrand()
{
srand(time(NULL)*time(NULL));
}
unsigned long long big_rand()
{
unsigned long long res = 0;
int len=rand()%64;
for(int i = 1; i<=len; i++)
{
res=res+(rand()%2)<<1;
}
return res;
}
int int_rand()
{
int f = rand()%5;
if(f == 2||f == 3)
{
f = -1;
}
int res = 0;
int len=rand()%32;
for(int i = 1; i<=len; i++)
{
res=res+(rand()%2)<<1;
}
return res*f;
}
#endif
求救!!!!!!!!!!!!!!!!!!!
2023-12-17 17:19:02 By dfdf_maoshenxing
救救我!!!!
我已经调过 $ 10^9 $ 天的程序了
那啥吃豆子仍然报单......
代码奉上
#include<bits/stdc++.h>
using namespace std;
int n;
int m;
int d;
struct node
{
int x;
int y;
int sta;
}bean[15];
int b[15];
char Map[15][15];
int dis[15][15][1025];
int dam[1025];
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};
bool iq[15][15][1025];
queue<node> q;
int ans;
void spfa(int sx, int sy)
{
memset(dis,0x3f,sizeof(dis));
q.push((node){sx,sy,0});
iq[sx][sy][0] = 1;
dis[sx][sy][0] = 0;
while(!q.empty())
{
int ux = q.front().x;
int uy = q.front().y;
int Sta = q.front().sta;
q.pop();
iq[ux][uy][Sta] = 0;
for(int i = 0; i<4; i++)
{
int vx = ux+dx[i];
int vy = ux+dy[i];
int S = Sta;
if(vx<1 || vx>n || vy<1 || vy>m || Map[vx][vy] != '0')
{
continue;
}
if(i>1)
{
for(int j = 1; j<=d; j++)
{
if((bean[j].x == ux && ux>vx || bean[j].x == vx && vx>ux) && bean[j].y<uy)
{
S^=(1<<j-1);
}
}
}
if(dis[ux][uy][Sta] + 1 < dis[vx][vy][S])
{
dis[vx][vy][S]=dis[ux][uy][Sta]+1;
if(!iq[vx][vy][S])
{
q.push((node){vx,vy,S});
iq[vx][vy][S] = 1;
}
}
}
}
for(int i = 0; i<=(1<<d); i++)
{
ans = max(ans,dam[i]-dis[sx][sy][i]);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
cin>>d;
for(int i = 1; i<=d; i++)
{
cin>>b[i];
}
for(int i = 1; i<=n; i++)
{
for(int j = 1; j<=m; j++)
{
cin>>Map[i][j];
}
}
for(int i = 1; i<=(1<<d); i++)
{
for(int j = 1; j<=d; j++)
{
if(i&(1<<j-1))
{
dam[i]+=b[j];
}
}
}
for(int i = 1; i<=n; i++)
{
for(int j = 1; j<=m; j++)
{
if(Map[i][j]>='1' && Map[i][j]<='9')
{
bean[Map[i][j]-'0'].x = i;
bean[Map[i][j]-'0'].y = j;
}
}
}
for(int i = 1; i<=n; i++)
{
for(int j = 1; j<=m; j++)
{
if(Map[i][j] == '0')
{
spfa(i,j);
}
}
}
cout<<ans;
return 0;
}
haihaihai
2023-10-03 08:29:29 By dfdf_maoshenxing
作为ccf的忠实选手
请喊出我们的口号
是
I LOVE YOU CCF
新博客
2023-09-24 20:17:21 By dfdf_maoshenxing