【KMP】ZOJ 3587

利用了kmp的性質,kmp可以找出前i個在主串出現的次數(可覆蓋),同樣也可以找出後j個在主串出現的次數,只需要反向kmp就行了==,具體實現是兩次預先處理正向&反向,然後記錄num1和num2數組所以複雜度是線性時間.....理解kmp是重點!#define N 100005char s[N],t[N];int next1[N],next2[N];int num1[N],num2[N];//記錄i左邊在主串出現次數和i右邊的int l1,l2;void gao1(){ int

hdu 2492【樹狀數組】

 http://acm.hdu.edu.cn/showproblem.php?pid=2492/*有一條街上的人進行乒乓球比賽。 每兩個人可以進行比賽的前提是能夠找到除了他們之外的一個裁判住在他們中間, 並且, 裁判的等級不能同時低於他們兩個人,或者同時高於他們兩個人。   思路:  用兩次樹狀數組;枚舉裁判位置,  用樹狀數組求出 左邊比他小的數有多少個,  求出左邊比他大的數有多少個, 再用一次樹狀數組 求出右邊比他小的數 有多少個, 

hdu 3003 【二分快速冪】

http://acm.hdu.edu.cn/showproblem.php?pid=3003推出的公式為2^(n-1)+1,利用二進位。過程:設不透明為0,透明為10 0---》1 0---》0 1---》1 1   三天0 0 0---》1 0 0---》0 1 0---》1 1 0---》0 0 1---》1 1 1 

【二分圖最大權匹配—KM演算法】

