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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ZOJ 3886 Nico Number(筛素数+Love(线)Live(段)树)

發布時間:2024/3/12 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZOJ 3886 Nico Number(筛素数+Love(线)Live(段)树) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ZOJ 3886

題意:

定義一種NicoNico數x,x有下面特征:
全部不大于x且與x互質的數成等差數列,如x = 5 ,與5互素且不大于5的數1,2,3,4成等差數列。則5是一個NicoNico數。

再定義三種操作:
1.南小鳥詢問[L, R]內有多少個NicoNico數;
2.果皇把[L, R]內的數全部對v取余;
3.果皇將第K個數換成X。

然后給你一個數列,并對這個數列運行若干操作

思路:

這樣的問題果斷要用LoveLive樹線段樹來做!
首先我們通過打表發現NicoNico數僅僅可能是素數。2的n次冪。6,所以能夠先預處理,對范圍內的全部NicoNico數進行標記。
建樹過程:假設是NicoNico數則節點值為1,不是則為0。

更新操作1:對區間內的數進行取模即是區間改動。這里能夠優化一下,假設區間最大值小于v,則不須要改動。

更新操作2:即單點改動。

查詢操作:輸出詢問區間和就可以。

時間復雜度:
預處理:O(x)
建樹:O(n)
查詢與更新:操作次數O(m),每次操作O(logn)加起來是O(mlogn)

羞恥的代碼君:

這次代碼風格。

重在理解重在理解。

/* * @author FreeWifi_novicer * language : C++/C */ #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<string> #include<map> #include<set> #include<vector> #include<queue>using namespace std;#define clr( x , y ) memset(x,y,sizeof(x)) #define cls( x ) memset(x,0,sizeof(x)) #define mp make_pair #define pb push_back #define lson l , mid , root << 1 #define rson mid + 1 , r , root << 1 | 1 typedef long long lint; typedef long long ll; typedef long long LL;const int maxNico = 1e7 + 500 ; const int maxHonoka = 1e5 + 7 ; int Honoka_max[10 * maxHonoka] ; int Honoka_sum[10 * maxHonoka] ; bool Nico_prime[maxNico]; map<int , int> NicoNicoNi;/* にっこにっこにー☆あなたのハートににこにこにー 笑顏屆ける矢澤にこにこー にこにーって覚えてラブにこー */void init(){NicoNicoNi[0] = NicoNicoNi[6] = 1;for( int i = 0 ; i <= 31 ; i++ ){NicoNicoNi[( 1 << i )] = 1;}cls( Nico_prime );for( int i = 2 ; i * i <= maxNico ; i++ ){if( !Nico_prime[i] )for( int j = i * i ; j <= maxNico ; j+=i )Nico_prime[j] = 1;}for( int i = 2 ; i <= maxNico ; i++ ) if( !Nico_prime[i] ) NicoNicoNi[i] = 1; }void push_Yazawa( int root ){Honoka_max[root] = max( Honoka_max[ root << 1 ] , Honoka_max[ root << 1 | 1 ] );Honoka_sum[root] = Honoka_sum[ root << 1 ] + Honoka_sum[ root << 1 | 1 ] ; }void build_Kotori( int l , int r , int root ){if( l == r ){scanf( "%d" , &Honoka_max[root] );if( NicoNicoNi[Honoka_max[root]] )Honoka_sum[root] = 1;elseHonoka_sum[root] = 0;return ;}int mid = ( l + r ) / 2 ;build_Kotori( lson );build_Kotori( rson );push_Yazawa( root ); }void Honoka1( int ql , int qr , int x , int l , int r , int root ){if( qr < l || ql > r )return ;if( Honoka_max[root] < x) return ;if( l == r ){Honoka_max[root] %= x ;if( NicoNicoNi[Honoka_max[root]] )Honoka_sum[root] = 1;elseHonoka_sum[root] = 0;return ;}int mid = ( l + r ) / 2 ;Honoka1( ql , qr , x , lson );Honoka1( ql , qr , x , rson );push_Yazawa( root ); }void Honoka2( int pos , int x , int l , int r , int root ){if( l == pos && r == pos ){Honoka_max[root] = x ;if( NicoNicoNi[x] )Honoka_sum[root] = 1;elseHonoka_sum[root] = 0;return ;}int mid = ( l + r ) / 2 ;if( mid >= pos )Honoka2( pos , x , lson );elseHonoka2( pos , x , rson );push_Yazawa( root ); }int Kotori( int ql , int qr , int l , int r , int root ){if( ql > r || qr < l )return 0 ; if( ql <= l && qr >= r )return Honoka_sum[root];int res = 0 ;int mid = ( l + r ) / 2 ;if( ql <= mid )res += Kotori( ql , qr , lson ) ;if( qr > mid )res += Kotori( ql , qr , rson ) ;return res; } int main(){//freopen("input.txt","r",stdin);init();int n ; while( cin >> n ){build_Kotori( 1 , n , 1 ) ;int m ;cin >> m ;for( int i = 1 ; i <= m ; i++ ){int num ;scanf( "%d" , &num );if( num == 1 ){int left , right ;scanf( "%d%d" , &left , &right ) ;printf( "%d\n" , Kotori( left , right , 1 , n , 1 ));}else if( num == 2 ){int left , right , mod ;scanf( "%d%d%d" , &left , &right , &mod ) ;Honoka1( left , right , mod , 1 , n , 1 ) ;}else if( num == 3 ){int pos , x ;scanf( "%d%d" , &pos , &x ) ;Honoka2( pos , x , 1 , n , 1 ) ;}}}return 0; }

