NOIP2015 提高組合集

2022-05-01 20:33:09 字數 2562 閱讀 4470

noip 2015 提高組 合集

d1 t1 神奇的幻方

題目讓你幹啥你就幹啥,讓你咋走你就咋走就完事兒了

#include #include #include #include #define n 50 

using namespace std;

struct node

a[n*n];

int ans[n][n];

int main()

else if(a[i-1].x!=1&&a[i-1].y==n)

else if(a[i-1].x==1&&a[i-1].y==n)

else

else}}

for(int i=1;i<=n;i++)

}

d1 t2 資訊傳遞

由題目的描述,我們發現這是乙個基環內向森林。題目中問的是最多進行多少局,等價於求基環內向森林中所有基環的最小值。模擬即可。

#include #include #include #include #define n 200001

using namespace std;

int a[n],f[n],v[n];

inline char nc()

int rd()

int main()

printf("%d",ans);

return 0;

}

d1 t3 鬥地主

挖坑代填

d2 t1 跳石頭

二分答案,二分出最大可能值,然後暴力驗證

#include #include #include #include using namespace std;

int l,n,m,a[50010];

inline char nc()

int rd()

int check(int dist)

printf("%d\n",l);

}

d2 t2 子串

動態規劃

f[i][j][k]表示當前:a串列舉到了i,b串列舉到了j,已經找到了k個串切使用了a[i]的方案數。

g[i][j][k]................................不管使不使用a[i]的方案數。

然後因為空間問題,f[i][j][k],i壓滾動。

轉移sb

#include #include #include #include #define mod 1000000007 

#define n 210

using namespace std;

int f[2][n][n],g[2][n][n];

char s1[10010],s2[10010];

int main()}}

printf("%d\n",g[pre][m][k]);

return 0;

}

d2 t3 運輸計畫

一眼二分答案,關鍵是怎麼驗證。首先,我們對於每次詢問,都記錄出:這個詢問在不建立蟲洞的情況下的長度。

緊接著根據我們二分出的mid,對於一次距離大於mid的詢問樹上查分,記錄每條邊被多少詢問累計過。

然後我們邊權下放到點權,對於每條被所有大於mid的詢問經過的邊,我們判斷:是不是長度最長的詢問減去這條邊對應的邊權在mid內即可。

#include #include #include #include #define n 300010 

#define m 300010

using namespace std; int n,m;

inline char nc()

int rd()

struct line l[m]; inline bool cmp(const line &x,const line &y)

if(x==y) return x;

for(int i=25;~i;i--)

return f[x][0];

}void dfs_check(int pos,int fa)

}bool check(int x)

// printf("%d\n",begin);

for(int i=begin;i<=m;i++)

dfs_check(1,1);

for(int i=2;i<=n;i++)

}return false;

}void test()

void test1()

int main()

// if(m==1&&l[1])

for(int i=r-1;i<=l[m].v;i++)

puts("0");}/*

6 3

1 2 3

1 6 4

3 1 7

4 3 6

3 5 5

3 6

2 5

4 5*/

Noip2015提高組總結

總體而言noip還行吧,每天前兩題都穩穩地,但是最後一題做得不好。day1,看完題目後,第一題簽到,第二題很直觀想出來了,又畫了個圖驗證了一下,tarjan雖然可能爆棧,但人工棧就沒問題了。第三題認為是dp一類的東西。畢竟是第一次提高組,還是挺緊張的,一二題打得特別仔細特別慢,對拍,肉眼查錯,搞了接...

NOIP2015提高組解析

題目見此 day1 神奇的幻方 裸裸的模擬 其實也可以發現規律 i 1在i的右上方,如果已經有數了,就填在i的下方 include includeusing namespace std int a 50 50 int nx,ny,n int main else elseelse a tx ty i ...

NOIP 2015提高組 題解 分析

這一次的提高組出的題挺喪心病狂的,似乎比普及組還要容易看出演算法,隨便就400 我在洛谷上測得好像是500多。真不知ccf在想什麼?算了不說那麼多了,直接上分析 以下的題目中d1a表示第一天第一題,d2b表示第二天第三題,以此類推 題目演算法簡單分析 d1a 簡單模擬 d1b 直接掃一遍找最小環,或...