單調隊列+STL deque

單調隊列=雙端隊列!我們從最簡單的問題開始:給定一個長度為N的整數數列a(i),i=0,1,...,N-1和窗長度k.要求:      f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i =

【約瑟夫模板】

具體可以以選猴王為例 http://poj.grids.cn/practice/2746這裡mark一下這個模板。#include <iostream>using namespace std;int last[400][400];void count_monkey(int n, int m){ if(n<=0) return ; int i,t; last[1][0]=1; for(i=2;i<=n;i++) {

【2-SAT】

具體推薦先看這個《由對稱性解2-SAT問題》演算法合集之《由對稱性解2-SAT問題》 再看趙爽的2-SAT解法淺析 看完了就基本明白2-SAT是怎麼一回事,說白了就是約束!而做這種題的關鍵是建圖!其他的就套模板,什麼強連通縮點,拓撲染色。。。下面就具體以poj兩道題為例說說,poj3683是輸出具體方案,poj2723是輸出方案數演算法流程:1.構圖2.求圖的極大強連通子圖3.把每個子圖收縮成單個節點,根據原圖關係構造一個有向非循環圖4.判斷是否有解,無解則輸出(退出)5.對新圖進行拓撲排序6.

【快速排序】

快速排序(Quicksort)是對冒泡排序的一種改進。由C. A. R.

Food combination ZJU2861 組合數學

轉化為模型即為求最多含有L個1的N位位元中的第M大的數#include<stdio.h>#include<iostream>#include<memory.h>using namespace std;#define MAXN 63long long a[MAXN];   long long b[MAXN];   long long c[MAXN][MAXN];long long gcd(long long x,long long y)   {      

hoj2360Redundant Paths雙連通

大致題意:       為了保護放牧環境,避免牲畜過度啃咬同一個地方的草皮,牧場主決定利用不斷遷移牲畜進行餵養的方法去保護牧草。然而牲畜在遷移過程中也會啃食路上的牧草,所以如果每次遷移都用同一條道路,那麼該條道路同樣會被啃咬過度而遭受破壞。      

