QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#867240#8820. Exchanging Kubic 2lsj2009Compile Error//C++985.1kb2025-01-23 11:52:282025-01-23 11:52:37

Judging History

你现在查看的是最新测评结果

  • [2025-01-23 11:52:37]
  • 评测
  • [2025-01-23 11:52:28]
  • 提交

answer

// #include<bits/stdc++.h>
// // #define int long long
// #pragma GCC optimize(3,"Ofast","inline")
// #define debug(...) fprintf(stderr,__VA_ARGS__)
// #define ll long long
// #define bint __int128
// #define ull unsigned long long
// #define uint unsigned int
// #define ld double
// #define PII pair<int,int>
// #define chkmax(a,b) a=max(a,b)
// #define chkmin(a,b) a=min(a,b)
// #define rep(k,l,r) for(int k=l;k<=r;++k)
// #define per(k,r,l) for(int k=r;k>=l;--k)
// #define cl(f,x) memset(f,x,sizeof(f))
// #define pcnt(x) __builtin_popcount(x)
// #define lg(x) (31-__builtin_clz(x))
// using namespace std;
// void file_IO() {
//     freopen("test.in","r",stdin);
//     freopen("test.out","w",stdout);
// }
// bool M1;
// const int INF=0x3f3f3f3f;
// const ll INFLL=0x3f3f3f3f3f3f3f3f;
// const ld eps=1e-9;
// template<int p>
// struct mint {
// 	int x;
// 	mint() {
// 		x=0;
// 	}
// 	mint(int _x) {
// 		if(_x<0)
// 			_x+=p;
// 		x=_x;
// 	}
// 	friend mint operator + (mint a,mint b) {
// 		return a.x+b.x>=p? a.x+b.x-p:a.x+b.x;
// 	}
// 	friend mint operator - (mint a,mint b)  {
// 		return a.x<b.x? a.x-b.x+p:a.x-b.x;
// 	}
// 	friend mint operator * (mint a,mint b) {
// 		return 1ll*a.x*b.x%p;
// 	}
// 	friend mint operator ^ (mint a,ll b) {
// 		mint res=1,base=a;
// 		while(b) {
// 			if(b&1)
// 				res*=base;
// 			base*=base; b>>=1;
// 		}
// 		return res;
// 	}
// 	friend mint operator ~ (mint a) {
// 		return a^(p-2);
// 	}
// 	friend mint operator / (mint a,mint b) {
// 		return a*(~b);
// 	}
// 	friend mint & operator += (mint& a,mint b) {
// 		return a=a+b;
// 	}
// 	friend mint & operator -= (mint& a,mint b) {
// 		return a=a-b;
// 	}
// 	friend mint & operator *= (mint& a,mint b) {
// 		return a=a*b;
// 	}
// 	friend mint & operator /= (mint& a,mint b) {
// 		return a=a/b;
// 	}
// 	friend mint operator ++ (mint& a) {
// 		return a+=1;
// 	}
// 	friend mint operator -- (mint& a) {
// 		return a-=1;
// 	}
// };
// const int MOD=998244353;
// #define mint mint<MOD>
// const int N=4e2+5,M=8e2+5;
// mint f[2][4][M];
// bool used[N][M];
// void solve() {
//     int n;
//     scanf("%d",&n);
//     rep(i,1,n) {
// 		int m;
// 		scanf("%d",&m);
//         while(m--) {
// 			int x;
// 			scanf("%d",&x);
// 			used[i][x]=true;
// 		}
//     }
// 	mint res=0;
//     rep(v,-n,800-n) {
// 		int p=0;
// 		rep(k,0,3) {
// 			rep(j,0,800)
// 				f[p][k][j]=0;
// 		}
// 		f[p][0][0]=1;
// 		rep(i,1,n) {
// 			p^=1;
// 			rep(k,0,3) {
// 				rep(j,0,800)
// 					f[p][k][j]=0;
// 			}
// 			rep(k,0,3) {
// 				mint tot=0;
// 				rep(j,0,800) {
// 					tot+=f[p^1][k][j];
// 					if(j-i>=v&&used[i][j])
// 						f[p][k|((j-i==v)<<1)|(j-i>=v+n)][j]+=tot;
// 				}
// 			}
// 		}
// 		rep(i,0,800)
// 			res+=mint(-v-n+1)*f[p][3][i];
//     }
//     rep(v,-1,799) {
// 		int p=0;
// 		rep(k,0,3) {
// 			rep(j,0,800)
// 				f[p][k][j]=0;
// 		}
// 		f[p][0][0]=1;
// 		rep(i,1,n) {
// 			p^=1;
// 			rep(k,0,3) {
// 				rep(j,0,800)
// 					f[p][k][j]=0;
// 			}
// 			rep(k,0,3) {
// 				mint tot=0;
// 				rep(j,0,800) {
// 					tot+=f[p^1][k][j];
// 					if(j-i<=v&&used[i][j])
// 						f[p][k|((j-i==v)<<1)|(j-i<=v-n)][j]+=tot;
// 				}
// 			}
// 		}
// 		rep(i,0,800)
// 			res+=mint(v)*f[p][3][i];
//     }
// 	printf("%d\n",res.x);
// }
// bool M2;
// // g++ QOJ8820.cpp -std=c++14 -Wall -O2 -o QOJ8820
// signed main() {
//     // file_IO();
//     int testcase=1;
//     // scanf("%d",&testcase);
//     while(testcase--)
//         solve();
//     debug("used time = %dms\n",(signed)(1000*clock()/CLOCKS_PER_SEC));
//     debug("used memory = %dMB\n",(signed)((&M1-&M2)/1024/1024));
//     return 0;
// }
// 怎么卡我常,贺个代码过了 /fn
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const ll N=403,K=800,H=998244353;
ll n,m,ans,f[N*2][2][2],g[N*2][2][2];
bool vis[N][N*2];
void Add(ll &x,ll y){x=x+y>=H?x+y-H:x+y;}
void NB(ll &x,ll y){x=(x+y)%H;}
ll Sol1(ll v)
{
	memset(f,0,sizeof(f));f[0][0][0]=1;ll s=0;
	for(int t=1;t<=n;t++)
	{
		memcpy(g,f,sizeof(g));memset(f,0,sizeof(f));
		for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
			Add(g[i][x][y],g[i-1][x][y]);
		for(int z=0;z<=min(m,t+v);z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
			Add(f[z][x|(z-t==v)][y|(z-t<=v-n)],g[z][x][y]);
	}
	for(int i=0;i<=m;i++)Add(s,f[i][1][1]);
	return s;
}
ll Sol2(ll v)
{
	memset(f,0,sizeof(f));f[0][0][0]=1;ll s=0;
	for(int t=1;t<=n;t++)
	{
		memcpy(g,f,sizeof(g));memset(f,0,sizeof(f));
		for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
			Add(g[i][x][y],g[i-1][x][y]);
		for(int z=max(v+t,0ll);z<=K;z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
			Add(f[z][x|(z-t==v)][y|(z-t>=v+n)],g[z][x][y]);
	}
	for(int i=0;i<=m;i++)Add(s,f[i][1][1]);
	return s;
}
int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		ll len,x;cin>>len;
		while(len--)cin>>x,vis[i][x]=1,m=max(m,x);
	}
	for(ll v=-1;v<=m;v++)NB(ans,Sol1(v)*(v+H));
	for(ll v=-n;v<=m-n;v++)NB(ans,Sol2(v)*(-v-n+1+H));
	cout<<ans;
}

