codeforces 873b - balanced substring(思維)題目大意:乙個字串全部由『0』和『1』組成,當一段區間[l,r]內的『0』和『1』個數相等,則稱為平衡子串,求最長的平衡子串。
解題思路:將0換成-1,算出每個點的字首和,若兩個點字首和相同,從第乙個點到第二個點之前的字串則為平衡串,求出最長的即可。
#include
using
namespace std;
#define ll long long
const
int n=
1e5+5;
int min[
2*n]
;int
main()
else
min[sum]
=min
(min[sum]
,i);
//tip1
ans=
max(ans,i-min[sum]);
} cout<}
tip1:很顯然這裡運用到了字首和的思想,但是字首和我們想找的是一開始的最小position,那就如**這樣處理,min[sum]初始化為無限大,後來從i=1往上遍歷,當字首和值一樣時,永遠保留最小位置。而答案就是每次更新ans,儲存最大ans輸出即可。
educational codeforces round 76(rated for div.2)題目大意:給你n個元素(每個元素大小為1~n),找到n出現頻率最高的元素(即為統治數),然後找統治數字置間最小的差值並且輸出。
#include
using
namespace std;
int a[
200005];
int b[
200005];
intmain()
int ans=n+1;
for(
int i=
1;i<=n;i++
) b[a[i]
]=i;}if
(ans==n+
1) ans=-1
; cout<}}
先初始化ans為足夠大的數,然後依次遍歷更新該數的位置,位置差就是當前的位置減去該數之前的位置,然後比較min,儲存答案輸出即可。
codeforces 884c : bertown subway
#include
#include
#include
#include
#define ll long long
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,n,a) for(int i=n;i>=a;i--)
#define endl '\n'
#define mem(a) memset(a,0,sizeof(a))
#define io ios::sync_with_stdio(false);cin.tie(0);
using
namespace std;
const
int inf=
0x3f3f3f3f
;const
int mod=
1e9+7;
const
int n=
1e5+5;
vector q;
ll n,a[n]
,ans,book[n]
;int
main()
//找環過程↓*tip
for(
int i=
1;i<=n;i++
) q.
push_back
(cnt);}
sort
(q.begin()
,q.end()
);if(q.
size()
<
2) ans=n*n;
else
cout<}
tip:他這個技巧比較高明,遇到某個元素直接把他的環全部挖出來了,對於每個position都有乙個target對應,他利用新的target代替原來postion,再去找下乙個target,因為是環嘛,所以最後的target會與初始的position一致的。環內每多乙個元素,cnt++。 對於nandflash壞塊的一些處理辦法
對於壞塊的處理 使用 nandflash,免不了出現個別的壞塊,一般情況下,有一些壞塊是正常的,也不會影響系統的正常啟動執行。如果出現因為壞塊無法啟動 linux 作業系統,那就需要乙個方法來處理這些邏輯上的壞塊 實際上壞塊不一定是真的壞了 邏輯壞塊引起的系統無法啟動,可以使用下面這種方法 開機按下...
對於大資料的一些處理方法
問題 資料太大,在記憶體中無法一次性裝入。分析 100億就是大約就是10g,對於現在的計算機而言,記憶體中無法容納這麼大的檔案。解決 將乙個大檔案切分為多個小檔案,例如 我們可以將該100億的大檔案切分為1000個檔案,即每個檔案的大小大約就是10m,那麼就可以在記憶體中容納得下了。那麼,我們要怎麼...
一些非常不錯的資料
一 intel 給開發人員推薦的資料列表 2010年下半年 其中包含了 二 jquery fundamentals 這可能是我見過寫得最好的jquery教程了,大量的示例,只是沒有時間和精力,不然一定全部翻譯過來。還有其它關於jquery的文章,你還可以檢視 25個jquery的程式設計小抄 三 h...