通用歸併排序

    用支援遞迴的語言實現歸併排序是很簡單的。假設m_sort可以將一個數組排序,那麼m_sort的遞迴邏輯為:(m_sort的定義為void m_sort(void* arr, int left, int right))    基礎:當right<=left時,直接返回    歸納:求得left和right的中間值mid = (left + right) / 2,將m_sort作用於數組區間[left, mid]和[mid + 1,

main函數參數意義

int   main( int   argc ,  char  *argv[] ,   char  *envp[] )       main()函數一般用int或者void形的。我比較喜歡用int型定義main。因為在結束的時候可以返回給作業系統一個值以表示執行情況。       int   argc       這個東東用來表示你在命令列下輸入命令的時候,一共有多少個參數。比方說你的程式編譯後,可執行檔是test.exe       D:\tc2>test      

poj2942點雙連通奇圈-二分圖判斷Knights of the Round Table

題意:在亞瑟王的圓桌騎士團中,某些騎士兩兩之間相互憎恨,這樣一來他們開會的時候邊不能相鄰的坐著。即肯定存在某些人不能參加會議。假如一個騎士所有的會議都不能出席,那麼他就會被驅逐。現在已知那些騎士之間相互憎恨,求最少要驅逐多少名騎士。(開會時人數必需>=3且為奇數)題解:建圖時,對互相不憎恨的兩人之間連一條邊。對任意一名騎士來說,他要能出席某次會議則他左右的人都不能與他互相憎恨。將每次參加會議的所有人(不一定是整個騎士團,只需人數>=3且為奇數)看做一個點雙聯通分量,那麼每個點都至少有

通用二分尋找

    這是極其簡單的一個演算法,正是因為其簡單,我經常被其搞死。不管是在比賽時還是在面試時,我都在這上面栽過跟頭。因為其簡單,所以總也不願花過多時間來寫它,總想一氣呵成,但總也呵不成,於是腦袋越來越混亂,情緒越來越激動,於是悲劇隨之而來。    二分尋找要求被尋找數組是排好序的數組,其時間複雜度為O(log(n)),也就是說1億的資料量大概運行26次就能求出結果。#include <stdio.h>#include <stdlib.h>int

hoj 1005 fast food

題意:有n個飯店,從中選擇k個建立倉庫。給出n和k以及n個飯店的x座標,每個飯店從離他最近的倉庫獲得資源,使得所有飯店到倉庫的距離和最小。思路:見代碼#include <stdio.h>#include <math.h>//m[i,j]表示在前 j 個飯店建立 i 個倉庫的最小距離和//w[i,j]表示在 d[i..j]之間建立一個倉庫的最小距離和int w[201][201], m[31][201], d[201] ;int main(){ int n, p,

通用快排

    在快排中,這樣的數組元素被稱為樞軸——其前面的元素全都小於它(或大於),其後面的元素全都大於它(或小於)。如此,我們很容易想到,對於一個數組,如果其全部元素都可以被稱為樞軸,那麼,該數組就是一個已經排序好的數組。    參考代碼:#include <stdlib.h>#include <stdio.h>#include <string.h>static int partition(void* arr, int(*cmp)(void*, void*),

STL【Heap】

STL裡面的堆操作一般用到的只有4個。他們就是make_heap();、pop_heap();、push_heap();、sort_heap();他們的頭函數是include<algorithm>首先是make_heap();他的函數原型是:void

【博弈論】

推薦:wutianqi‘s blog尋找平衡狀態(也稱必敗態,奇異局勢),(滿足:任意非平衡態經過一次操作可以變為平衡態)(一)巴什博奕(Bash Game):只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取p個,最多取q個.最後取光者得勝.n = (m+1)r+s , (r為任意自然數,s≤m), 即n%(p+q) != 0,

網路資料收發通用代碼

    對於任何一個支援網路通訊的應用程式,它都有其自身的應用程式層通訊協定。該協議規定了應用程式發送什麼樣格式的網路資料或接收到某某資料時回送的資料格式。該協議是由應用程式層相關人員定製的。   

【歸併排序+實現】

歸併排序——O(n*logn)歸併(Merge)排序法是將兩個(或兩個以上)有序表合并成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的。然後再把有序子序列合并為整體有序序列。歸併排序是建立在歸併操作上的一種有效排序演算法。該演算法是採用分治法(Divide and

【圖染色】ZOJ 2066

很簡單,先根據每個人選擇情況建一個無向圖,然後標記染色,有相鄰邊的不能染成同種顏色!原來標準時先對度排序,再染色。。。沒有排序都可以過,這種演算法叫Welch Powell演算法,自己加上度的排序吧~用Welch Powell

【劃分樹】

劃分樹和歸併樹都是用線段樹作為輔助的,原理是基於快排 和歸併排序 的。劃分樹的建樹過程基本就是類比快排過程,取一個已經排過序的區間中值,然後把小於中值的點放左邊,大於的放右邊。並且記錄d層第i個數之前(包括i)小於中值的放在左邊的數。具體看下面代碼注釋。尋找其實是關鍵,因為再因尋找[l,r]需要到某一點的左右孩子時需要把[l,r]更新。具體分如下幾種情況討論:假設要在區間[l,r]中尋找第k大元素,t為當前節點,lch,rch為左右孩子,left,mid為節點t左邊界和中間點。1、sum[r]-

【並查集+壓縮路徑】

  並查集:(union-findsets)一種簡單的用途廣泛的集合. 並查集是若干個不相交集合,能夠實現較快的合并和判斷元素所在集合的操作,應用很多,如其求無向圖的連通分量個數等。最完美的應用當屬:實現Kruskar演算法求最小產生樹。 並查集的精髓(即它的三種操作,結合實現代碼模板進行理解):1、Make_Set(x) 把每一個元素初始化為一個集合初始化後每一個元素的父親節點是它本身,每一個元素的祖先節點也是它本身(也可以根據情況而變)。/* 初始化集合*/void

資料結構之【trie樹】

1、 概述Trie樹,又稱字典樹,單詞尋找樹或者首碼樹,是一種用於快速檢索的多叉樹結構,如英文字母的字典樹是一個26叉樹,數位字典樹是一個10叉樹。Trie一詞來自retrieve,發音為/tri:/ “tree”,也有人讀為/traɪ/ “try”。Trie樹可以利用字串的公用首碼來節約儲存空間。如所示,該trie樹用10個節點儲存了6個字串tea,ten,to,in,inn,int:在該trie樹中,字串in,inn和int的公用首碼是“in”,因此可以只儲存一份“in”以節省空間的。當然,

總頁數: 61357 1 .... 13144 13145 13146 13147 13148 .... 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.