青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

MiYu原創(chuàng), 轉(zhuǎn)帖請(qǐng)注明 : 轉(zhuǎn)載自 ______________白白の屋    

 

題目描述:

Cube

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)
Total Submission(s): 495    Accepted Submission(s): 226


Problem Description
Given an N*N*N cube A, whose elements are either 0 or 1. A[i, j, k] means the number in the i-th row , j-th column and k-th layer. Initially we have A[i, j, k] = 0 (1 <= i, j, k <= N). 
We define two operations, 1: “Not” operation that we change the A[i, j, k]=!A[i, j, k]. that means we change A[i, j, k] from 0->1,or 1->0. (x1<=i<=x2,y1<=j<=y2,z1<=k<=z2).
0: “Query” operation we want to get the value of A[i, j, k].
 

Input
Multi-cases.
First line contains N and M, M lines follow indicating the operation below.
Each operation contains an X, the type of operation. 1: “Not” operation and 0: “Query” operation.
If X is 1, following x1, y1, z1, x2, y2, z2.
If X is 0, following x, y, z.
 

Output
For each query output A[x, y, z] in one line. (1<=n<=100 sum of m <=10000)
 

Sample Input
2 5 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 2 2 2 0 1 1 1 0 2 2 2
 

Sample Output
1 0 1
 

題目分析 :

      更新區(qū)間, 查詢一個(gè)點(diǎn), 三維線段樹(shù) 直接無(wú)視.........數(shù)據(jù)不是很強(qiáng), 所以 直接暴力就可以過(guò), 過(guò)完發(fā)現(xiàn)自己的時(shí)間 在700MS 左右, 看了下rank,

小A 榜首..... 時(shí)間竟然才62MS....果然還是要用三維樹(shù)狀數(shù)組來(lái)加速啊 . 不過(guò)一直沒(méi)理解 用 樹(shù)狀數(shù)組 解決這題的思路, 今早上終于明白了.

畫(huà)個(gè)圖先 :

             

好了 , 看代碼:

樹(shù)狀數(shù)組代碼 :

 /*

Mail to   : miyubai@gamil.com
My Blog   : www.baiyun.me
Link      : http://www.cnblogs.com/MiYu  || http://m.shnenglu.com/MiYu
Author By : MiYu
Test      : 1
Complier  : g++ mingw32-3.4.2
Program   : HDU_3584
Doc Name  : Cube
*/
//#pragma warning( disable:4789 )
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <utility>
#include <queue>
#include <stack>
#include <list>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
using namespace std;
inline bool scan_d(int &num)  //整數(shù)輸入
{
        char in;bool IsN=false;
        in=getchar();
        if(in==EOF) return false;
        while(in!='-'&&(in<'0'||in>'9')) in=getchar();
        if(in=='-'){ IsN=true;num=0;}
        else num=in-'0';
        while(in=getchar(),in>='0'&&in<='9'){
                num*=10,num+=in-'0';
        }
        if(IsN) num=-num;
        return true;
}
const int MAXN = 105;
int mat[MAXN][MAXN][MAXN];
int low[MAXN];
int i, j, k;
void setLow () {
     for ( i = 1; i <= MAXN; ++ i ) low[i] = i & (- i);
}
void modify ( int x, int y, int z ) {
     for ( i = x; i <= MAXN; i += low[i] ) {
         for ( j = y; j <= MAXN; j += low[j] ) {
             for ( k = z; k <= MAXN; k += low[k] )
                 mat[i][j][k] ^= 1;   
         }    
     }    
}
int query ( int x, int y, int z ) {
     int sum = 0;
     for ( i = x; i > 0; i ^= low[i] ) {
         for ( j = y; j > 0; j ^= low[j] ) {
             for ( k = z; k > 0; k ^= low[k] )
                 sum += mat[i][j][k];    
         }    
     }    
     return sum & 1;
}
int main ()
{
    setLow ();
    int N, M;
    while ( scan_d ( N ) && scan_d ( M ) ) {
          memset ( mat, 0, sizeof ( mat ) );
          while ( M -- ) {
                int x1,y1,z1,x2,y2,z2;
                int s;  scan_d ( s ); 
                switch ( s ) {
                       case 1:
                            scan_d ( x1 ); scan_d ( y1 ); scan_d ( z1 ); 
                            scan_d ( x2 ); scan_d ( y2 ); scan_d ( z2 );
                            modify ( x1,y1,z1 );    modify ( x1,y1,z2+1 );
                            modify ( x2+1,y1,z1 );    modify ( x2+1,y1,z2+1 );
                            modify ( x1,y2+1,z1 );    modify ( x2+1,y2+1,z1 );
                            modify ( x2+1,y2+1,z2+1 );    modify ( x1,y2+1,z2+1 ); 
                            break;
                       case 0:
                            scan_d ( x1 ); scan_d ( y1 ); scan_d ( z1 );
                            printf ( "%d\n", query ( x1,y1,z1 ) );      
                }
          }           
    }
    return 0;
}

