結果
| 問題 | No.2206 Popcount Sum 2 |
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2025-08-02 17:44:40 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 3,503 bytes |
| 記録 | |
| コンパイル時間 | 3,326 ms |
| コンパイル使用メモリ | 282,880 KB |
| 実行使用メモリ | 10,664 KB |
| 最終ジャッジ日時 | 2025-08-02 17:44:53 |
| 合計ジャッジ時間 | 12,051 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 4 RE * 4 TLE * 1 -- * 9 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
bool ST;
namespace FastIO
{
#ifdef ONLINE_JUDGE
char IN[1<<20],*inS=IN,*inT=IN;
#define getchar() inS==inT&&(inT=(inS=IN)+fread(IN,1,1<<20,stdin),inS==inT)?EOF:*inS++
char OUT[1<<20],*outS=OUT;
#define putchar(x) (outS-OUT==1<<20?fwrite(OUT,1,1<<20,stdout),outS=OUT,0:0,*outS++=x)
struct Writer{~Writer(){fwrite(OUT,1,outS-OUT,stdout);}}Writ;
#endif
template<typename T> inline void read(T &x)
{
x=0;short f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=-1;
for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+(ch^48);
x=~f?x:-x;
}
inline void read(char &ch){ch=getchar();for(;ch=='\n'||ch==' ';ch=getchar());}
inline void read(char s[])
{
int len=0;char ch=getchar();
for(;ch=='\n'||ch==' ';ch=getchar());
for(;ch!='\n'&&ch!=' '&&ch!='\r'&&ch!=EOF;ch=getchar()) s[++len]=ch;
s[++len]='\0';
}
template<typename T> inline void write(T x)
{
static char s[105];int top=0;
do s[top++]=x%10+'0',x/=10;while(x);
for(;top;) putchar(s[--top]);
}
inline void write(const char* s){for(int i=0;s[i]!='\0';i++)putchar(s[i]);}
template<typename T> inline void print(T x,char ch='\n')
{
if(is_same<char,T>::value) putchar(x);
else{if(x<0)putchar('-'),x=-x;write(x);}
if(ch!=' '&&ch!='\n'&&ch!='\0') putchar(' ');
putchar(ch);
if(ch!=' '&&ch!='\n'&&ch!='\0') putchar('\n');
}
inline void print(const char* s,char ch='\n'){write(s);putchar(ch);}
template<typename T,typename... Args> inline void read(T &x,Args&... args){read(x);read(args...);}
template<typename T,typename... Args> inline void print(T x,Args... args){print(x,' ');print(args...);}
}
using namespace FastIO;
constexpr int N=2e5+5,B=448,mod=998244353;
namespace math
{
#define T(x,y) x=(x+(y))%mod
#define S(x,y) (1ll*(x)*(y)%mod)
int fac[N],inv[N];
int power(int x,int y)
{
int res=1;
for(;y;y>>=1,x=S(x,x))
if(y&1) res=S(res,x);
return res;
}
void prework(int n)
{
for(int i=fac[0]=1;i<=n;i++) fac[i]=S(fac[i-1],i);
inv[n]=power(fac[n],mod-2);
for(int i=n-1;i>=0;i--) inv[i]=S(inv[i+1],i+1);
}
int C(int x,int y){return x<y?0:S(fac[x],S(inv[y],inv[x-y]));}
}
using namespace math;
namespace Junounly
{
int inv2,Q,n=1,m=1,res[N],id[N],ans=1;
struct node{int n,m,id;}q[N];
void addn(int x){ans=(S(ans,2)+mod-C(x-2,m-1))%mod;}
void deln(int x){ans=S((ans+C(x-2,m-1))%mod,inv2);}
void addm(int x){T(ans,C(n-1,x-1));}
void delm(int x){T(ans,mod-C(n-1,x-1));}
void main()
{
read(Q);prework(2e5);inv2=power(2,mod-2);
for(int i=1;i<=Q;i++) read(q[i].n,q[i].m),q[i].id=i;
for(int i=1;i<=2e5;i++) id[i]=i/B;
sort(q+1,q+Q+1,[](node x,node y){return id[x.n]==id[y.n]?(x.n&1?x.m>y.m:x.m<y.m):id[x.n]<id[y.n];});
for(int i=1;i<=Q;i++)
{
for(;n<q[i].n;) addn(++n);
for(;n>q[i].n;) deln(n--);
for(;m<q[i].m;) addm(++m);
for(;m>q[i].m;) delm(m--);
res[q[i].id]=S((power(2,q[i].n)+mod-1)%mod,ans);
}
for(int i=1;i<=Q;i++) print(res[i]);
}
}
bool ED;
int main()
{
#ifdef ONLINE_JUDGE
Junounly::main();
#else
double st=clock();
Junounly::main();
double ed=clock();
cerr<<endl;
cerr<<"Time: "<<ed-st<<" ms\n";
cerr<<"Memory: "<<abs(&ST-&ED)/1024.0/1024.0<<" MB\n";
#endif
return 0;
}
vjudge1