原创 Codeforces652C

把點對映射成相應的區間,如果有相同左端點的區間就選擇右端點靠左的,因爲右端點靠右的區間實際上對於答案已經沒有貢獻了,然後再把區間從頭到尾掃一遍即可 代碼: #include<iostream> #include<cstdio>

原创 hdu1027 STL

next_permutation比當前排列大的下一個全排列 prev_permutation比當前排列小的下一個全排列 #include<iostream> #include<cstdio> #include<algorithm>

原创 hdu1597二分查找

hdu1597二分查找 先找出每一個“S[i]”的前綴和,再通過二分找到第n個阿拉伯數字所在的數。 代碼: #include<iostream> #include<cstdio> using namespace std; con

原创 uva11624搜索

搜索,兩次BFS,第一遍BFS處理出火燒的時間,第二次BFS逃跑路線,注意不只有一處火。 #include<iostream> #include<cstdio> #include<cstring> #include<queue>

原创 hdu1728搜索bfs

hdu1728搜索bfs 題目要求在規定的轉彎次數內能不能到,所以狀態就是轉彎的次數和位置,直接bfs,到達目的地的時候判斷一下轉彎次數就OK了 直接上代碼: #include<iostream> #include<cstdio

原创 51nod 1103-N的倍數(抽屜原理)

在這n個數的前綴和模N中,必定有一個前綴和模N爲0或有兩個前綴和模N相等,所以處理出所有前綴和模N的結果即可。 AC代碼: #include<iostream> #include<cstring> #include<cstdio

原创 HDU6108小C的倍數問題

根據小學數學知識,我們知道一個正整數x是3的倍數的條件是x每一位加起來的和是3的倍數。反之,如果一個數每一位加起來是3的倍數,則這個數肯定是3的倍數。 根據基本的數學知識,我們能夠知道上述規律的證明方式: (a0+a1∗101

原创 UVA10047搜索

狀態比較多,根據題目描述來看,是可以原地打轉的,也是可以反向的,所以狀態就是位置+顏色+方向,bfs,就是寫起來比較糟心 #include<iostream> #include<cstdio> #include<cstring>

原创 uva10054

uva10054歐拉回路 這個題的題目描述不是很明確,沒有說必須要用到所有珠子,所以判斷不判斷聯通沒有影響,直接dfs刪邊找出路徑就可以了 下面的代碼第一個是判斷聯通的,第二個是不判斷的,都能A,不過判斷聯通的代碼會快一倍。 #

原创 hdu2955

hdu2955 比較清奇的一道01揹包題,(英文題還是好難懂)題目意思就是說他每搶一個銀行,就有一個收入和一個被抓住的機率,他想盡量搶多一點錢,還要讓被抓住的可能性小於一個值。 emmmm,如果很直接地去想把概率當成揹包裏

原创 Hdu3333樹狀數組&&離線查詢

HDU3333 Turing Tree 題意是說,給出N個數,有Q次詢問,每次詢問給出區間 [l,r] ,要求答出每次詢問區間內所有不重複的數字的和,如果重複出現就只記錄一次。 樹狀數組在線做會TLE,這個題用樹狀數組離線做。

原创 HDU1556

hdu1556 Color the ball(簡單線段樹) 只需要支持區間修改操作,統計答案直接就把所有的區間下放,輸出長度爲1 的區間們 #include<iostream> #include<cstring> #include

原创 POJ2299 逆序對(樹狀數組)

樹狀數組求逆序對裸題,先來個離散化,然後樹狀數組做逆序對,每把一個數字(a[i])處理之前,答案加上sum(a[i),然後再在樹狀數組中對於a[i]的位置上加1, 這樣的話,每次樹狀數組取前綴和的時候,取到的前綴和就是在a[i]

原创 hdu1024

hdu1024 dp,滾動數組優化 方程:f[i][j]=max(f[i−1][j−1],f[i][k])+num[j];(k=1,2,...,j−1) —>f[i][j]=max(f[i−1][j−1],f[i][j−1])

原创 POJ2676數獨(DFS)

倒着搜,挺快的 #include<iostream> #include<cstring> #include<cstdio> using namespace std; int gra[15][15]; int t[10]={0,1,