暴力代碼 :

/*
Mail to   : miyubai@gamil.com
My Blog   : www.baiyun.me
Link      : http://www.cnblogs.com/MiYu  || http://m.shnenglu.com/MiYu
Author By : MiYu
Test      : 1
Complier  : g++ mingw32-3.4.2
Program   :
Doc Name  :
*/
//#pragma warning( disable:4789 )
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <utility>
#include <queue>
#include <stack>
#include <list>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
using namespace std;
struct node {  
    int x1, x2, y1, y2, z1, z2; 
}cube[10010];   
  
int main()  
{  
    int N, M;  
    int x, y, z;
    while ( scanf ( "%d%d",&N,&M ) != EOF )  {  
        int cnt = 0;  
        while ( M -- )  
        {  
            int ask;  
            scanf ( "%d", &ask );  
            switch ( ask ) {
                case 1:   
                    scanf ( "%d%d%d%d%d%d", &cube[cnt].x1,&cube[cnt].y1,
                                            &cube[cnt].z1,&cube[cnt].x2,
                                            &cube[cnt].y2,&cube[cnt].z2 );  
                    ++ cnt;  
                    break;
                case 0:
                    scanf ( "%d%d%d", &x, &y, &z);  
                    int count = 0;  
                    for ( int i = 0; i != cnt; ++ i )  
                        if ( cube[i].x1 <= x && x <= cube[i].x2 && 
                             cube[i].y1 <= y && y <= cube[i].y2 && 
                             cube[i].z1 <= z && z <= cube[i].z2 )  
                                    count ^= 1;;  
                    puts ( count ? "1" : "0" ); 
            }  
        }  
    }  
    return 0;  
}  

 

Feedback

# re: HDU 3584 HDOJ 3584 Cube ACM 3584 IN HDU  回復(fù)  更多評(píng)論   

2010-11-14 21:40 by 博客之家
好復(fù)雜的代碼啊

# re: HDU 3584 HDOJ 3584 Cube ACM 3584 IN HDU  回復(fù)  更多評(píng)論   

2010-12-03 01:59 by flagman
說(shuō)兩點(diǎn),
1)這三維樹(shù)狀數(shù)組,占空間比較大,特別是問(wèn)題規(guī)模快速增長(zhǎng)時(shí);
2)對(duì)于
void setLow () {
for ( i = 1; i <= MAXN; ++ i ) low[i] = i & (- i);
}
這樣的短函數(shù),topcoder上很多人都喜歡用宏定義,不知道為啥,難道受C的影響太深了,抑或?yàn)榱斯?jié)約函數(shù)調(diào)用開(kāi)銷?呵呵,比如上面這函數(shù),可能寫成如下,
#define SETLOW(low,MAXN) for( i = 1; i <= (MAXN); ++i) *((low) + i) = i & (-i);

# re: HDU 3584 HDOJ 3584 Cube ACM 3584 IN HDU  回復(fù)  更多評(píng)論   