Details

answer.code: In function ‘ll Sol1(ll)’:
answer.code:179:48: warning: range-based ‘for’ loops only available with ‘-std=c++11’ or ‘-std=gnu++11’ [-Wc++11-extensions]
  179 |                 for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
      |                                                ^
answer.code:179:52: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
  164 | #include<bits/stdc++.h>
  +++ |+#include <initializer_list>
  165 | using namespace std;
......
  179 |                 for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
      |                                                    ^
answer.code:179:64: warning: range-based ‘for’ loops only available with ‘-std=c++11’ or ‘-std=gnu++11’ [-Wc++11-extensions]
  179 |                 for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
      |                                                                ^
answer.code:179:68: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
  179 |                 for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
      |                                                                    ^
answer.code:181:70: warning: range-based ‘for’ loops only available with ‘-std=c++11’ or ‘-std=gnu++11’ [-Wc++11-extensions]
  181 |                 for(int z=0;z<=min(m,t+v);z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
      |                                                                      ^
answer.code:181:74: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
  181 |                 for(int z=0;z<=min(m,t+v);z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
      |                                                                          ^
answer.code:181:86: warning: range-based ‘for’ loops only available with ‘-std=c++11’ or ‘-std=gnu++11’ [-Wc++11-extensions]
  181 |                 for(int z=0;z<=min(m,t+v);z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
      |                                                                                      ^
answer.code:181:90: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
  181 |                 for(int z=0;z<=min(m,t+v);z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
      |                                                                                          ^
answer.code: In function ‘ll Sol2(ll)’:
answer.code:193:48: warning: range-based ‘for’ loops only available with ‘-std=c++11’ or ‘-std=gnu++11’ [-Wc++11-extensions]
  193 |                 for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
      |                                                ^
answer.code:193:52: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
  193 |                 for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
      |                                                    ^
answer.code:193:64: warning: range-based ‘for’ loops only available with ‘-std=c++11’ or ‘-std=gnu++11’ [-Wc++11-extensions]
  193 |                 for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
      |                                                                ^
answer.code:193:68: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
  193 |                 for(int i=1;i<=m;i++)for(int x:{0,1})for(int y:{0,1})
      |                                                                    ^
answer.code:195:72: warning: range-based ‘for’ loops only available with ‘-std=c++11’ or ‘-std=gnu++11’ [-Wc++11-extensions]
  195 |                 for(int z=max(v+t,0ll);z<=K;z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
      |                                                                        ^
answer.code:195:76: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
  195 |                 for(int z=max(v+t,0ll);z<=K;z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
      |                                                                            ^
answer.code:195:88: warning: range-based ‘for’ loops only available with ‘-std=c++11’ or ‘-std=gnu++11’ [-Wc++11-extensions]
  195 |                 for(int z=max(v+t,0ll);z<=K;z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
      |                                                                                        ^
answer.code:195:92: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
  195 |                 for(int z=max(v+t,0ll);z<=K;z++)if(vis[t][z])for(int x:{0,1})for(int y:{0,1})
      |                                                                                            ^