1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          [校內訓練19_09_03]c Huge Counting

          來源:互聯網轉載 時間:2024-01-29 07:56:23

          題意

          有一個定義在 k 維非負整點上的函數:$f(x_1,x_2,...,x_k):N_{0}^{k}->\{0,1\}$ ,定義方法如下:

          若存在$j∈[1,k],x_j=0$,則$f(x_1,x_2,...,x_k)=0$

          若對$j∈[1,k]$都有$x_j=1$則$f(x_1,x_2,...,x_k)=1$

          否則$f(x_1,x_2,...,x_k)=(\sum_{j=1}^{k}{f(x_1,...,x_{j-1},x_j-1,x_{j+1},...,x_k)})mod 2$

          現在給出k,并對每一維坐標給出區間$l_i,r_i$,求:

          $\sum_{x_1∈[l_1,r_1],...,x_k∈[l_k,r_k]}{f(x_1,x_2,...,x_k)}$

          $1\leq T \leq 10,1 \leq k \leq 9,1 \leq l_j,r_j \leq 10^{15}$。


          思考

          對于k,某個點的f值為1的充要條件是所有維度在二進制表示下沒有交集,即$x_i\&x_j=0,i≠j$。

          由于每個維度都有一個限制,不好算,因此我們容斥每個維度是否滿足限制。這樣,問題轉化為選k個數,第i個數最多能選$a_i$個,每一個二進制位上最多有一個1的方案數。設f[i][0/1][S]表示從高位到低位填到第i個數,0/1是當前有沒有選1,S是k個數是否達到上限的方案數。每次轉移時,考慮當前這一位填不填1即可。

          復雜度$O(T*2^{(2k)}*n)$,需要卡常。


          代碼

            1 // luogu-judger-enable-o2  2 #define mod 990804011  3 #include<bits/stdc++.h>  4 using namespace std;  5 typedef long long int ll;  6 int T;  7 int k;  8 ll ans,L[55],R[55];  9 ll f[55][2][1<<9]; 10 bool vis[1<<9][1<<9]; 11 int BASE,dig[55]; 12 int d[55]; 13 struct node 14 { 15     int S1,S2; 16     ll val; 17     node(int a=0,int b=0,ll c=0):S1(a),S2(b),val(c){} 18 }; 19 inline ll get(ll S,ll x) 20 { 21     return (S&((ll)(ll)1<<x))>0; 22 } 23 inline ll newlimit(ll D,ll nowD,ll limit) 24 { 25     return ((D^nowD)^(BASE))&limit; 26 } 27 inline ll max(ll x,ll y) 28 { 29     return x>y?x:y; 30 }  31 inline ll calc(int S) 32 { 33     ll maxx=0; 34     for(int i=0;i<=51;++i) 35         dig[i]=0; 36     for(int i=0;i<k;++i) 37     { 38         if(S&((ll)1<<i)) 39         { 40             if(L[i]==0) 41                 return 0; 42             for(int j=0;j<=51;++j) 43                 dig[j]|=get(L[i]-1,j)<<i; 44             maxx=max(maxx,L[i]); 45         } 46         else 47         { 48             for(int j=0;j<=51;++j) 49                 dig[j]|=get(R[i],j)<<i; 50             maxx=max(maxx,R[i]); 51         } 52     } 53     int base=log2(maxx)+2; 54     memset(f,0,sizeof(f)); 55     f[base][0][(1<<k)-1]=1; 56     for(register int i=base;i>=1;--i) 57     { 58         for(register int S=0;S<(1<<k);++S) 59             if(f[i][0][S]) 60             { 61                 register int x=newlimit(dig[i-1],0,S); 62                 f[i-1][0][x]=(f[i-1][0][x]+f[i][0][S])%mod; 63             } 64         for(register int S=0;S<(1<<k);++S) 65             if(f[i][1][S]) 66             { 67                 register int x=newlimit(dig[i-1],0,S); 68                 f[i-1][0][x]=(f[i-1][0][x]+f[i][1][S])%mod; 69             } 70         for(register int S=0;S<(1<<k);++S) 71             if(f[i][1][S]) 72                 for(register int d1=0;d1<k;++d1) 73                     if(get(S,d1)==0||get(dig[i-1],d1)==1) 74                     { 75                         register int x=newlimit(dig[i-1],1<<d1,S); 76                         f[i-1][1][x]=(f[i-1][1][x]+f[i][1][S])%mod; 77                     } 78         for(register int S=0;S<(1<<k);++S) 79             if(f[i][0][S]) 80                 for(register int d=0;d<k;++d) 81                     if(get(S,d)==0||get(dig[i-1],d)==1) 82                     { 83                         register int x=newlimit(dig[i-1],1<<d,S); 84                         f[i-1][1][x]=(f[i-1][1][x]+f[i][0][S])%mod; 85                     } 86     } 87     ll sum=0; 88     for(register int S=0;S<(1<<k);++S) 89         sum=(sum+f[0][0][S]+f[0][1][S])%mod; 90     return sum; 91 } 92 void dfs(int s,int S,int G) 93 { 94     if(s==k) 95     { 96         ll x=calc(S); 97         if(G&1) 98             ans=(ans-x+mod)%mod; 99         else100             ans=(ans+x)%mod;101         return;102     }103     dfs(s+1,S,G);104     dfs(s+1,S|((ll)1<<s),G+1);105 }106 inline void solve()107 {108     cin>>k;109     for(int i=0;i<k;++i)110     {111         cin>>L[i]>>R[i];112         --L[i],--R[i];113     }114     ans=0;115     BASE=((ll)1<<k)-1;116     dfs(0,0,0);117     cout<<ans<<endl;118 }119 int main()120 {121     ios::sync_with_stdio(false);122     cin>>T;123     while(T--)124         solve();125     return 0;126 }
          View Code
          標簽:chuge-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          whist翻頁筆的使用說明?PPT翻頁激光筆有接收器,插在電腦的USB接口上。一般會有說明,根據安裝直接使用即可。ppt翻頁筆怎么對碼?按住激光筆的翻頁鍵,打開激光筆的開關,將接收器插入電腦的usb接口,指示燈閃爍。松開向下翻頁按鈕,指示燈停止閃爍。如果配對成功,激光筆可以正常使用。ppt用激光筆不能切換怎么處理?激光翻頁筆一般用來直接打開PPT課件演示,功能其實和鼠標點擊差不多。如果在白板軟件中...

          高鐵525次北京到鄭州東時間?鄭州東20:32北京西部發送:17336014G525次5小時41分鐘漢口收件人:22336055戰戟電臺名稱到達時間發送時間停車時間運行時間一個北京西部始發站17:14--2定州東18:0818:102分54分鐘三石家莊18:3318:363分1小時19分鐘四邢臺東部19:0419:062分1小時50分鐘五東安洋19:3419:362分2小時20分鐘六東鶴壁19:5...

          我的qq群里有人發起投票怎么制止?這個不能直接刪除。車主需要遵循以下步驟。首先,點擊投票鏈接。進入投票界面后,點擊右上角,會出現刪除操作。點擊刪除,然后再次點擊投票鏈接顯示 "投票 "。最后一步,把發布廣告投票的人踢出去,拉黑。先點擊這個投票鏈接,再點擊右上角的三個點投票刪除,再點擊表示已經刪除。QQ群里匿名投票除了發起人,群主和管理員可以看到誰投了票嗎?也可以被所有員工看到,可以在群設置中看到,...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>