2011-04-07 19:51 by
你好,我是一個(gè)代碼初學(xué)者,也是在HD里做題目的,看了你的解析,相當(dāng)?shù)牡疤邸?。。完全是看不懂,汗,不過(guò)看得出你狠厲害?。『呛?。。。。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲福利在线观看| 久久久久88色偷偷免费| 狠狠色综合色区| 欧美日韩免费一区| 久久一日本道色综合久久| 亚洲一区二区不卡免费| 91久久久亚洲精品| 蜜桃伊人久久| 久久精品一二三| 亚洲欧美日韩国产中文| 日韩性生活视频| 激情五月综合色婷婷一区二区| 国产精品福利在线| 欧美精品亚洲| 欧美gay视频| 裸体歌舞表演一区二区| 欧美一区二区久久久| 中文一区二区在线观看| 一本色道久久综合亚洲二区三区| 最新国产拍偷乱拍精品| 欧美国内亚洲| 女人天堂亚洲aⅴ在线观看| 久久久999精品视频| 久久成人精品无人区| 小辣椒精品导航| 欧美一级一区| 久久av在线| 欧美高清视频在线观看| 欧美一区二区三区成人| 99视频有精品| 亚洲精品一区二区三| 亚洲黄色在线视频| 亚洲国产黄色| 亚洲欧洲日本一区二区三区| 亚洲精品日韩欧美| 亚洲狼人综合| 日韩一区二区精品葵司在线| 亚洲美女视频| 一区二区三区视频免费在线观看| 99精品视频一区二区三区| 日韩亚洲一区在线播放| 99ri日韩精品视频| 亚洲视频在线观看视频| 亚洲在线观看免费| 欧美一级黄色网| 久久国产精品一区二区| 久久综合色综合88| 欧美不卡激情三级在线观看| 欧美激情精品久久久六区热门 | 亚洲福利视频在线| 亚洲国产精品va在看黑人| 亚洲欧洲另类国产综合| 一本一本久久a久久精品牛牛影视| 99pao成人国产永久免费视频| 一区二区黄色| 午夜精品一区二区三区在线播放| 欧美在线亚洲一区| 免费观看久久久4p| 欧美三级午夜理伦三级中文幕 | 午夜电影亚洲| 久久久99国产精品免费| 欧美激情精品久久久六区热门| 亚洲人成人一区二区三区| 亚洲视频精品| 久久久久看片| 欧美日韩一区国产| 国产午夜精品视频| 亚洲国产欧美久久| 亚洲永久在线观看| 久久综合久久美利坚合众国| 91久久精品国产91久久性色| 亚洲伊人伊色伊影伊综合网| 久久人人97超碰国产公开结果| 欧美精品国产一区| 国产精品亚洲美女av网站| 在线观看国产日韩| 亚洲一区观看| 欧美国产日本韩| 亚洲一区二区欧美| 欧美成人四级电影| 国产欧美日韩在线播放| 亚洲伦理精品| 久久国产99| 亚洲精品一区二区三| 欧美专区在线| 欧美午夜一区二区福利视频| 亚洲高清久久久| 午夜在线电影亚洲一区| 亚洲国产婷婷香蕉久久久久久| 午夜影院日韩| 欧美精品一区三区| 精品成人国产| 欧美亚洲免费在线| 亚洲欧洲另类| 久久婷婷人人澡人人喊人人爽| 国产精品捆绑调教| 最新国产精品拍自在线播放| 亚洲国产精品毛片| 性做久久久久久免费观看欧美| 欧美成人免费在线视频| 国产一区二区欧美| 亚洲中字在线| 亚洲三级视频| 美女网站久久| 黄色亚洲大片免费在线观看| 亚洲一区二区三区精品动漫| 亚洲黄色在线观看| 久久久久久国产精品mv| 国产视频不卡| 亚洲欧美久久久| 亚洲人成人一区二区三区| 久久综合99re88久久爱| 国产专区欧美精品| 午夜精品在线| 亚洲视频成人| 国产精品超碰97尤物18| 一区二区三区波多野结衣在线观看| 欧美成人亚洲成人| 久久久久久亚洲精品杨幂换脸| 国产亚洲在线| 久久激情五月婷婷| 午夜久久福利| 国产有码一区二区| 久久精品女人| 久久精品国产第一区二区三区最新章节| 国产精品羞羞答答| 亚洲欧美综合国产精品一区| 亚洲性夜色噜噜噜7777| 国产精品美女久久久久久2018| 亚洲一区二区不卡免费| 99在线热播精品免费99热| 欧美色播在线播放| 亚洲女人天堂av| 亚洲欧美国产77777| 国产深夜精品| 久久亚洲国产精品日日av夜夜| 久久久久久尹人网香蕉| 1024国产精品| 欧美激情区在线播放| 欧美精品国产| 亚洲一区二区网站| 亚洲欧美欧美一区二区三区| 国产午夜精品麻豆| 麻豆av福利av久久av| 欧美成年人视频网站欧美| 99亚洲一区二区| 一本久道综合久久精品| 国产精品资源在线观看| 久久天天狠狠| 欧美成人午夜激情| 亚洲一区二区久久| 亚洲伊人色欲综合网| 韩日精品视频| 欧美激情第一页xxx| 欧美日韩系列| 欧美在线高清| 老司机一区二区三区| 中国成人黄色视屏| 亚洲尤物在线视频观看| 一区视频在线| 99re66热这里只有精品4| 国产精品一级在线| 麻豆freexxxx性91精品| 欧美日韩精品一区二区| 欧美伊久线香蕉线新在线| 久久婷婷国产麻豆91天堂| 一区二区欧美视频| 欧美亚洲视频在线观看| 亚洲精品一区二区网址| 亚洲免费在线观看| 亚洲国产欧美不卡在线观看| 一区二区三区成人| 一区二区三区在线观看欧美| 日韩一区二区电影网| 狠狠色狠狠色综合日日tαg| 亚洲精品护士| 国产免费亚洲高清| 亚洲黄色在线观看| 国产一级揄自揄精品视频| 亚洲欧洲视频在线| 国模大胆一区二区三区| 亚洲精品午夜精品| 国产偷自视频区视频一区二区| 亚洲黄色成人| 国产一区欧美日韩| 日韩香蕉视频| 亚洲国产高清在线| 小处雏高清一区二区三区| 一本色道久久综合精品竹菊 | 在线亚洲国产精品网站| 欧美一区二区私人影院日本| 亚洲作爱视频| 久久久人成影片一区二区三区| 亚洲尤物在线视频观看| 男同欧美伦乱| 久久先锋资源| 国产美女一区| 宅男精品导航| 一本色道久久88亚洲综合88| 老**午夜毛片一区二区三区|