Submission #36126910
Source Code Expand
#include<bits/stdc++.h> using namespace std; typedef unsigned long long u64; // 2^64 要用完 #define rep(i,a,n) for(u64 i=a;i<(u64)n;i++) u64 read(){u64 r;scanf("%llu",&r);return r;} const int N_MAX=1e6+10; const int SP=1<<3; const int SN=1<<SP;//预计算 cache大小 u64 A[N_MAX]; u64 pw[N_MAX]={1};//pw[i]=basis**i,pw[0]=1 u64 hs[N_MAX];//hw[i]=前i个的在nimber下的hash,不需要mod[0,2^{2^k})中的nimber做加乘结果还在[0,2^{2^k})中 u64 small[SN][SN];//预计算 template<bool is_pre=false> // 预计算 u64 nim_product(u64 a,u64 b,int p=1<<6){ // a < (1<<p), b < (1<<p), p=1<<k if(min(a,b)<=1)return a*b; if(!is_pre and p<=SP)return small[a][b]; p>>=1;//2^k/2=2^{k-1} u64 a0=(a>>p),a1=a&((1ull<<p)-1); // a=a0*2^{2^{k-1}}+a1; u64 b0=(b>>p),b1=b&((1ull<<p)-1); // b=b0*2^{2^{k-1}}+b1; u64 a1b1=nim_product<is_pre>(a1,b1,p); // = ((a0\otimes b0)\otimes 2^{2^{k-1}-1}) return nim_product<is_pre>(nim_product<is_pre>(a0,b0,p),1ull<<(p-1),p)^ // \oplus (2^{2^{k-1}}\cdot ((a0\oplus a1)\otimes(b0\oplus b1)\ominus (a1\oplus b1))\ ) ((nim_product<is_pre>(a0^a1,b0^b1,p)^a1b1)<<p)^ // \oplus (a1\otimes b1) a1b1; } u64 get(int l,int r){return nim_product(hs[l],pw[r-l])^hs[r];} // hs[r]-hs[l]*(basis**(r-l)) int main(){ int N=read(); int Q=read(); rep(i,0,N)A[i]=read(); rep(i,0,SN)rep(j,0,SN)small[i][j]=nim_product<true>(i,j,SP); mt19937_64 rng(time(NULL));//runtime random u64 basis=rng(); rep(i,1,N+1){ pw[i]=nim_product(pw[i-1],basis);//pw[i]=pw[i-1]*b hs[i]=nim_product(hs[i-1],basis)^A[i-1];//hs[i]=hs[i-1]*b+a[i-1] } while(Q--){//(l,r] int l0=read()-1; int r0=read(); int l1=read()-1; int r1=read();//l1-l0==r1-r0 int l2=read()-1; int r2=read(); int l=0; int r=min(r2-l2,r0-l0)+1; while(l+1<r){//二分找不等的点 int m=(l+r)/2; ((get(l0,l0+m)^get(l1,l1+m)^get(l2,l2+m))?r:l)=m; } printf("%s\n",(l2+l!=r2 and(l0+l==r0 or (A[l0+l]^A[l1+l])<A[l2+l]))?"Yes":"No"); } return 0; }
Submission Info
Submission Time | |
---|---|
Task | Ex - XOR Sum of Arrays |
User | cromarmot |
Language | C++ (GCC 9.2.1) |
Score | 600 |
Code Size | 2018 Byte |
Status | AC |
Exec Time | 1203 ms |
Memory | 15968 KiB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:45:9: warning: unused variable ‘r1’ [-Wunused-variable] 45 | int r1=read();//l1-l0==r1-r0 | ^~ ./Main.cpp: In function ‘u64 read()’: ./Main.cpp:5:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] 5 | u64 read(){u64 r;scanf("%llu",&r);return r;} | ~~~~~^~~~~~~~~~~
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 600 / 600 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 01_a_small_00.txt, 01_a_small_01.txt, 01_a_small_02.txt, 01_a_small_03.txt, 02_n_small_00.txt, 02_n_small_01.txt, 03_q_small_00.txt, 03_q_small_01.txt, 04_random_00.txt, 04_random_01.txt, 04_random_02.txt, 05_period_in_3_00.txt, 05_period_in_3_01.txt, 05_period_in_3_02.txt, 05_period_in_3_03.txt, 05_period_in_3_04.txt, 05_period_in_3_05.txt, 05_period_in_3_06.txt, 05_period_in_3_07.txt, 05_period_in_3_08.txt, 05_period_in_3_09.txt, 05_period_in_3_10.txt, 05_period_in_3_11.txt, 05_period_in_3_12.txt, 05_period_in_3_13.txt, 05_period_in_3_14.txt, 05_period_in_3_15.txt, 06_period_00.txt, 06_period_01.txt, 06_period_02.txt, 06_period_03.txt, 06_period_04.txt, 06_period_05.txt, 06_period_06.txt, 06_period_07.txt, 06_period_08.txt, 06_period_09.txt, 06_period_10.txt, 06_period_11.txt, 06_period_12.txt, 06_period_13.txt, 06_period_14.txt, 06_period_15.txt, 07_corner_00.txt, 07_corner_01.txt, 08_handmade_00.txt, 09_lcp_eq_1_00.txt, 09_lcp_eq_1_01.txt, 09_lcp_eq_1_02.txt, 09_lcp_eq_1_03.txt, 09_lcp_eq_1_04.txt, 10_lcp_eq_255_00.txt, 10_lcp_eq_255_01.txt, 10_lcp_eq_255_02.txt, 10_lcp_eq_255_03.txt, 10_lcp_eq_255_04.txt, 11_lcp_eq_512_00.txt, 11_lcp_eq_512_01.txt, 11_lcp_eq_512_02.txt, 11_lcp_eq_512_03.txt, 11_lcp_eq_512_04.txt, 12_lcp_eq_1023_00.txt, 12_lcp_eq_1023_01.txt, 12_lcp_eq_1023_02.txt, 12_lcp_eq_1023_03.txt, 12_lcp_eq_1023_04.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 15 ms | 4068 KiB |
00_sample_01.txt | AC | 14 ms | 4152 KiB |
01_a_small_00.txt | AC | 230 ms | 15864 KiB |
01_a_small_01.txt | AC | 1007 ms | 15844 KiB |
01_a_small_02.txt | AC | 1005 ms | 15728 KiB |
01_a_small_03.txt | AC | 997 ms | 15724 KiB |
02_n_small_00.txt | AC | 251 ms | 4080 KiB |
02_n_small_01.txt | AC | 255 ms | 4080 KiB |
03_q_small_00.txt | AC | 366 ms | 15812 KiB |
03_q_small_01.txt | AC | 365 ms | 15828 KiB |
04_random_00.txt | AC | 1040 ms | 15856 KiB |
04_random_01.txt | AC | 1031 ms | 15860 KiB |
04_random_02.txt | AC | 1033 ms | 15856 KiB |
05_period_in_3_00.txt | AC | 1054 ms | 15860 KiB |
05_period_in_3_01.txt | AC | 1046 ms | 15840 KiB |
05_period_in_3_02.txt | AC | 1056 ms | 15836 KiB |
05_period_in_3_03.txt | AC | 1040 ms | 15968 KiB |
05_period_in_3_04.txt | AC | 1150 ms | 15728 KiB |
05_period_in_3_05.txt | AC | 1138 ms | 15728 KiB |
05_period_in_3_06.txt | AC | 1108 ms | 15872 KiB |
05_period_in_3_07.txt | AC | 1148 ms | 15808 KiB |
05_period_in_3_08.txt | AC | 1123 ms | 15848 KiB |
05_period_in_3_09.txt | AC | 1118 ms | 15860 KiB |
05_period_in_3_10.txt | AC | 1114 ms | 15720 KiB |
05_period_in_3_11.txt | AC | 1112 ms | 15868 KiB |
05_period_in_3_12.txt | AC | 1202 ms | 15808 KiB |
05_period_in_3_13.txt | AC | 1203 ms | 15804 KiB |
05_period_in_3_14.txt | AC | 1196 ms | 15800 KiB |
05_period_in_3_15.txt | AC | 1195 ms | 15844 KiB |
06_period_00.txt | AC | 1045 ms | 15732 KiB |
06_period_01.txt | AC | 1034 ms | 15860 KiB |
06_period_02.txt | AC | 1038 ms | 15960 KiB |
06_period_03.txt | AC | 1051 ms | 15860 KiB |
06_period_04.txt | AC | 1142 ms | 15860 KiB |
06_period_05.txt | AC | 1120 ms | 15844 KiB |
06_period_06.txt | AC | 1132 ms | 15860 KiB |
06_period_07.txt | AC | 1125 ms | 15724 KiB |
06_period_08.txt | AC | 1126 ms | 15736 KiB |
06_period_09.txt | AC | 1115 ms | 15736 KiB |
06_period_10.txt | AC | 1103 ms | 15832 KiB |
06_period_11.txt | AC | 1126 ms | 15848 KiB |
06_period_12.txt | AC | 1203 ms | 15808 KiB |
06_period_13.txt | AC | 1198 ms | 15896 KiB |
06_period_14.txt | AC | 1202 ms | 15728 KiB |
06_period_15.txt | AC | 1201 ms | 15964 KiB |
07_corner_00.txt | AC | 222 ms | 15860 KiB |
07_corner_01.txt | AC | 1109 ms | 15860 KiB |
08_handmade_00.txt | AC | 14 ms | 4132 KiB |
09_lcp_eq_1_00.txt | AC | 842 ms | 15732 KiB |
09_lcp_eq_1_01.txt | AC | 827 ms | 15860 KiB |
09_lcp_eq_1_02.txt | AC | 832 ms | 15740 KiB |
09_lcp_eq_1_03.txt | AC | 839 ms | 15724 KiB |
09_lcp_eq_1_04.txt | AC | 829 ms | 15860 KiB |
10_lcp_eq_255_00.txt | AC | 432 ms | 5912 KiB |
10_lcp_eq_255_01.txt | AC | 429 ms | 6044 KiB |
10_lcp_eq_255_02.txt | AC | 429 ms | 6080 KiB |
10_lcp_eq_255_03.txt | AC | 433 ms | 5916 KiB |
10_lcp_eq_255_04.txt | AC | 430 ms | 6044 KiB |
11_lcp_eq_512_00.txt | AC | 704 ms | 11792 KiB |
11_lcp_eq_512_01.txt | AC | 687 ms | 11716 KiB |
11_lcp_eq_512_02.txt | AC | 684 ms | 11784 KiB |
11_lcp_eq_512_03.txt | AC | 685 ms | 11600 KiB |
11_lcp_eq_512_04.txt | AC | 683 ms | 11740 KiB |
12_lcp_eq_1023_00.txt | AC | 685 ms | 11704 KiB |
12_lcp_eq_1023_01.txt | AC | 691 ms | 11796 KiB |
12_lcp_eq_1023_02.txt | AC | 685 ms | 11748 KiB |
12_lcp_eq_1023_03.txt | AC | 683 ms | 11768 KiB |
12_lcp_eq_1023_04.txt | AC | 689 ms | 11616 KiB |