轉自百度百科KM演算法用來解決最大權匹配問題: 在一個二分圖內,左頂點為X,右頂點為Y,現對於每組左右串連XiYj有權wij,求一種匹配使得所有wij的和最大。基本原理  該演算法是通過給每個頂點一個標號(叫做頂標)來把求最大權匹配的問題轉化為求完備匹配的問題的。設頂點Xi的頂標為A[ i ],頂點Yj的頂標為B[ j ],頂點Xi與Yj之間的邊權為w[i,j]。在演算法執行過程中的任一時刻,對於任一條邊(i,j),A[ i

資料結構匯總

1、常見資料結構線性:數組,鏈表,隊列,堆棧,塊狀數組(數組+鏈表),hash表,雙端隊列樹:堆(大頂堆、小頂堆),trie樹(字母樹or字典樹),尾碼樹,尾碼樹組,二叉排序樹,二叉平衡樹,B+/B-,AVL,Treap,紅/黑樹狀結構,splay樹,線段樹,樹狀數組圖:圖其它:並查集,RMQ2、常見演算法(1)       基本思想:枚舉,遞迴,分治,類比,貪心,動態規劃,剪枝,回溯(2)       圖演算法:深度優先遍曆與廣度優先遍曆, 最短路徑,最小產生樹,拓撲排序(3)      

poj 3160【tarjan縮點+拓撲排序+DP】

http://poj.org/problem?id=3160方法:tarjan縮點+topsort+dp,注意這句話. To save vigor, flymouse decided to choose only one of those rooms as the place to start his journey and follow directed paths to visit one room after another and give out gifts en passant

hdu 1879 最小產生樹【prime演算法】

http://acm.hdu.edu.cn/showproblem.php?pid=1879 #include<stdio.h> #include<string> #define MAX 0x3fffffff int map[101][101],dis[101],vis[101]; int main() { int n; freopen("a.txt","r",stdin);

hdu 1241 bfs or dfs

http://acm.hdu.edu.cn/showproblem.php?pid=1241 基本沒什麼做過bfs,所以嘗試做做,看了一個課件後才基本明白bfs原理ps:課件網址:http://wenku.baidu.com/view/3cc5ea6c58fafab069dc02d8.html//================================================//hdu 1241 bfs//1241 15MS 248K 893 B C++//===========

poj 1228 判唯一凸包

http://poj.org/problem?id=1228題目大意是給你n個點,問能否確定唯一凸包;因為這些點都是邊界點,只要判斷每一邊界是否有>=3個點,有就YES,沒就NO。為什麼呢?因為假設存在兩個點,也就是說只有線段的兩個端點,那麼線外可以存在任意一點,形成不唯一的新凸包;當>=3時,假設線段外原來有一點,但這時要麼形成凹變形,要麼有某點不再邊界上(與題意矛盾),所以這樣判斷;注意n<=5輸出NO,所有點共線也是NO。注意,這裡我用一個數組把凸包的下標存起來,方便下面

hdu 1028 母函數—無限個

代模板。。。不解釋,要理解!。。。無限個硬幣模型http://acm.hdu.edu.cn/showproblem.php?pid=1028#include<stdio.h>int c1[130],c2[130];int main(){int n;while(scanf("%d",&n)!=EOF){int i,j,k;for(i=0;i<=n;i++){c1[i]=1;c2[i]=0;}for(i=2;i<=n;i++){for(j=0;j<=n;j++)

poj 1873【凸包+位元運算枚舉】

http://www.cnblogs.com/woodfish1988/archive/2008/09/08/1287166.html今天終於學會用二進位的位元運算來枚舉。。。#include<iostream>#include<vector>#include<map>#include<stack>#include<algorithm>#include<queue>#include<list>#include&l

poj 1270 Following Orders

Following OrdersTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 2194 Accepted: 794DescriptionOrder is an important concept in mathematics and in computer science. For example, Zorn's Lemma states: ``a partially ordered set in which every

HDU 3304 求楊輝三角第N行中能被素數P整除的數的個數

等價於C(n,m)%p==0求m的個數n!/(m!*(n-m)!)%p==0N!中p的因子個數等於m!與(n-m)!中的p的因子和即f(n) ==f(m)+f(n-m) //f(n)表示n!所含有的因子數 F(n)=n/p+n/(p^2)+....即:n/p+n/p^2+...=m/p+m/p^2+..+(n-m)/p+(n-m)/p^2+...  (1)又因為n/p^i>=m/p^i+(n-m)/p^i,所以等價於對任意i都有n/p^i =m/p^i+(n-m)/p^i

UESTC Treasure—-dfs

TreasureTime Limit: 2000 ms Memory Limit: 65535 kBSolved: 68 Tried: 140  Description   Loneknight is finding treasures in a maze. He is so greedy that he always takes away all the treasure he can reach. Now, he has a map for the maze, and he want to

hust 1425【DFS】

http://acm.hust.edu.cn/thx/problem.php?id=1425 再次orz青蛙牛&菊神的神思路,已經把DFS理解得出神入化思路:首先要知道(x1,y1,z1)(x2,y2,z2)(x3,y3,z3)的結果除以3模數,和(x1%3,y1%3,z1%3)(x2%3,y2%3,z2%3)(x3%3,y3%3,z3%3)的結果除以3模數是一樣的,然後因為abc可能是負數,負數%3=負數或0。用cnt數組記錄同類的有多少,然後DFS。。。額,比較難說清,看代碼吧。總之

hdu 1800 map水過

http://acm.hdu.edu.cn/showproblem.php?pid=1800輸出最多重複的level個數就ok#include<iostream>using namespace std;#include<map>int a[3010];int main(){//freopen("a.txt","r",stdin);int n;while(scanf("%d",&n)!=EOF){int i;map<int,int> m;for(i=0;

hdu GCD 【歐拉函數,素因子分解,篩選法,容斥原理】

一道不錯的數論題,可惜自己想不出,只能參考大牛們的代碼~~http://acm.hdu.edu.cn/showproblem.php?pid=1695#include<iostream>#include<vector>#include<map>#include<stack>#include<algorithm>#include<queue>#include<list>#include<set>#inc

ural 1119【dp+精度】

本題明顯是dp,用貪心的思想,肯定要走最多的捷徑,所以dp[i]表示到達當前捷徑之前最多的捷徑數狀態方程為dp[i]=max(dp[i],dp[j]+1),之前還要排序處理一下,接著就是蛋疼的精度,wa了幾次,最後要記得用floor(ans+0.5)處理一下。上代碼:#include <vector>#include <list>#include <map>#include <set>#include <queue>#include &

poj 1904【強連通分量】

表面看這道題是二分匹配,但是想深入一點,發現它是求強連通。為啥這樣說呢?因為開始時先把單向邊由男的連向女的,根據最後一行又由女的連向男的,然後就用tarjan縮點求強連通,注意把男的編號是1~n,女的編號是n+1~2n,還要注意最後輸出是升序的,所以要sort一下(沒注意到wa了一次)。下面附上sample的二分圖:男左女右。。。紅色為雙向邊,tarjan後就變成一個點,黑色的是單向邊。。。#include <vector>#include <list>#include

【2-SAT】POJ 3678

http://poj.org/problem?id=3678【題意】:有n個變數,每個可以取0或者1,再給出m組關係,每組關係都是兩個變數進行運算可以得到的結果,運算有AND OR XOR三種,問能否根據這些關係,判斷每個變數的取值。【題解】:2-Sat問題,關鍵是要把所有情況考慮完全。用x表示該變數取0,x’表示取1,下面說下如何構圖:              a and b == 1,  這種情況a和b必須取1,所以連邊a->a', b->b'.(保證合法時a b一定取1)  

總頁數: 61357 1 .... 13148 13149 13150 13151 13152 .... 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.