總結

以上是生活随笔為你收集整理的ZOJ 3886 Nico Number(筛素数+Love(线)Live(段)树)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本天堂在线 | 91高跟黑色丝袜呻吟动态图 | wwwa级片 | 国产酒店自拍 | 一区二区 中文字幕 | 奇米成人网 | 欧美 日韩 高清 | 日韩狠狠| 国产精品国产成人国产三级 | 在线亚洲人成电影网站色www | 亚洲美女免费视频 | 国产成人精品一区二区三区网站观看 | 福利毛片 | 国产精品乱码妇女bbbb | 亚洲午夜不卡 | 国产精品夜色一区二区三区 | 国产综合日韩 | 国产欧美日韩精品区一区二污污污 | 中文字幕在线2018 | 日韩av免费网址 | 黑人巨大xxxxx性猛交 | 国产一区视频在线观看免费 | 射在线| 亚洲欧美激情精品一区二区 | 在线播放波多野结衣 | 亚洲无线视频 | 性喷潮久久久久久久久 | 欧美一区2区三区4区公司 | 国产日韩精品一区二区三区在线 | 国产日韩91 | 爱情岛亚洲品质自拍极速福利网站 | 射美女| www.youjizz日本| 国产成人一区二区三区电影 | 欧美日韩免费网站 | 天天干天天操天天操 | 2019国产精品视频 | 免费观看毛片网站 | 久久视频在线观看免费 | 欧美色xxxxx| 国产黄色高清视频 | 欧美高清视频一区 | 乳色吐息在线观看 | 午夜日韩在线 | 日韩网站免费观看高清 | 中国丰满熟妇xxxx性 | www狠狠| 91网页在线观看 | 摸大乳喷奶水www视频 | 人妻久久久一区二区三区 | 少妇一级淫片免费放 | 影音先锋亚洲精品 | 欧美图片第一页 | 五月天婷婷在线观看 | 精品无码人妻一区 | 99爱免费视频 | 精品久久久久久久久久久久久久 | 欧美专区视频 | 欧美日韩视频无码一区二区三 | 亚洲国产精品久久久 | 精品一区二区三区精华液 | 91麻豆精品国产91 | 国产精品婷婷午夜在线观看 | 亚洲喷潮 | 午夜一本 | 无码免费一区二区三区 | 无套内谢的新婚少妇国语播放 | 日本第一页 | www.超碰在线 | 国产女人高潮视频 | 啪啪av导航 | 国产精品一区在线观看你懂的 | 亚洲一区偷拍 | 国产精品久久久久91 | 影音先锋在线看片资源 | 美女扒开屁股让男人捅 | 国产午夜精品久久 | 精品黑人一区二区三区国语馆 | 狠狠做深爱婷婷久久综合一区 | 水果派解说av| 美女自拍偷拍 | 日日干夜夜艹 | 国产不卡av在线播放 | 亚洲综合久久av | 日韩少妇一区 | 欧美日韩国产高清 | 黄色大片网址 | 一区二区三区福利视频 | 欧美在线观看视频一区二区 | av青青| 91 高清 在线 制服 偷拍 | 亚洲精品视频一区二区 | 亚洲欧美日韩高清 | 欧美激情在线观看视频 | 久草高清视频 | 青青国产精品 | 午夜秋霞网| 精品欧美一区二区三区 | www.黄色. |