考察知識:快速排序,map的基本操作
演算法難度:xx || x 實現難度:xx || x+
分析:如果用快排的話,要用分治思想,難度稍微大一些,用map就是基本操作,難度不大
如果追求速度可以寫乙個快速輸入函式,但是注意輸入是否有負數
map版**(含快速輸入):
#include#include#includeusing namespace std;
int t;
char ch;
void scan(int& in_) in_=0;
while(isdigit(ch)) in_=in_*10+ch-'0',ch=getchar();
in_*=t;
}mapmp;
map::iterator it;
int n,k;
int main()
考察知識:字串,模擬演算法難度:xx 實現難度:***分析:按照題目說的來就可以了,但是要注意審題,要考慮全面,如:![](https://pic.w3help.cc/f39/ff34ef753d0e19e6a81899560fe56.jpeg)
#include#include#include#includechar str[105];
int p1,p2,p3;
int main()
} else putchar(str[i]);
return 0;
}
考察知識:高精度,區間型動態規劃演算法難度:xx 實現難度:***分析:讀懂題意後我們發現我們可以把矩陣拆分成n排,每排m個元素的序列,然後針對每一排序列用動態規劃:1.定義f(curi,j)表示第cur排序列[i,j]取數的最大值
2.邊界:
3.答案
4.狀態轉移方程:
因為最後的答案很大,使用要用高精度
**:
#include#include#include#includeusing namespace std;
struct bign
void get_v(int v)
friend bool operator < (bign a,bign b)
friend bign operator * (bign a,int x)
friend bign operator * (bign a,bign b)
void out(bool entr=true)
}ans,f[82][82],b[82];
int n,m,a[100][100];
void calc(int cur)
ans=ans+f[1][m];
}int main()
考察知識:樹的基本知識,樹的直徑,列舉演算法難度:*** 實現難度:***+分析:題目有點亂,定義有點多,但是這道題並不難,根據題目的定義列舉可能的端點並計算偏心距就可以了演算法:1.先找樹的一條直徑
2.計算直徑上的每乙個點到樹的分支(不包含直徑)的最大距離
3.列舉直徑上所有距離小於s的兩點,計算這一段路徑的偏心距,偏心距=max(兩點到直徑端點(不經過這段路徑)的距離,路徑上每一點到這一點所在樹的分支的最大距離)
#include#includeusing namespace std;
const int maxn=305;
struct edgee[maxn*2];
int first[maxn],np;
void add(int u,int v,int l);
first[u]=np;
}int n,s,a,b,dis[maxn],dis2[maxn],fa[maxn];
bool vis[maxn];
void dfs(int i,int f,int dist,int& r)
}void dfs2(int i,int dist,int rt)
}void build()
dfs(1,0,0,a=0);//找直徑
dfs(a,0,0,b=0);
for(int i=b;i;i=fa[i]) vis[i]=true;
for(int i=b;i;i=fa[i]) dfs2(i,0,i);//計算分支最大距離
}int ans=0xffffff;
void solve()
ans=min(ans,t);
} else break;
printf("%d\n",n==1?0:ans);
}int main()
noip2007提高組題解
第一題 統計數字 排序 平衡二叉樹 受上面這篇文章的影響,我沒有用快排,而是用了stl的multiset的count函式來統計出現次數。但事實證明stl的sort足以應付此題。另外的解法是用treap實現的名次樹,效率不及sort但高於multiset。第二題 字串的展開 模擬 雖然是模擬題但是可惜...
NOIP2007 提高組 題解
2007 提高組題解 第一題 一開始還想是不是要用雜湊表儲存呢,但仔細想了一會兒,那個資料量20w 用個快排序,時間是能過的。所以這道題用個stl的快排,再乙個迴圈統計個數就ok了。但最後交上去評測時0分,很尷尬。就是我在資料初始化時從一開始計數,我迴圈又從一開始,多算了一次,爆掉了。改了就100了...
NOIP2007提高組 樹網的核
noip2007提高組試題4。設 t v,e,w 是乙個無圈且連通的無向圖 也稱無根樹 每條邊帶有正整數的權,我們稱 t 為樹網 treenetwork 其中 v,e 分別表示結點與邊的集合,w 表示各邊長度的集合,並設 t 有 n 個結點。路徑 樹網中任何兩個結點 a,b 都存在唯一的一條簡單路徑...