t1:
模擬。。開一排const char
#include#include#include#include#include#include#include#include#includeusing namespace std;
const char n0[5][3] = ;
const char n1[5][3] = ;
const char n2[5][3] = ;
const char n3[5][3] = ;
const char n4[5][3] = ;
const char n5[5][3] = ;
const char n6[5][3] = ;
const char n7[5][3] = ;
const char n8[5][3] = ;
const char n9[5][3] = ;
char ch[200];
int k,s;
void work(int i,int t)
else if (t == 1)
else if (t == 2)
else if (t == 3)
else if (t == 4)
else if (t == 5)
else if (t == 6)
else if (t == 7)
else if (t == 8)
else if (t == 9)
for (int l = 0; l < s; l++) printf(" "); }
int main()
printf("\n");
} else
for (int l = 0; l < k; l++)
printf("\n");
}} return 0;
}
t2:
可以發現,無論這兩個函式按什麼順序復合,始終是2^k*x + 2^k-1的形式,而k <= 30w,列舉一遍取最優即可
#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const ll mo = 1000000007ll;
const int maxn = 1e5 + 10;
ll n,k1[maxn],b1[maxn],k2[maxn],b2[maxn];
int f[maxn*3],bo[maxn*3];
int main()
int ans = ~0u>>1;
ll mi = 2;
for (int i = 2; i <= 300000; i++)
cout << ans;
return 0;
}
t3:
先bfs算出每個人跑向各個洞口所需的時間設為t,把每個洞口拆成t個點,每個人向對應洞口的第t到t個點連邊,最後一遍最大流即可
現場沒寫出來,寫的時候每個人沒有連t+1到t的點
#include#include#include#include#include#include#include#include#includeusing namespace std;
const int maxn = 200;
const int maxm = 3e6 + 30;
const int cx[4] = ;
const int cy[4] = ;
struct p
};struct e
}edgs[maxm*2];
char p[20][20];
int ans,n,m,t,h,d,dis[20][20],ti[maxn][maxn],hx[maxn],hy[maxn],dx[maxn],dy[maxn]
,cur,tot,tail[maxm],dn[maxn][maxn],l[maxm],last[maxm];
bool vis[maxm];
queue q;
void add(int x,int y,int w)
bool bfs()
} return l[tot];
}int dicnic(int x,int a)
} return flow;
}int main()
if (p[i][j] == 'p')
} }tot = h;
for (int i = 1; i <= d; i++)
for (int j = 1; j <= t; j++)
dn[i][j] = ++tot;
++tot;
for (int i = 1; i <= d; i++)
for (int j = 1; j <= t; j++)
add(dn[i][j],tot,1);
for (int i = 1; i <= h; i++)
} for (int j = 1; j <= d; j++)
if (dis[dx[j]][dy[j]] < ~0u>>1)
for (int l = dis[dx[j]][dy[j]]; l <= t; l++)
add(i,dn[j][l],1); }
while (bfs())
cout << ans;
return 0;
}
t4:最小生成樹+lca,模板題
寫的時候存邊的陣列沒乘2。。。為了長樂的老爺機沒有用vector的後果
#include#include#include#include#include#include#include#include#includeusing namespace std;
const int maxn = 3e4 + 10;
struct e
e(int _x = 0,int _y = 0,int _w = 0)
}edgs[maxn*10];
int cur,ans,n,m,f[maxn],fa[maxn][20],cost[maxn][20],
tail[maxn],to[maxn],v[maxn],from[maxn],l[maxn];
int fat(int x)
void add(int x,int y,int w)
void dfs(int x)
for (int i = tail[x]; i; i = from[i])
}void lca(int p,int q)
if (p == q) return;
for (int j = log; j >= 0; j--)
if (fa[p][j] != fa[q][j])
ans = max(ans,cost[q][0]);
ans = max(ans,cost[p][0]);
}int main()
sort(edgs,edgs + m);
for (int i = 0; i < m; i++)
} l[1] = 1; dfs(1);
int t; cin >> t;
while (t--)
return 0;
}
2016長樂夏令營 Day9
t1 帶權並查集。每個約束看做一條x連向y的邊,邊權為x y c 對於乙個x,可能有多個y與他有關係,間接可以算出y與y 的關係,那麼邊權就記為y y 每次加入條件,就看看是否衝突 細節詳見 據說正解是差分約束?苟蒻是真不會。include include includeusing namespac...
夏令營day6總結
早上在lpq神犇題解的啟示下,過了字串t5。然而還剩t7要用trie,那就先滾去刷trie的題咯。剛要敲trie模板的時候lzh來了,給我們講了網路流。lzh今天講的是最大流問題和edmonds karp演算法,感覺速度太快有點懵逼,還跟yhf去問了zzr為什麼要有反向弧。感覺自己有點笨,還是不太理...
2016常州一中夏令營Day2
小 w 學數學 問題描述 為了測試小 w 的數學水平,果果給了小 w n 個點,問他這 n 個點能構成的三角形個數。輸入格式 第一行乙個整數 n,代表點數。接下來 n 行,每行兩個非負整數 x y,表示乙個點的座標。輸出格式 乙個非負整數,即構成三角形個數。輸入輸出樣例 tri.in 5 0 01 ...