codeforces 295E Yaroslav and Points (線段樹)

http://codeforces.com/problemset/problem/295/E題目大意:在一條水平的直線上有n個點,編號1~n,告訴你每個點的橫座標xi,然後有兩個操作:1:將編號為i的點平移d各單位,d為正往右,否則往左。2:求處於區間[l,r]之間每一對點的距離之和,即求 。思路:還是比較裸的線段樹問題,我們線上段樹中維護以下值:num:該區間有多少個點。sum:該區間點的橫座標之和。ans

LCA的樹鏈剖分實現

這篇本來是要在樹鏈剖分小節中寫的,但是我感覺這隻是樹鏈剖分的一個衍生物,所以另開了一篇,如果對樹鏈剖分部分還不是太瞭解,請看上面的連結。計算樹中兩個節點的最近公用祖先,我們一般有爬山法,Tarjan離線演算法,或者是將LCA轉換成RMQ來解,這裡講一講一種新的求LCA的演算法,它是基於樹鏈剖分的。我們先來複習一下樹鏈剖分中各個節點所維護的資訊:1:siz[v]表示以v為根的子樹的節點總數。2:dep[v]表示v的深度。3:son[v]表示與v在同一重鏈上的v的兒子節點。4:fa[v]表示v的父親

樹鏈剖分小節

