QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#853624#905. 三元环枚举white_tigerWA 0ms50788kbC++141.7kb2025-01-11 17:53:002025-01-11 17:53:12

Judging History

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

  • [2025-01-11 17:53:12]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:50788kb
  • [2025-01-11 17:53:00]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5,p=998244353,M=N*2;
int n,m,u[N],v[N],w[N],ans;
namespace hand_bitset{
    struct list{
        int nxt,lst,id;
        bitset<700>val;
    }ls[M];int idx;
    struct hbt{int fs;}ed[N];
    int insert(int l,int r,int id){
        int cc=++idx;
        ls[cc].lst=l,ls[cc].nxt=r;
        ls[l].nxt=cc,ls[r].lst=cc;
        return ls[cc].id=id,cc;
    }void ad(hbt &nw,int ps){
        int l=0,r=nw.fs,id=ps/700;
        if(ls[r].id>id||!r){
            int cc=insert(l,r,id);
            ls[cc].val[ps-id*700]=1;
            nw.fs=cc;return;
        }while(r){
            if(ls[r].id>id) break;
            if(ls[r].id==id){
                ls[r].val[ps-id*700]=1;
                return; 
            }l=r,r=ls[r].nxt;
        }int cc=insert(l,r,id);
        ls[cc].val[ps-id*700]=1;
	}int count(bitset<700>x,int y){
		int sum=0;
		for(int i=0;i<700;i++)
			if(x[i]) sum=sum*w[y*700+i]%p;
		return sum;
	}int add(hbt x,hbt y){
        int sum=0;
        for(int i=x.fs,j=y.fs;i&&j;){
            if(ls[i].id==ls[j].id){
                sum=sum*count(ls[i].val&ls[j].val,ls[i].id)%p;
                i=ls[i].nxt,j=ls[j].nxt;
            }else if(ls[j].id<ls[i].id)
                j=ls[j].nxt;else i=ls[i].nxt;
        }return sum;
    }
}using namespace hand_bitset;
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>w[i];
    for(int i=1;i<=m;i++) cin>>u[i]>>v[i];
    for(int i=1;i<=m;i++)
        ad(ed[u[i]],v[i]),ad(ed[v[i]],u[i]);
    for(int i=1;i<=m;i++)
        ans=(ans+add(ed[u[i]],ed[v[i]]))%p;
    cout<<ans*(p/3+1)%p;
    return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 50788kb

input:

4 5
1 2 3 4
0 3
2 0
2 1
2 3
1 3

output:

0

result:

wrong answer 1st words differ - expected: '36', found: '0'