Маленькое дерево у компьютера

Русские Блоги

[HDU] 2196 компьютер имеет маленький вкус DP в форме дерева

Пусть fsdist [i] .dist1 был самым длинным путем первого узла к листу, fsdist [i] .dist1.dist был расстоянием пути. Вторичный путь (если есть вторичный путь, информация в Dist2 такой же, как и дистальный. расстояние от x до y, тогда

Fsdist [i] .dist1, я был корневым узлом

F [i] .dist1.dist = max (fsdist [p [i]]. Dist1.dist + dist (i, p [i]), fsdist [i] .dist1.dist), fsdist [p [i]] .ENTRY! = I && I -не -Рукол.

Max (fsdist [p [i]]. Dist2.dist + dist (i, p [i]), fsdist [i] .dist1), fsdist [p [i]]. Intry == i && fsdist [p [i ]]. Distal2! = null && i -не -Ручаный узел

Max (dist (i, p [i]), fsdist [i] .dist1.dist), fsdist [p [i]]. Intry == i && fsdist [p [i]]. Dist! Правильный и неправильный корневой узел

На самом деле, это просто для сравнения самого длинного пути каждого узла с листьями с самым длинным путем к самым длинным пути к самым длинным пути. Способ найти — найти самый длинный путь родительского узла в листовом узле.

Здесь подчеркнули, что выход из родительского узла без возвращения значит ссылаться на самый большой путь, чтобы добраться до листового узла через родительский узел, который не может быть путем, на котором находится текущий узел. Это самый длинный путь, найденный родитель Узел, который можно сравнить с самым длинным путем от текущих листьев и листьев до листьев. Если самый длинный путь, обнаруженный из родительского узла, проходит через текущий узел, найдите длинный путь и сравнивает самый длинный путь от текущего листового узла листьев до листьев.

Прежде всего, глубокий поиск, получите fsdist [i] .dist1 и fsdist [i] .dist2 каждого узла, а затем достиг вышеуказанной логики в глубоком поиске. Также обновление f [i]. Dist2, потому что когда вы Подумайте, как далеко, когда вы выходите от родительского узла, на самом деле это самый большой путь от родительского узла до листового узла. Если второй длинный путь, если вторичный путь нет, рассмотрите расстояние от текущего узла до родителя Узел. Независимо от того, что, по сравнению с fsdist [i] .dist1, fsdist [i] .dist2, что текущий узел получил, рассчитывал f. [i] .d1 и f [i] .dist2.

#include #include #include using namespace std; int n; struct Adge < int vetex; Adge* nextAdge; int dist; >; struct Entry < int id; int longestDist; >; struct cmp < bool operator()(Entry x,Entry y) < if(x.longestDist>; struct Node < Adge* firstAdge; int id; int pre; Entry firstLong; Entry secondLong; int EntryCount ; int distFromRoot; >; Node nodes[10001]; bool v[10001]; void createAdge(int st,int ed,int cost) < Adge* adge = (Adge*)malloc(sizeof(Adge));//////////////// adge->dist=cost; adge->vetex=ed; adge->nextAdge= nodes[st].firstAdge==NULL ? NULL : nodes[st].firstAdge; nodes[st].firstAdge=adge; adge = (Adge*)malloc(sizeof(Adge));///////////////// adge->vetex =st; adge->dist=cost; adge->nextAdge= nodes[ed].firstAdge==NULL ? NULL : nodes[ed].firstAdge; nodes[ed].firstAdge=adge; > int dfsGetLongestDistInDescendants(int root=1) < v[root]=true; Adge* arc = nodes[root].firstAdge; priority_queue,cmp> q; while(arc!=NULL ) < if(!v[arc->vetex]) < nodes[arc->vetex].distFromRoot = nodes[root].distFromRoot+arc->dist; nodes[arc->vetex].pre=root; int dist = dfsGetLongestDistInDescendants(arc->vetex); Entry entry; entry.id = arc->vetex; entry.longestDist=dist+arc->dist; q.push(entry); > arc=arc->nextAdge; > if(q.empty()) < Entry e; e.id=root; e.longestDist=0; q.push(e); >if(!q.empty()) < nodes[root].firstLong = q.top(); q.pop(); nodes[root].EntryCount++; >if(!q.empty()) < nodes[root].secondLong = q.top(); q.pop(); nodes[root].EntryCount++; >return nodes[root].firstLong.longestDist; > void dfsGetLongestDistInAllTree(int root=1) < v[root]=true; Adge* arc = nodes[root].firstAdge; if(nodes[root].pre!=-1) < int pre =nodes[root].pre; int maybelonger = -1; // Maybelonger -это длина самого длинного или более длинного пути, который можно найти в листьях, которые сейчас можно найти в листовом узле. if(nodes[pre].firstLong.id!=root) maybeLonger=nodes[pre].firstLong.longestDist+nodes[root].distFromRoot - nodes[pre].distFromRoot; Else if (nodes [pre] .ntrycount == 2) // Самый длинный путь, который можно найти, - это второй длинный путь от исходного родительского узла до листового узла. Самый длинный путь - через текущий узел maybeLonger=nodes[pre].secondLong.longestDist+nodes[root].distFromRoot - nodes[pre].distFromRoot; иначе if (nodes [pre] .ntrycount == 1) // Оригинальный родительский узел к листовому узлу не имел длинного пути, и самый длинный путь прошел через текущий узел, поэтому самый длинный путь может быть расстоянием от узел к родительскому узлу. Сущность maybeLonger = nodes[root].distFromRoot - nodes[pre].distFromRoot; if(maybeLonger>nodes[root].firstLong.longestDist) < nodes[root].secondLong = nodes[root].firstLong; nodes[root].firstLong.longestDist = maybeLonger; nodes[root].firstLong.id = pre; if (узлы [root] .EntryCount == 1) // Если у узела не было длинного пути, теперь есть nodes[root].EntryCount=2; >else if((nodes[root].EntryCount==2&& maybeLonger>nodes[root].secondLong.longestDist) || nodes[root].EntryCount==1) < nodes[root].secondLong.longestDist = maybeLonger; nodes[root].secondLong.id = pre; if (узлы [root] .EntryCount == 1) // Если у узела не было длинного пути, теперь есть nodes[root].EntryCount=2; >> while(arc!=NULL ) < if(!v[arc->vetex]) < dfsGetLongestDistInAllTree(arc->vetex); > arc=arc->nextAdge; > > int main() < while(scanf("%d",&n)!=EOF) < int ed,cost; for(int i=1;i<=n;i++) < nodes[i].EntryCount=0; nodes[i].firstAdge=NULL; nodes[i].pre=-1; nodes[i].distFromRoot=0; >for(int i=1;i <=n-1;i++) < scanf("%d %d",&ed,&cost); createAdge(i+1,ed,cost); >memset(v,false,sizeof(v)); v[1] = true; dfsGetLongestDistInDescendants(); memset(v,false,sizeof(v)); v[1] = true; nodes[1].pre=-1; dfsGetLongestDistInAllTree(); for(int i=1;i <=n;i++) cout<return 0; > 

Спасибо: раздражает! Пересечение

Источник

Благодаря ULTRARAM ваш компьютер может находиться в спящем режиме более 1000 лет

ULTRARAM — это новый тип «универсальной памяти», срок службы которого превышает срок службы флэш-памяти вашего твердотельного накопителя и соответствует скорости чтения/записи системной памяти. И это все с меньшим энергопотреблением. Это своего рода святой Грааль памяти, который может изменить правила игры для вычислений. Неудивительно, что он только что получил награду на саммите по флэш-памяти.

По сути, это тип памяти, который теоретически может быть всем для всех устройств. Но, что неизбежно, он также довольно сложен по своей структуре.

«Наша запатентованная технология памяти использует квантово-механическое резонансное туннелирование, — говорится на сайте ULTRAM, — чтобы обеспечить непревзойденное сочетание скорости, энергонезависимости, долговечности и энергоэффективности».

Далее в брошюре о технологии поясняется, что: «ULTRARAM — это память на основе заряда, которая хранит данные, перемещая электроны в так называемый «плавающий затвор» или из него. Состояние заряда плавающего затвора считывается неразрушающим образом, измеряя проводимость нижележащего «канала». Последний компонент памяти — это барьер, который действует как «замок» для удержания электронов в плавающем затворе во время хранения данных. Барьер отпирается, чтобы позволить заряду течь, когда память записывается или стирается».

Технология исходит от Quinas Technology, компании, появившейся из Ланкастерского университета в Великобритании, где ULTRARAM был изобретен профессором физического факультета университета Манусом Хейном. Его появление на Flash Memory Summit — это его первая демонстрация, и кажется, что он может открыть целый новый мир устройств.

На данный момент у вас есть либо DRAM (или системная память), либо флэш-память. У них очень разные свойства, и поэтому они используются почти для совершенно разных целей. DRAM очень быстрая, скорость чтения и записи во много раз выше, чем у самого быстрого SSD, и ее можно перезаписывать практически столько раз, сколько вы хотите. Но это энергозависимая память, поэтому для хранения данных требуется постоянное питание. Как только отключается питание, исчезает и вся информация, поэтому спящий режим вашего ноутбука все равно будет разряжать аккумулятор.

И здесь на помощь приходит флэш-память. Она намного дешевле, намного медленнее, но долговечна и будет сохранять данные в течение длительного времени после отключения питания. Хотя он имеет сравнительно низкий рейтинг долговечности, когда чипы флэш-памяти изнашиваются со временем и в течение определенного количества циклов.

ULTRARAM обещает выполнять обе функции с производительностью на уровне DRAM, потребляя гораздо меньше энергии. И, как сообщается, он будет хранить данные в течение 1000 лет.

Quinas Technology называет применение ULTRARAM важным событием для центров обработки данных, где огромное количество энергии, необходимой им, потребляется потребностями памяти — либо сохранением данных в активной памяти, либо перемещением их между хранимой и активной памятью. Теоретически наличие ULTRARAM в вашем центре обработки данных может значительно снизить потребность в энергии в этом секторе.

Но это также может иметь огромные последствия и в потребительском пространстве. Спящего режима больше не будет, потому что вы можете сохранить состояние системы в ULTRARAM даже при выключенном питании и мгновенно запустить его из-за присущей ему скорости. Это было бы похоже на спящий режим Windows без каких-либо недостатков медленной загрузки, и вы могли бы вернуться к своему ПК через тысячу лет и теоретически практически мгновенно продолжить именно там, где остановились.

Возможно, важно то, что ULTRARAM — это не кремниевый продукт. Необходимое квантово-резонансное туннелирование, на которое он опирается, находится в составных полупроводниках, таких как антимонид галлия (GaSb), арсенид индия (InAs) и антимонид алюминия (AlSb), которые составляют текущую конструкцию ULTRARAM.

Технология только зародилась, и мы не знаем, каковы затраты на производство флэш-памяти или DRAM. Таким образом, его шансы откусить от сложившегося статус-кво будут зависеть от его потенциала массового рынка. Но это, безусловно, захватывающе и может оказать реальное влияние на все наши устройства.

Об авторе

Внеочередной любитель игр и всего, что с ними связано. Обладаю PS4, хоть и не являюсь сонибоем. Делюсь своим субъективным мнением по поводу отдельных тайтлов и всегда готов к дискуссиям. Пишу материалы ради удовольствия и чтобы отвлечься от болезни, с которой борюсь и которую точно одолею. Да и просто, всем добра, играйте во что нравится и наслаждайтесь.

Источник

Читайте также:  Эфирное масло чайного дерева гинекология
Оцените статью