Time of Update: 2018-12-03
Time of Update: 2018-12-03
現在終於明白ACM是什麼了..當我看到roba部落格裡面有這樣一個分類“演算法競賽”。終於知道演算法有多重要.. 新人,新群,新的論壇..我們算是第二波也被MysTic稱作“開路人”... 早點知道這個比賽就好了..需要知道的東西太多了 希望我們能像roba學長們那樣使這個比賽在我們學校引起關注並且發揚光大吧~一切才剛剛開始~ tips: 大數組要放全域變數。 提交之前一定得把多加的東西刪乾淨啊...
Time of Update: 2018-12-03
先把 一些沒有 成熟的代碼 以及思路放在這裡 手動開根號的基本方法:1、整數開平方步驟: (1)將被開方數從右向左每隔2位用撇號分開; (2)從左邊第一段求得算數平方根的第一位元字; (3)從第一段減去這個第一位元字的平方,再把被開方數的第二段寫下來,作為第一個餘數;
Time of Update: 2018-12-03
簡單背包類型dp將一個集合看做一個整型數,裡面元素x當做該整型數的第x-1位為1;然後背包求出在1到 1<<M 之間可以達到的數的個數;// hdu 3006 the number of set#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int MAX=20000;int N,M,a[100
Time of Update: 2018-12-03
UESTC 1214 divide && PKU 3390 Print Words in Lines [DP] 兩個題有些類似,都是在限定一段連續的區間內元素之和不大於給的M,都是DP解決;UESTC的1214元素存在負數,因此貪心是不對的; UESTC1214 二分+dp題意:給定一個N個元素的序列,不能改變順序,將N個元素分為M(M<=N)堆,最小化
Time of Update: 2018-12-03
Time of Update: 2018-12-03
一道很裸的二維線段樹。題意:操作①:加入一些mm的身高(x維),活潑度(y維),緣分值。 操作②:給定一個身高區間,一個活潑值區間,求出該區間內緣分值的最大值。二維線段樹,其實也很簡單,整個就是一個“樹套樹”的結構,一維線段樹中每個結點中有一顆子樹。由一維推廣到二維,在一維中的的一個值,變成了一顆樹。查詢的時候就是先找到對應的身高區間,然後再在活潑度區間尋找最大的緣分值。// hdu 1823 luck and love 二維線段樹#include<iostream>
Time of Update: 2018-12-03
NKU 1134 Relation OrderingRelation Ordering 序關係計數問題 一道很經典的dp題目。Dp題目,首先是嘗試找合適的最優子結構,或者有公用子問題。然後自己設計出合適的利於轉移的狀態。可以適當增加維數。另外本題解的範圍會超過long long。。所有需要高精度。因此用java來水。嘿嘿。(ps:以前覺得這種方法甚是ws,後來覺得用C++的高精度模板,沒什麼區別,也是ws);兩種經典解法。①dp[i] 表示: i個數能得到的不同的序關係的個數 dp[i]=s
Time of Update: 2018-12-03
Date:2010-05-21 HDU 3004 the chess 【bfs類比】題意:給定一個N*M的棋盤,放上己方的“車”,“馬”,“炮”三子,和對方的將“S”以及其他的子“D”;規定只有己方的三子能動,不能吃除對方將之外其他的子;求最少部分能將對方將吃掉;其中“車”,“馬”,“炮”與象棋規則完全一樣,包括“馬”的蹩腳規則; 分析:演算法並不複雜,只是簡單的BFS類比一下過程。只是中間的一些細節出來很麻煩;下午寫了下,一直wa。晚上debug一下,發現是一個 減號 誤寫成了
Time of Update: 2018-12-03
#include <stdio.h>#include <stdlib.h>int main(){ FILE *fp; float num=11.22334; fp=fopen("E:\\Recent Files\\test.txt","wb"); if (NULL==fp) { printf ("cannt open\n"); exit (1); }
Time of Update: 2018-12-03
Poj 1185 炮兵陣地NOI的經典題目。首先看資料範圍,列數C<=10,很容易誘導我們向狀態dp方向考慮。很多時候,題目的資料範圍就決定了你的演算法的複雜度,也影響著我們的思考方向。把問題看做是多階段決策過程。很容易發現,第i行選擇的位置(狀態),只和i-1,i-2行情況有關,與i-2之前的那些行的決策無關。 用狀態dp來做。用一個整數x表示該行的狀態,二進位中1表示該處放了炮兵,0表示沒有。 這樣,我們經過前兩行的狀態就能推到下面一行每個狀態的最大個數。令dp[i][j][k] 表示
Time of Update: 2018-12-03
轉:女生應該找一個玩ACM的男生1、強烈的事業心 將來,他也一定會有自己熱愛的事業。而且,男人最性感的時刻之一,就是他專心致志做事的時候。所以,找一個機會在他全神貫注玩ACM的時候,從側面好好觀察他,你就會發現我說的話沒錯。2、永不放棄的精神
Time of Update: 2018-12-03
問題描述: 有 n 個人 圍成一個環 從第start個人 開始 數 n_th個人 數到第n_th個人時 這個人出去 ,接著從這個人後再數n_th,一直迴圈,求最後一個出去得人 的序號比如: n=9,start=1,n_th=51 2 3 4 5 6 7 8 9 a[4] 第五個出去得: 1 2 3 4 6 7 8 9 然後繼續數 5個 去除a[0] 第一個2 3 4 6 7 8 9.....................the
Time of Update: 2018-12-03
測試案例:999 999998001999999999999 999999999999999999999998000000000001下面分析下999*999 6 5 4 6 5 436 30 24 30 25 20 24 20 16-------------------------------這裡結果 就清楚了但是要注意 asc 碼 最大是 128 所以要在加的時候就處理好 下面給出代碼 普通
Time of Update: 2018-12-03
Fzu月賽題目,當時沒做出來。最小化Ans=Min{sum{ai*aj},其中遍曆所有的i<j};而ai 只考慮取a[i] 或者 -a[i];(這裡不知道why了?) 考慮dp[i][j] : 前i個數可能組成的和為j時的 當前ans的最小值.考慮資料範圍,j可能的取值為[-4000 , 4000]。因此為了不出現負數,加上定值M=4000。那麼dp[i+1][j+a[i+1]]=min(dp[i+1][j+a[i+1]],dp[i][j]+ (j-M)*a[i+1]);dp[i+1][
Time of Update: 2018-12-03
/************************************************* fseek(FILE *, long, int) 參數分別表示指向操作檔案指標,位移量,起點檔案開頭 SEEK_SET 0檔案當前指標位置 SEEK_CUR 1檔案末尾 SEEK_END 2比如:fseek(fp,10L,SEEK_SET);這句就是以(seek_set為起點,往後移動10個位元組)=指標指向的地方 ftell(
Time of Update: 2018-12-03
題意:灰常經典的題目,就不用說了。最近看王曉東的《電腦演算法設計與分析》,就照著找題目刷了。分析:經典dp題目。 首先自己設計一個狀態dp[i][j](含義A串的前i個字元和B串的前j個字元的編輯距離),很容易分析出一個最優子結構; If(s[i]==t[j]) dp[i][j]=dp[i-1][j-1]; Else dp=min(dp[i-1][j]+1,dp[i-1][j-1]+1,dp[i-1][j]+1);Else 中三個決策分別是 刪除,改變,插入一個
Time of Update: 2018-12-03
話說已經好久沒有進行理論知識補充了,前幾天又看到一個朋友的工資上萬了,到百度工作去了,真是無限仰慕啊不廢話了,再說下自己對數組的新認識吧,算是一個以前的一個誤解了,今天晚上看c專家與編程,又得到了新的認識先把代碼貼出來#include <iostream>using namespace std;int main(){ int a[10]; int *p; int i=0; for (i=0; i<10; ++i) a[i]=i;
Time of Update: 2018-12-03
這裡直接貼代碼了,代碼裡面有注釋另外裡面還有一個是 乘法的,乘法的再上一部落格就有提到了,讀者可以 clickhere裡面 由於輸入的問題可能 有亂碼情況 具體的原始碼我放在 點擊這裡進入下載 #include <iostream>using namespace std;#include <string.h>#include <stdlib.h>#define max(a,b)
Time of Update: 2018-12-03
fzu 1927 取數遊戲模型有點隱形費用流,很不錯的題目。慚愧的是很長時間沒寫費用流了,調試了N久。-_-b.. 將數組A[i]中的每個數看做一個點i,並拆出對應的點N+i(為了限制流量)。那麼通過這個點的流量可以直接流向匯點,以b[i]的費用。也可以通過流向其他的點以較小的代價流出。 建圖:①新增源點,向每個初始點i連邊,容量為1,代價為0;②新增匯點,由拆分出來的點N+i向匯點連邊,容量為1,代價為0;③由每個初始點i向匯點連邊,容量為1,代價為b[i].④如果A[i],A[j]滿足有合適