現代科學,面廣枝繁,不是一輩子學得了的。惟一的辦法是集中精力,先打破一缺口,建立一塊或幾塊根據地,然後乘勝追擊,逐步擴大研究領域。此法單刀直入,易見成效。我熱愛生活,我是一名快速成長的oier—— 王梓坤
#include
#include
#include
#define program_name "color"
using
namespace
std;
template
inline
void readin(te &res)
const
int maxn = 100000+10000;
const
int maxm = 250000*2+10000;
const
int maxt = 100000+10000;
struct edge
t[maxm];
int t, n, m;
int u, v, num, head[maxn];
int team[maxt], volk[maxn];
inline
void insert(int u, int v)
void solve()
team[1]=1;volk[team[1]]=1;
int front=1,rear=2;
for (; front!=rear; front=front%maxt+1)
for (int i=head[team[front]]; i!=0; i=t[i].next)
if (volk[t[i].v]==-1)
else
if (volk[t[i].v]==volk[team[front]])
printf("yes\n");
} int main()
第一題70,bfs。但以上程式有bug,只for了一遍死的很慘,要多for。
時間複雜度:o(
n)
#include
#include
#include
#define program_name "book"
using
namespace
std;
template
inline
void readin(te &res)
const
int maxn = 5000+100;
const
int maxm = 100000*2+1000;
const
int maxt = 5000+100;
struct edge
t[maxm];
int n, m, st, a[maxn];
int u, v, w, num, head[maxn];
int team[maxt], dis[maxn];
bool vis[maxn];
inline
void insert(int u, int v, int w)
int main()
team[1]=st;dis[team[1]]=0;vis[team[1]]=1;
for (int front=1,rear=2; front!=rear; front=front%maxt+1)
}vis[team[front]]=0;
}int fm=0;
for (int i=1; i<=n; i++) if (fmprintf("%d\n",fm>=dis[n+1]?-1:fm);
return
0;}
第二題ac,spfa,點權+邊權處理。點權加入邊權,另需包擴終點點權。
時間複雜度:o(
ke)
#include
#include
#include
#include
#include
using
namespace
std;
#define program_name "teacher"
using
namespace
std;
template
inline
void readin(te &res)
const
int maxn = 1000+100;
const
int maxw = 1000+100;
const
int maxt = 1000+100;
int n, m, t, w[maxn], b[maxn], fa[maxn], u, v;
int volki=0, volk[maxt], head[maxt], next[maxn], min[maxt], f[maxw];
int find(int x)
inline
void findi(int x)
int main()
for (int i=1; i<=n; i++) if (!volk[i]) findi(i);
for (int i=1; i<=volki; i++)
}printf("%d\n",f[t]);
return
0;}
第三題ac,當時為了分組編了許久。先用並查集分組,再kij動規解決。
時間複雜度:o(
nw)
練習賽是用來練經驗和心態的,一定要淡薄功利,當作是一場修煉。林蔭的人很「恐怖」,但千萬不要妄自菲薄,更不要夜郎自大。現在所學的知識已有很多拓展,一定要跳出問題想問題,深處問題核心去解決問題。葉余非很強,可與之共勉。
#include
#include
#include
#define program_name ""
using
namespace
std;
template
inline
void readin(te &res)
int main()
#include
#include
#include
#define program_name "color"
using
namespace
std;
template
inline
void readin(te &res)
const
int maxn = 100000+10000;
const
int maxm = 250000*2+10000;
const
int maxt = 100000+10000;
struct edge
t[maxm];
int t, n, m;
int u, v, num, head[maxn];
int team[maxt], volk[maxn];
inline
void insert(int u, int v)
void solve()
for (int d=1; d<=n; d++) if (volk[d]==-1)
else
if (volk[t[i].v]==volk[team[front]])
}printf("yes\n");
}int main()
機房練習賽 Dinner
本來看到這道題的第一想法是環形區間dp的,但是模擬完樣例我就恍然大悟,在10的時間內可以同時讓1,5點完餐,那不就是找最大值得最小值嗎?然後就是二分答案了,二分最少時間。然後就是我的玄學check 我在考試的時候是想到了變成二倍鏈在區間上處理的,但我直接o n 處理了每個區間的和不大於x的塊,然後列...
機房練習賽4 3 drive
input file drive.in output file drive.out time limit 2 second 工頭cky 最近開了一家 公司,開始經商。作為cky 的忠實小弟,jyb 當了cky 老總的司機。一天晚上,cky 突然找到了乙個新的客戶,所以第二天一早要急著從成都去上海談生...
機房練習賽4 3 graph
input file graph.in output file graph.out time limit 1 second jyb 給大家講過強連通分量,強連通分量中的任意兩點之間都可以互相到達。這個條件感覺很苛刻,大部分圖 都不能滿足。現在jyb 告訴你乙個新的概念 單向連通圖 如果有向圖中,對於...