原创 USACO 2012 Mar Haybale Restacking 重排乾草

假設對於所有位置都只從其左邊一個位置搬運乾草過去,則可設ab[i]爲i號位接收到的乾草數量。ab[i]=a[i-1]-b[i-1]+ab[i-1]; 根據ab[i]排序。 這裏要採用快速排序,不然超時。 ps:這個程序用不到long lo

原创 USACO 2005 Nov Asteroids 小行星羣

#include<cstdio> #include<cstring> const int MAXN=500; const int MAXM=10000; const int MAX=MAXM*2+MAXN*4+10; const int

原创 wikioi 3299 有序數組合並求第K大問題

不必開3個數組,兩個夠了。 #include<cstdio> int n,m,k; int a[1000001],b[1000001]; int main(){ scanf("%d%d%d",&n,&m,&k); for

原创 USACO 2004 OPEN Moofest 奶牛集會

先按照座標x進行排序,隨後用歸併排序對v進行排序。用部分和去求總和。 #include<cstdio> #include<cstdlib> const int maxn=20002; int v[maxn],x[maxn],n; int

原创 wikioi 1115 開心的金明

#include<stdio.h>#include<stdlib.h>int f[30001],v[26],temp,n,vp[26],top,max,m;int main(){    f[0]=1;    scanf("%d%d",&n

原创 USACO 2008 Feb Hotel 預訂旅館

使用線段樹的數據結構。 每個節點存3個信息:pre->這個節點維護區間的左端點連續空的房間數 suf->這個節點維護區間的右端點連續空的房間數 len->這個節點維護區間的最長連續空的房間數 update爲更新父節點信息 download

原创 USACO 2007 OPEN Dining 奶牛晚宴

好吧,裸的網絡流+拆點。 #include<cstdio> #include<cstring> const int MAX=405; int n,f,d,s,t; int map[MAX][MAX],e[MAX][MAX],q[MAX],

原创 wikioi 2800 送外賣

其實就是TSP問題。 用狀態壓縮型動態規劃 #include<cstdio> const int MAXN=15; const int INF=1<<30; int n; int d[MAXN+1][MAXN+1]; int f[1<

原创 wikioi 1166 矩陣取數遊戲

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef structnode{ int a[40]; }hugeint; hugeint f[81][81],k

原创 USACO 2009 Feb Cruel Math Teacher 數的冪次

快速冪,不多說了。 #include<cstdio> #include<cstring> int a[15001],b[15001],c[15001],n,p; void copy(int c[],int a[]) { for(int

原创 wikioi 3297 木材加工

好吧其實就是基本的二分答案。 #include<cstdio> int n,k,a[100001]; int ans,mid,l,r; void check() { int num=0; for(int i=1;i<=n

原创 USACO 2009 Feb Revamping Trails 道路翻新

這道題不妨借用一下動態規劃的思路,把一個點拆成k+1(max是20)個點來做,對於所有的點ui分別和vi與vi+1相連。 詳見代碼: #include <iostream> const int maxn = 10000; const i

原创 USACO 2010 Feb Chocolate Giving 領取巧克力

這道題其實就是堆優化的Dijkstra。不用堆優化的話是會超時的。 #include<cstdio> #include<cstdlib> #define PROBNAME "cgiving" const int MAXN=50000;

原创 USACO 2009 Mar Earthquake Damage 2 地震破壞

這道題其實就是網絡流,難在建圖。 應該可以看出,這道題就是求一個最小割。 超級源點和超級匯點這個不在贅述,主要的一個就是要把所有點都拆成流入點和流出點,並且權值設爲1。 而對於與超級源點相連的點,則再加一條流量爲正無窮的邊,不然在用din

原创 USACO 2004 Nov Apple Catching 接住蘋果

f[i][j]表示第i個蘋果掉下來時貝西一共移動了j次所接到的最多的蘋果數。 根據移動次數能判別貝西在哪個蘋果樹下。 #include<cstdio> int n,k,f[1001][31],t[1001],ans; int max(in