日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JZOJ 5373. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人

發(fā)布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 5373. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Description

Input

Output

Sample Input

3 3 0
1 1 7
1 1 6
1 3 2

Sample Output

1
0
1
7
0
5

Data Constraint

Solution

  • 看到這種“真假條件”,首先要想到的就是——并查集

  • F[x] 表示 x 的祖先,G[x] 表示從 xx 的祖先的異或和。

  • 注意:并集時編號大的要連到編號小的,這樣方便處理區(qū)間;Get_Father 時順便處理 G[x] 即可。

  • 那么對于讀入的 l,r,k ,先查找出 l?1r 的祖先 flfr

  • fl=fr ,則再判斷 G[l?1]?xor?G[r] 是否等于 k 即可,等于則為真,不等則為假。

  • flfr ,將兩集合合并,frfl 連一條 k ,即:F[fr]=fl

    G[fr]=G[l?1]?xor?G[r]?xor?k

  • 最后輸出答案,則設 sum[i] 表示從 1i 的異或和,且 sum[1]sum[i?1] 都已求出了。

  • 于是顯然,第 i 為的答案就是 sum[i] xor sum[i?1]] 。那怎么求出 sum[i] 呢?

  • i 為一個集合的祖先時,說明 i 的取值不受限制,取 0 顯然最優(yōu),則:sum[i]=sum[i?1]

  • i 不為一個集合的祖先,設其祖先為 j ,那么 i 這個點要填的就是 G[i] ,于是:

    sum[i]=sum[j]?xor?G[i]

  • 這樣的時間復雜度就是 O(M?α(N))

Code

#include<cstdio> #include<algorithm> using namespace std; const int N=200001; int last; int f[N],g[N],sum[N]; inline int read() {int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w; } inline void write(int x) {if(x>9) write(x/10);putchar(x%10+'0'); } inline int get(int x) {if(f[x]==x) return x;int y=get(f[x]);g[x]^=g[f[x]];return f[x]=y; } int main() {int n=read(),m=read(),czy=read();for(int i=1;i<=n;i++) f[i]=i;while(m--){int l=read(),r=read(),k=read();if(czy) l^=last,r^=last,k^=last;int f1=get(l-1),f2=get(r);if(f1!=f2){if(f1>f2) swap(f1,f2);f[f2]=f1;g[f2]^=g[l-1]^g[r]^k;write(last=1);}else write(last=(g[l-1]^g[r])==k);putchar('\n');}for(int i=1;i<=n;i++){int j=get(i);if(i==j) sum[i]=sum[i-1]; else sum[i]=sum[j]^g[i];write(sum[i]^sum[i-1]);putchar('\n');}return 0; }

總結

以上是生活随笔為你收集整理的JZOJ 5373. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。