noip 2010 提高組合集
t1 機器翻譯
模擬題,用乙個棧模擬,桶記錄即可。
#include #include #include #include #include #define n 1010using namespace std; mapmp; int que[n],a[n]; int l,r;
int main()}}
printf("%d\n",ans);
return 0;
}
t2 關押罪犯
開始的時候這個題特別容易做成直接模擬,然後記錄帶敵人集合並查集的最大值之類的錯誤做法。
這個題我們將所有的關係按照怨氣值排序,緊接著我們只要逐一盡量滿足即可。第乙個不能滿足的就是答案。
#include #include using namespace std;struct node f[100010];
int n,m,a[20005],b[20005],i;
inline bool cmp(const node &x,const node &y)
int find(int x)
inline void merge(int x,int y)
inline bool check(int x,int y)
int main()
else
if(!b[f[i].y]) b[f[i].y]=f[i].x;
else }}
return 0;
}
t3 烏龜棋
一眼dp的題。關鍵在於狀態,開始的時候我設成了f[all][i][j][k][l],表示一共走了all,每個卡片分別用了i,j,k,l個。然後自信的認為最後一維可以卡掉,然後就不會優化了。
之後開心的開題解,以為對於那個東西可以有什麼好的方式優化,結果... ...tm我們可以把第一維壓掉...轉移顯然。
#include #include #include #include using namespace std; int num[400];int f[41][41][41][41]; int g[5];
inline void fix(int &x,int y)
int main()
printf("%d\n",f[g[1]][g[2]][g[3]][g[4]]);
return 0;
}
t4 引水入城。
聯賽中還算友好的爆搜。我們對於每乙個接受格仔開始bfs,易於發現每個發射格仔能匹配的肯定是一條線段,之後dp就行了。
#include #include #include #include using namespace std;#define n 510
#define nx x+xx[i]
#define ny y+yy[i]
int l[n][n],r[n][n];
int high[n][n];
int n,m;
bool vis[n][n];
int xx[4]=;
int yy[4]=;
int qx[n*n],qy[n*n];
inline char nc()
int rd()
void dfs(int x,int y)
}int main()
}if(flag)
int left=1;
while(left<=m)
puts("1");
printf("%d",cnt);
}
NOIP 2010提高組題解
這是同機房一位巨佬在ak ioi之後發表的感言。為了學習他的這種精神 我太菜了,但我也想像他一樣ak ioi qaq 這篇題解就誕生了。戰車被馬拉著 直接模擬。注意入隊的時候打上標記,出隊的時候清楚標記,每次查詢的時候直接o 1 o 1 o 1 查詢標記即可。時間複雜度o n o n o n 一直在...
NOIP2010提高組 引水入城
這題。以前打的,很暴力的bfs include include using namespace std int a 502 502 ll 502 rr 502 data 300001 2 bool bz 502 502 int temp,n,m const int way 5 2 void bfs ...
NOIP2010 提高組 關押罪犯
s 城現有兩座監獄,一共關押著 n 名罪犯,編號分別為 1 n 他們之間的關係自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發衝突。我們用 怨氣值 乙個正整數值 來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之間的積怨越多。如果兩名怨氣值為 c 的罪犯被關押在同一監...