Time of Update: 2018-12-03
這題之前在poj做過,搬過來居然RE,重寫了一遍題意就是給n個點,就是圖中的實線的頂點,然後問虛線的長度虛線要求每處距離定點都要大於r解法,求n個點的凸包長度,再加上2*PI*rPI是圓周率,就是答案,至於為什麼,看就懂了上代碼。#include<iostream>#include<algorithm>#include<math.h>#include<cstdio>#include<stack>#define PI acos(-1.0)
Time of Update: 2018-12-03
題:動物王國中有三類動物 A,B,C ,這三類動物的食物鏈構成了有趣的環形。 A 吃 B , B 吃 C , C 吃 A 。 現有 N 個動物,以 1 - N 編號。每個動物都是 A,B,C 中的一種,但是我們並不知道它到底是哪一種。 有人用兩種說法對這 N 個動物所構成的食物鏈關係進行描述: 第一種說法是 "1 X Y" ,表示 X 和 Y 是同類。 第二種說法是 "2 X Y" ,表示 X 吃 Y 。 此人對 N 個動物,用上述兩種說法,一句接一句地說出 K 句話,這 K
Time of Update: 2018-12-03
題意給一個序列,求一個長度不超過k的連續子序列該子序列的和儘可能的大對序列a[0],a[1],,,,a[n-1]算出sum[0],sum[1],,,,,sum[n-1]sum[i]=a[0]+a[1]+...a[i]對最大字序列的和a[i],a[i+1],,,,a[j]為sum[j]-sum[i-1]對於j要找到i-1使得sum[j]-sum[i-1]最大且j-i<k這個過程用單調隊列實現即可#include<iostream>#include<algorithm>
Time of Update: 2018-12-03
求一次最長降序和最長升序,輸出兩個答案#include<iostream>#include<algorithm>#include<cstdio>using namespace std;int a[1010];int d[1010];//d[i]表示包含i的0,1,2,,i的最長子序列int main(){int n;while (~scanf("%d",&n)){for(int i=0;i<n;i++){scanf("%d",&a[i])
Time of Update: 2018-12-03
簡單dpres[i][j]表示i長度的前a個字元的串與前j個長度的b字串的編輯距離當stra[i-1]等於strb[j-1]時,狀態轉移為res[i][j]=res[i-1][j-1]否則,res[i][j]=MIN(res[i-1][j-1]+1,res[i][j-1]+1,res[i-1][j]+1)#include<iostream>#include<algorithm>#include<cstdio>using namespace std;char
Time of Update: 2018-12-03
d[i][0]表示不選該節點的以該節點為子樹的最大歡樂值d[i][1]表示選擇該節點的以該節點為子樹的最大歡樂值staff表示員工狀態轉移為d[i][0]=sum(max(d[i-child][0],d[i-child][1]))d[i][1]=sum(d[i-child][0])#include<iostream>#include<algorithm>#include<cstdio>#include<list>using namespace
Time of Update: 2018-12-03
拿了以前在pojAC的代碼一交,WA了。。。重寫了、根據題意有p+m*k=q+n*k (mod L)化簡p-q+(m-n)k=(k')*L再化簡(m-n)*k+k'*(-L)=q-p另a=m-n,b=-La*k+b*k'=q-p這就可以用擴充歐幾裡德了#include<iostream> #include<algorithm>using namespace std;long long x,y;long long extended_gcd(long long
Time of Update: 2018-12-03
題意:在素數表中2的位置上1,3的位置是2,5的位置上3給一個數,問他的最大素數因子在素數表中的什麼位置開始用素數篩選出來後試除果斷TLE了。。。改一下素數篩選素數篩選的過程中,定義一個數組,初始代表所有的數都為素數然後一個一個篩掉這裡改了一下篩法,代碼中講解#include<iostream>#include<algorithm>#include<cstdio>using namespace std;#define MAX 1000000int f[MAX]
Time of Update: 2018-12-03
題意:給a和b,求f[a]+f[a+1]+....f[b]f為對應的歐拉函數值解法:線性篩法,因為歐拉函數是積性函數可用篩法計算歐拉函數值若p ∤ i,ϕ(p*i)=(p-1)*ϕ(i)若p|i,
Time of Update: 2018-12-03
中文題,水題,so,貼代碼了。。#include<iostream>#include<algorithm>#include<cstdio>using namespace std;int q[30][30];int grade[30][30];int n,m;bool in(int x,int y){ return x>=0&&x<n&&y>=0&&y<m;}int dir[4][2]
Time of Update: 2018-12-03
題意:輸入一串指令,每個指令一行指令有4種第一種:0 S,將一個S*S的矩陣初始化為0,編號為0,1,,,S-1第二種:1 X Y A,將座標(X,Y)的值加A第三種:2 L B R T,求座標(X,Y)的值總和,L<=X<=R,B<=Y<=T第四種:3,結束解法:我開始想用一維的樹狀數組做,結果TLE了
Time of Update: 2018-12-03
題意樹的資料結構定義為根節點沒有一條邊指向它 除根節點外每個節點必有剛好一條邊指向它 從根節點剛好只有一條路徑可以到達每個點範例有多組,每組範例以0 0結尾如果範例是-1 -1,程式終止每組範例的輸入是n對數,一對數a和b代表a到b有一條有向邊解法:原來想怎麼解來著忘了,反正弄了一堆很麻煩的玩意還RE了後來用入度為0的點只有一個,其餘都是入度為1的點這個性質過了#include<iostream>#include<algorithm>#include<cstdio&
Time of Update: 2018-12-03
題意:對於範例51210意思是有5個數,然後第一個0省略,實質的序列是0 1 2 1 0要求輸出的序列為res[1] res[2] res[3] res[4] res[5] 那麼,對於res[2]來說,他前面有1個比他小的,對於res[3]來說,他前面有2個比他小的,對於res[4]來說,他前面有1個比他小的,對於res[5]來說,他前面有0個比他小的,這5個數為1 2 3 4 5要求輸出res序列我的做法:對於1 2 3 4 5建立樹狀數組,並且全部放入樹狀數組中,此時樹狀數組的C數組為1 2
Time of Update: 2018-12-03
在當前網路與分布式系統安全中,被廣泛利用的50%以上都是緩衝區溢位,其中最著名的例子是1988年利用fingerd漏洞的蠕蟲。而,中,最為危險的是堆疊溢位,因為入侵者可以利用堆疊溢位,在函數返回時改變返回程式的地址,讓其跳轉到任意地址,帶來的危害一種是程式崩潰導致拒絕服務,另外一種就是跳轉並且執行一段惡意代碼,比如得到shell,然後為所欲為。我在這裡示範一下堆疊溢位的原理。首先,介紹一下,與堆棧有關的一些概念:動態記憶體有兩種,堆棧(stack),堆(heap)。堆棧在記憶體上端,堆在記憶體下
Time of Update: 2018-12-03
這題調了N久啊有木有,交到hdu都AC了的代碼,在BIT就是WA,我調了三個小時了有木有問題:已知多邊形的各點的座標計算一個多邊形的重心的座標,多邊形的品質分布均勻按逆時針順序給出各個點的座標將多邊形作切割,紅點是各個三角形的重心,連起來就是另一個多邊形將各個三角形看成一個點,即整個三角形的重量都集中在一個點上然後求各個重心所構成的多邊形的重心例如,各個重心的座標為(x1,y2)(x2,y2)...(xn,yn)各個重心的重量為w1,w2,,,,,wn多邊形的重心為X,YX=(x1*w1+x2*
Time of Update: 2018-12-03
完全背包問題,背包解法詳見背包九講題意:有一個罐子,裡面裝著錢,你知道它裡面裝的錢的重量。同時給出所有種類的錢的價值和重量,問罐子裝滿時的最小重量初始化時,由於只有在體積為0的時候被裝滿,所以只有d[0]=0,而其他情況都未知,所以設為最大值範例解釋310 11021 130 5010 11021 150 301 6210 320
Time of Update: 2018-12-03
大家都知道,記憶體流失是每一個程式員和公司最關注的問題。因為此問題可以說是一個定時炸彈且不容易發現。在華為等一些著名的軟體公司都十分注意和關心這個問題。一次在聽華為一個驅動組的主管的講座時,他多次的有意識的提到了這個問題,也再次證明了越是經驗豐富的老開發人員越關心記憶體這塊雷區,但我們最常去的地方恰恰也就是這塊雷區了。最近可能是我們主管在參加什麼翻譯國外技術書籍(不知道他是否要出書呢,唉,以後逛書店大家真的要好好挑一下書了)。沒事就會問我一些奇怪的技術問題,不過,今天這個問題我還是比較有興趣的
Time of Update: 2018-12-03
這題一開始想不出來,後來看解題報告說普車在沙漠中建臨時油庫,是逐步向前推進的,即建好一個油庫後,再建下一個油庫就懂了_(:з」∠)_設從A點到達B點的路中建立了n個油庫,從A到B依次編號為Cn,Cn-1,,,,,,,C1顯然C1建立的時候是500升油設在建立Ci(最後有V1升油的時候)的過程中,用了C(i+1)的
Time of Update: 2018-12-03
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;int n;struct node{ int val; int num;//編號}inPut[500050];//用於處理輸入的數組int a[500050];//離散化後的數組int c[500050];//數狀數組int lowbit(int i){
Time of Update: 2018-12-03
一、預備知識—程式的記憶體配置 由C/C++編譯的程式佔用的記憶體分為以下幾個部分 1、棧區(stack):由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其操作方式類似於資料結構中的棧。 2、堆區(heap): 一般由程式員分配釋放, 若程式員不釋放,程式結束時可能由OS回收。注意它與資料結構中的堆是兩回事,分配方式倒是類似於鏈表。 3、全域區(static):全域變數和靜態變數的儲存是放在一塊的,初始化的全域變數和靜態變數在一塊地區,