前段時間學習了下樹鏈剖分,好久沒看了,今天又複習一遍,趕緊寫下來,別又忘了。我們在資訊學競賽中,有時會碰到這麼一類題型,在一棵樹中,修改兩點之間路徑上的所有邊(或點)上的某個變數(如邊的長度,點的權值等等),然後詢問單個點(或邊)或者兩點之間路徑上的所有點(或邊)的某些性質(如邊權之和,最大邊最小邊等等)。對於這樣的題,往往容易往線段樹上去靠,但是,單單是用線段樹是無法維護每一條鏈的性質的,所以我們需要一種演算法將樹鏈分開來,使得每條鏈可以和線段樹中的一個區間一一對應上。(當然樹鏈剖分遠遠不止這

劃分樹小結

最近學習了一下劃分樹,下面總結一下。我們在求區間最值的時候,一般可以用線段樹解決,但是如果要求區間第k小或者第k大值的話線段樹就有點力不從心了,這是我們可以用劃分樹來解決。劃分樹利用了快速排序的思想,首先是建樹,我們設當前區間的中位元為mid,(為了能快速找到區間的中位元,我們一般先對原序列做一次排序)則我們將區間中比mid小的放入左子樹,將區間中比mid大數的放入右子樹中,和mid相等的要討論一下,有些需要放到左子樹中,其他的放到右子樹中,注意我們將數字放入子樹的時候其相對順序是不變的。這樣我

POJ2528-Mayor’s posters

 轉載請註明出處:優YoU http://blog.csdn.net/lyy289065406/article/details/6799170 大致題意:有一面牆,被等分為1QW份,一份的寬度為一個單位寬度。現在往牆上貼N張海報,每張海報的寬度是任意的,但是必定是單位寬度的整數倍,且<=1QW。後貼的海報若與先貼的海報有交集,後貼的海報必定會全部或局部覆蓋先貼的海報。現在給出每張海報所貼的位置(左端位置和右端位置),問張貼完N張海報後,還能看見多少張海報?(PS:看見一部分也算看到。) 解

徹底弄懂kmp-字元匹配

        這個演算法很有技巧性,這主要是next[],它的值與匹配字串有關係,而與主字串沒關係,它是表示副字串(匹配的字串)的移動位置。當主字串的第i個與副的第j個不匹配,就要用到next[j],這時它就決定j的值了,意思就是:j此時的位置取決於匹配的字串的結構。此時j的移動是為了與主字串第i個相匹配,我們不難發現,主字串中的 i

codeforces round# 177 div2

這真是一場神奇的比賽,比賽中各種猜想各種對,但我都無法證明,無語了,正式比賽中要能有這狀態那我不無敵了?不廢話了,上題解吧。 http://codeforces.com/contest/289/problem/AA:水題吧,求出每個區間中所包含的數的個數,求和後,看和k的倍數差多少即可。#include <iostream>#include <string.h>#include <algorithm>#include

POJ1015-Jury Compromise

 轉載請註明出處:優YoU   http://blog.csdn.net/lyy289065406/article/details/6671105 大致題意:在遙遠的國家佛羅布尼亞,嫌犯是否有罪,須由陪審團決定。陪審團是由法官從公眾中挑選的。先隨機挑選n 個人作為陪審團的候選人,然後再從這n 個人中選m 人組成陪審團。選m 人的辦法是:控方和辯方會根據對候選人的喜歡程度,給所有候選人打分,分值從0 到20。為了公平起見,法官選出陪審團的原則是:選出的m

hdu 4612 Warm up

http://acm.hdu.edu.cn/showproblem.php?pid=4612 Warm upTime Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 2012    Accepted Submission(s): 474Problem Description   N planets are connected by M

DFS-變形課

這道題類似成語接龍。題意懂了,方法很簡單,就是從開頭是”b“的字母尋找下去,並判斷最後一個字母是否為'm'如果找的到就退去,很明顯就是個遞迴(DFS)就可以實現了。#include<stdio.h>#include<string.h>char a[100][20];int visit[100];int flag ,n;void DFS(int x){ int k=strlen(a[x]); char *st; st=&a[x][k-1];

HDU-1075 tire

題目串連這題很有意思。分析一下我的解題思路:先把字串插入到字典樹中,在最後一個字元中開闢一個空間,來存放與它相對應的字串,這樣就可以處理:有公用首碼的字元了和字元長短不一的情況,所以這樣操作很方便了。程式碼分析見注釋:(思路很簡單),此題有很多指標操作,看不懂的,先把指標學好哦!#include<cstdio>#include<cstring>#include<cctype>struct tire{char *ch;tire *next[26];tire(){

HDU-2199 二分搜尋解方程

題目串連分析:  該方程左邊的明顯就是在[0,100]區間單調遞增的,這就適應了二分尋找了。直接水過之。#include<stdio.h>#include<math.h>#define eps 1e-10 int sign(double x){return x<-eps?-1: x>eps;}double count(double x){return 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;}double bsearch(

POJ2109-Power of Cryptography

 轉載請註明出處:優YoU  http://user.qzone.qq.com/289065406/blog/1299228474 提示:一般思路:二分+高精度演算法 但是本題還有一個更加巧妙的辦法去處理:首先需要明確:double類型雖然能表示10^(-307)   ~   10^308,

HDU-1016 dfs

這題先以為還以為是鏈表。想多了,只不過是個簡單的搜尋就可以了。#include<stdio.h>#include<math.h>#include<string.h>int n;int p[30],num[30],vis[30];void prime() //篩選素數O(n)的時間複雜度{memset(p,0,sizeof(p));for(int i=4;i<100;i+=2) p[i]=1; int k=(int)sqrt(100.0);

HDU-1166 敵兵布陣(樹狀數組和線段樹)

這個題目就是對一組資料的更新和分段求和。由於資料過大,我們就會想到用樹狀數組。當然,先要瞭解它。這個題就是它的一個典型應用樹狀數組(256ms)    操作: 區間求和,單點更新.#include<stdio.h>#include<string.h>int a[50005],c[50005],n;;void Add(int x,int s){while(x<=n){ c[x]+=s; x+=(x&-x);} } int sum(int x){ int s=0

一位ACMer過來人的心得

 刻苦的訓練我打算最後稍微提一下。主要說後者:什麼是有效地訓練?       我想說下我的理解。       很多ACMer入門的時候,都被告知:要多做題,做個500多道就變牛了。其實,這既不是充分條件、也不會是必要條件。       我覺得一般情況下,對於我們普通學校的大學生,各方面能力的差距不會太大,在這種情況下,訓練和學習的方法尤為重要。       其實,500題僅僅是一個標誌,而且僅僅表示你做ACM-ICPC有一定的時間,       我們訓練的目的是什嗎?我覺得有四點       1

反哥德巴哈猜想,遞迴方程完美解決

題目串連分析:題目要求我們給定整數n,要你求在13~n之間的奇數,它可以表示兩個合數相加,對於一個奇數,可能有多種方案,用g(n)表示,問你,要求出sg(n)=sum{g(i)|i<=n};這和以前的素數表有點類似,先就應該打合數表,然後推出關係,我們可以知道sg(n)=sg(n-2)+g(n),而g(n),n它是一個奇數,我們知道兩個奇數相加一定是偶數,兩個偶數相加是偶數,所以只有一奇一偶相加才能得到奇數,而偶數一定是合數,那麼,要得到兩個合數,這個奇數一定要為合數,而最小的合數是4且剛

北大ACM試題分類 – 即時更新我所有的解題報告連結

 轉載請註明出處:優YoU http://blog.csdn.net/lyy289065406/article/details/6642573  最近AC題:2528   更新時間:2011.09.22 

POJ2942-Knights of the Round Table

 轉載請註明出處:優YoU http://blog.csdn.net/lyy289065406/article/details/6756821  大致題意:亞瑟王要在圓桌上召開騎士會議,為了不引發騎士之間的衝突,並且能夠讓會議的議題有令人滿意的結果,每次開會前都必須對出席會議的騎士有如下要求:1、  相互憎恨的兩個騎士不能坐在直接相鄰的2個位置;2、 

codeoforces 271 D (尾碼自動機 SAM)

http://codeforces.com/problemset/problem/271/D題意:給你一個字串S,然後定義每一個字元是”好的‘或是”壞的“,求S中包含不超過k個壞字元的不同字串的個數。 思路:這道題可以用雜湊和SET過的,但是太慢啦,我覺得正解應該是SA或者SAM,下面介紹SAM的做法。我們構造S的SAM,然後在SAM的每一個狀態維護sum,表示該狀態

總頁數: 61357 1 .... 19206 19207 19208 19209 19210 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.