CSP2019
$CSP\space S$
格雷码
$solution:$
直接模拟即可。
时间复杂度 $O(n)$ 。
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- void solve(unsigned long long N,unsigned long long K){
- if(N==) return;
- unsigned long long p=(1ull<<(N-1ull));
- if(p>=K){printf("");solve(N-,K);return;}
- printf("");solve(N-,2ull*p-K+1ull);return;
- }
- unsigned long long n,k;
- signed main(){
- cin>>n>>k;
- if(n==64ull&&k==18446744073709551615ull){
- printf("");
- for(int i=;i<=;i++) printf("");printf("\n");
- return ;
- }
- k++;
- solve(n,k);printf("\n");return ;
- }
括号树
$solution:$
考虑从 $1$ 号点到 $u$ 号点的括号序列中有多少个后缀是括号序列的,这个可以通过栈做简单的 $dp$ 得到。
时间复杂度 $O(n)$ 。
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- #include<vector>
- #define int long long
- using namespace std;
- inline int read(){
- int f=,ans=;char c=getchar();
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
- return f*ans;
- }
- const int MAXN=;
- int fa[MAXN],N;
- vector<int> vec[MAXN];
- char str[MAXN];int sta[MAXN],top,f[MAXN],A;
- void dfs(int u,int Ans){
- int del=;bool ins=;
- if(str[u]=='(') ins=,sta[++top]=u;
- else if(str[u]==')'&&top){int i=sta[top];del=i;f[u]=f[fa[i]]+;top--;Ans+=f[u];}
- A^=(u*Ans);for(int i=;i<vec[u].size();i++) dfs(vec[u][i],Ans);
- if(del) sta[++top]=del;if(ins) top--;
- return;
- }
- signed main(){
- N=read();scanf("%s",str+);
- for(int i=;i<=N;i++) vec[(fa[i]=read())].push_back(i);
- dfs(,);
- printf("%lld\n",A);return ;
- }/*
- 5
- )()()
- 1 1 2 1
- */
Emiya 家今天的饭
$solution:$
考虑 $O(n^3m)$ $dp$ 的优化,因为此 $dp$ 的状态 $f_{i,j,k,p}$ 表示当前考虑第 $i$ 列的容斥,其中在前 $j$ 行中选择 $k$ 个为第 $i$ 列,$p$ 个不为第 $i$ 列,因为状态数位 $O(n^3m)$ 转移 $O(1) $ ,所以总时间复杂度为 $O(n^3m)$ 。
而我们发现若 $k-p\geq 0$ 即可以在容斥时减去,所以设 $g_{i,j,k}$ 表示当前考虑第 $i$ 列的容斥,其中在前 $j$ 行选择第 $i$ 列的减去选择但没有选择第 $i$ 列的等于 $k$ 个,因为转移 $O(1)$ 所以时间为 $O(n^2m)$ 。
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- #define mod 998244353
- #define int long long
- using namespace std;
- inline int read(){
- int f=,ans=;char c=getchar();
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
- return f*ans;
- }
- const int MAXN=;
- const int MAXM=;
- int N,M,f[MAXN][MAXN],g[MAXN][MAXN<<],S[MAXN],A[MAXN][MAXM],Ans;
- int Mod(int x){return ((x%mod)+mod)%mod;}
- signed main(){
- N=read(),M=read();
- for(int i=;i<=N;i++){
- for(int j=;j<=M;j++) S[i]+=(A[i][j]=read()),S[i]%=mod;
- }
- f[][]=;
- for(int i=;i<=N;i++){
- for(int j=;j<=N;j++){
- f[i][j]=f[i-][j];
- if(j) f[i][j]+=f[i-][j-]*S[i];f[i][j]%=mod;
- if(i==N&&j) Ans+=f[i][j],Ans%=mod;
- }
- }
- for(int i=;i<=M;i++){
- memset(g,,sizeof(g));
- g[][N]=;
- for(int j=;j<=N;j++){
- for(int k=;k<=*N;k++){
- g[j][k]=g[j-][k]+g[j-][k+]*Mod(S[j]-A[j][i]);
- if(k) g[j][k]+=g[j-][k-]*A[j][i];
- g[j][k]%=mod;
- }
- }
- for(int j=;j<=N;j++) Ans-=g[N][N+j],Ans=Mod(Ans);
- }printf("%lld\n",Ans);return ;
- }
划分
$solution:$
考虑 $O(n^3)$ 的暴力 $dp$ ,设 $f_{i,j}$ 表示最后一段为 $[i,j]$ 的最小代价,通过打表可以发现 $f_{i,j}\leq f_{i,j-1}$ 。
所以说问题就转换成了求 $f$ 有解的最大右端点,只维护 $f$ 中的转移点即可,不需要管 $f$ 的具体值,在最后计算答案即可。
设 $F_i$ 表示 $f_{i}$ 的最右转移点,即 $(F_i,i]$ 为若 $f$ 值最小区间,则 $F_i=max\{j\}\space(S_i-S_j\geq S_j-S_{F_j})$ ,即 $S_i\geq 2\times S_j-S_{F_j}$ 。
直接单调队列优化即可,而最后可以用 $int128$ 或手写高精度。时间复杂度 $O(n)$ 。
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- #define LL long long
- using namespace std;
- inline int read(){
- int f=,ans=;char c=getchar();
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
- return f*ans;
- }
- const int MAXN=;
- int N,A[MAXN],opt,B[MAXN],P[MAXN],L[MAXN],R[MAXN],u;
- void Maker(){
- if(!opt){for(int i=;i<=N;i++) A[i]=read();return;}
- int pw=;for(int i=;i<=;i++) pw*=;
- int x=read(),y=read(),z=read();B[]=read(),B[]=read();int m=read();
- for(int i=;i<=N;i++) B[i]=(LL)((LL)x*B[i-]+(LL)y*B[i-]+(LL)z)%pw;
- for(int i=;i<=m;i++) P[i]=read(),L[i]=read(),R[i]=read();
- int ps=;
- for(int i=;i<=N;i++){
- if(!(P[ps-]<i&&i<=P[ps])) ps++;
- A[i]=B[i]%(R[ps]-L[ps]+)+L[ps];
- }return;
- }
- int f[MAXN],head=,tail=,Que[MAXN];
- LL S[MAXN];
- LL calc(int id){return 2ll*S[id]-S[f[id]];}
- void write(__int128 u){if(!u) return;write(u/);putchar((u%)+'');return;}
- int main(){
- N=read();opt=read();Maker();
- for(int i=;i<=N;i++) S[i]=S[i-]+(LL)A[i];
- for(int i=;i<=N;i++){
- while(head<tail&&calc(Que[head+])<=S[i]) head++;f[i]=Que[head];
- while(head<tail&&calc(Que[tail])>=calc(i)) tail--;Que[++tail]=i;
- }
- __int128 Ans=;u=N;
- while(u){
- Ans+=(__int128)(S[u]-S[f[u]])*(__int128)(S[u]-S[f[u]]);
- u=f[u];
- }
- write(Ans);printf("\n");
- return ;
- }
树的重心
$solution:$
考虑 $u$ 号点的贡献,设 $f_u$ 表示以 $u$ 为根子树下子树最大的。
考虑如何再删掉 $(x,fa_x)$ 这条边时重心为 $u$ 。
若 $x$ 为 $u$ 的祖先,则
$$
\begin{equation}
\left\{
\begin{array}{**lr**}
f_u\leq \lfloor\dfrac{siz_x}{2}\rfloor\\
siz_x-siz_u\leq \lfloor\dfrac{siz_x}{2}\rfloor
\end{array}
\right.
\end{equation}
$$
即 $2\cdot f_u\leq siz_x\leq 2\cdot siz_u$ 。
若 $x$ 在 $u$ 的子树下,可得 $2\cdot siz_v-N\leq siz_x\leq \min\{N-2\cdot f_u,2\cdot siz_u-N\}$ 。而 $f_u$ 表示除了 $v$ 以外最大子树。
其余情况则 $N-2\cdot siz_u\leq siz_x\leq N-2\cdot f_u$ 。
对于祖先情况可以直接在 $dfs$ 遍历是用树状数组维护,子树可以 $dfs$ 序后树状数组维护,其余情况可以通过整体减去祖先与子树得到。
时间复杂度 $O(n\log n)$ 。
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- #include<vector>
- #define LL long long
- using namespace std;
- inline int read(){
- int f=,ans=;char c=getchar();
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
- return f*ans;
- }
- const int MAXN=;
- struct node{
- int u,v,nex;
- }x[MAXN<<];
- int T,N,head[MAXN],cnt,dfn[MAXN],rev[MAXN],tot,fa[MAXN],f1[MAXN],f2[MAXN],siz[MAXN];
- inline void add(int u,int v){
- x[cnt].u=u,x[cnt].v=v,x[cnt].nex=head[u],head[u]=cnt++;
- }
- inline void dfs(int u,int fath){
- siz[u]=;fa[u]=fath;dfn[u]=++tot,rev[tot]=u;
- for(register int i=head[u];i!=-;i=x[i].nex){
- if(x[i].v==fath) continue;
- dfs(x[i].v,u);
- siz[u]+=siz[x[i].v];int res=siz[x[i].v];
- if(res>=f1[u]) f2[u]=f1[u],f1[u]=res;
- else if(res>=f2[u]) f2[u]=res;
- }return;
- }
- int Num[][MAXN];
- struct BIT{
- int Ans[MAXN];
- void clear(){memset(Ans,,sizeof(Ans));}
- int lowbit(int x){return x&-x;}
- void Modify(int x,int w){for(;x<=N;x+=lowbit(x)) Ans[x]+=w;return;}
- int Query(int x){if(x==-) return ;int res=;for(;x;x-=lowbit(x)) res+=Ans[x];return res;}
- void ins(int x,int w){Modify(x,w);return;}
- int Que(int l,int r){if(l>r) return ;return Query(r)-Query(l-);}
- }bit;
- struct Node{
- int opt1,opt2,l,r,U;
- };
- vector<Node> vec[MAXN];
- inline void dfs1(int u,int fath){
- if(u!=) bit.ins(siz[u],);
- for(register int i=;i<vec[u].size();++i){
- Num[vec[u][i].opt1][u]+=vec[u][i].opt2*bit.Que(vec[u][i].l,vec[u][i].r);
- if(vec[u][i].opt1==){
- int L=vec[u][i].l,R=vec[u][i].r;
- Num[vec[u][i].opt1][u]+=vec[u][i].opt2*((L<=siz[])&&(siz[]<=R));
- }
- }
- for(register int i=head[u];i!=-;i=x[i].nex){
- if(x[i].v==fath) continue;
- dfs1(x[i].v,u);
- }
- if(u!=) bit.ins(siz[u],-);
- return;
- }
- signed main(){
- T=read();
- while(T--){
- tot=;cnt=;
- memset(Num,,sizeof(Num));
- memset(head,-,sizeof(head));memset(f1,,sizeof(f1));memset(f2,,sizeof(f2));
- N=read();
- for(register int i=;i<N;++i){int u=read(),v=read();add(u,v),add(v,u);}dfs(,);
- for(register int i=;i<=N;++i) vec[i].clear();bit.clear();
- for(register int i=;i<=N;++i){
- Node e;e.opt1=,e.opt2=,e.l=*f1[i],e.r=*siz[i];
- e.l=max(e.l,),e.r=min(e.r,N);
- vec[i].push_back(e);
- int L=N-*siz[i],R=N-*f1[i];L=max(L,),R=min(R,N);
- e.opt1=,e.opt2=-,e.l=L,e.r=R;
- vec[i].push_back(e);
- }dfs1(,);
- bit.clear();for(int i=;i<=N;i++) vec[i].clear();
- for(register int xx=;xx<=N;++xx){
- for(register int i=head[xx];i!=-;i=x[i].nex){
- if(x[i].v==fa[xx]) continue;
- Node e;int EE=;
- if(f1[xx]==siz[x[i].v]) EE=f2[xx];
- else EE=f1[xx];
- e.opt1=,e.opt2=,e.l=*siz[x[i].v]-N,e.r=min(N-*EE,*siz[xx]-N);e.l=max(e.l,),e.r=min(e.r,N);e.U=xx;
- vec[dfn[x[i].v]+siz[x[i].v]-].push_back(e);
- e.opt2=-;
- vec[dfn[x[i].v]-].push_back(e);
- }
- int L=N-*siz[xx],R=N-*f1[xx];L=max(L,),R=min(R,N);
- Node e;e.opt1=,e.opt2=-,e.l=L,e.r=R;e.U=xx;
- vec[dfn[xx]+siz[xx]-].push_back(e);
- e.opt2=;vec[dfn[xx]].push_back(e);
- }
- for(register int i=;i<=N;++i){
- bit.ins(siz[rev[i]],);
- for(register int j=;j<vec[i].size();++j){
- Node e;e=vec[i][j];
- Num[e.opt1][e.U]+=e.opt2*bit.Que(e.l,e.r);
- }
- }
- for(register int i=;i<=N;++i){int L=N-*siz[i],R=N-*f1[i];L=max(L,),R=min(R,N);Num[][i]+=bit.Que(L,R);}
- LL Ans=;
- for(register int i=;i<=N;++i) Ans+=(LL)i*(LL)(Num[][i]+Num[][i]+Num[][i]);
- printf("%lld\n",Ans);
- }
- }
$CSP\space J$
数字游戏
$solution:$
直接模拟。时间复杂度 $O(1)$ 。
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- inline int read(){
- int f=,ans=;char c=getchar();
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
- return f*ans;
- }
- const int MAXN=;
- char str[MAXN];
- int main(){
- // freopen("number.in","r",stdin);
- // freopen("number.out","w",stdout);
- scanf("%s",str+);int len=strlen(str+),Ans=;
- for(int i=;i<=len;i++) Ans+=(str[i]=='');
- printf("%d\n",Ans);return ;
- }
公交换乘
$solution:$
线段树二分模板题。时间复杂度 $O(n\log n)$ 。
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- #define int long long
- using namespace std;
- inline int read(){
- int f=,ans=;char c=getchar();
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
- return f*ans;
- }
- const int MAXN=;
- struct node{
- int w,t;
- }g[MAXN];
- int N,tot,Ans;
- struct Segment_Tree{
- int Maxn[MAXN<<];
- void Modify(int k,int l,int r,int x,int y,int w){
- if(x<=l&&r<=y) {Maxn[k]=w;return;}
- int mid=l+r>>;
- if(x<=mid) Modify(k<<,l,mid,x,y,w);
- if(mid<y) Modify(k<<|,mid+,r,x,y,w);
- Maxn[k]=max(Maxn[k<<],Maxn[k<<|]);
- }
- int Qpos(int k,int l,int r,int w){
- if(l==r) return l;
- int mid=l+r>>;
- if(Maxn[k<<]>=w) return Qpos(k<<,l,mid,w);
- if(Maxn[k<<|]>=w) return Qpos(k<<|,mid+,r,w);
- return -;
- }
- }Segment;
- signed main(){
- // freopen("transfer.in","r",stdin);
- // freopen("transfer.out","w",stdout);
- N=read();int l=;
- for(int i=;i<=N;i++){
- int opt=read(),w=read(),t=read();
- if(opt==){g[++tot].w=w,g[tot].t=t;Segment.Modify(,,N,tot,tot,w);Ans+=w;continue;}
- while(l<=tot&&t-g[l].t>){Segment.Modify(,,N,l,l,);l++;}
- int u=Segment.Qpos(,,N,w);
- if(u==-) {Ans+=w;;continue;}
- Segment.Modify(,,N,u,u,);continue;
- // printf("i:%d l:%d\n",i,l);
- }printf("%lld\n",Ans);return ;
- }
纪念品
若 $i$ 天买进 $j$ 天卖出可以看成 $i$ 天买 ,$i+1$ 天卖后再买。做 $T-1$ 次完全背包即可。时间复杂度 $O(10^4\cdot T\cdot N)$
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- inline int read(){
- int f=,ans=;char c=getchar();
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
- return f*ans;
- }
- const int MAXA=;
- const int MAXN=;
- int T,N,M,f[MAXA],A[MAXN][MAXN],Maxn;
- int main(){
- // freopen("4.in","r",stdin);
- T=read(),N=read(),M=read();
- if(T==){printf("%d\n",M);return ;}
- for(int i=;i<=T;i++)
- for(int j=;j<=N;j++) A[i][j]=read();Maxn=M;
- for(int i=;i<T;i++){
- memset(f,,sizeof(f));
- for(int j=;j<=Maxn;j++) f[j]=j;
- for(int j=;j<=Maxn;j++)
- for(int k=;k<=N;k++) if(j>=A[i][k]){
- f[j]=max(f[j],f[j-A[i][k]]+A[i+][k]);
- }
- for(int j=;j<=Maxn;j++) Maxn=max(Maxn,f[j]);
- }printf("%d\n",Maxn);return ;
- }/*
- 6 1 100
- 50
- 20
- 25
- 20
- 25
- 50
- */
加工零件
分奇偶跑最短路即可,时间复杂度 $O(n+m+q)$ 。
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- #include<queue>
- #define int long long
- using namespace std;
- inline int read(){
- int f=,ans=;char c=getchar();
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
- return f*ans;
- }
- const int MAXN=;
- struct node{
- int u,v,w,nex;
- }x[MAXN<<];
- int head[MAXN],cnt,f[MAXN][];
- void add(int u,int v,int w){
- x[cnt].u=u,x[cnt].v=v,x[cnt].w=w,x[cnt].nex=head[u],head[u]=cnt++;
- }
- int n,m,vis[MAXN][],q,siz[MAXN];
- priority_queue<pair<int,pair<int,int> > > Que;
- void dijkstra(){
- memset(f,/,sizeof(f));f[][]=;Que.push(make_pair(,make_pair(,)));
- while(!Que.empty()){
- int u=Que.top().second.first,opt=Que.top().second.second;Que.pop();if(vis[u][opt]) continue;
- vis[u][opt]=;
- for(int i=head[u];i!=-;i=x[i].nex){
- int W=f[u][opt]+x[i].w;
- if(f[x[i].v][W&]>W){
- f[x[i].v][W&]=W;Que.push(make_pair(-f[x[i].v][W&],make_pair(x[i].v,W&)));
- }
- }
- }
- }
- signed main(){
- // freopen("work.in","r",stdin);
- // freopen("work.out","w",stdout);
- memset(head,-,sizeof(head));
- n=read(),m=read(),q=read();
- for(int i=;i<=m;i++){
- int u=read(),v=read();
- add(u,v,),add(v,u,);siz[u]++,siz[v]++;
- }
- dijkstra();
- while(q--){
- int u=read(),L=read();
- if(u==&&siz[]==){printf("No\n");continue;}
- if(f[u][L&]<=L){printf("Yes\n");continue;}
- printf("No\n");continue;
- }
- }/*
- 10 6 5
- 4 7
- 2 4
- 4 5
- 3 2
- 5 7
- 8 6
- 3 1
- 8 2
- 4 1
- 5 1
- 1 4
- */
CSP2019的更多相关文章
- CSP2019,RP+=150。
csp2019游记 第一题水死了,2分钟过! 第二题被卡住了,才得了30分. 第三题背包DP,可惜了,出了考场才知道... 第四题骗到20分,也算心满意足了.. 150,省二左右,辣鸡... 反正就是 ...
- 史上最全的CSP2019复习指南
CSP2019复习指南 知识点(大纲)内容参考于本人博客: 近22年NOIP考点一览 算法 基本算法: 模拟.暴力枚举.排序.贪心.递归.递推.贪心.二分.位运算 这些算法不再在此加以赘述,如有考前还 ...
- CSP2019 S2滚粗记
最好分数:100+20+10+64+64+55 最坏分数:100+20+10+64+36+55 咕咕数据分数:100+25+10+64+60+55 CCF官方: 100+35+10+64+36+55= ...
- 【杂文】CSP2019蒟蒻AFO(假)记
[杂文]CSP2019蒟蒻AFO(假)记 [初赛前 N 天] 时间:2019-10-15 今晚 \(2012\) 的初赛题做到心态爆炸,选择考计算机基础知识一脸懵逼,填空和后面一道大模拟直接跳过,最后 ...
- CSP2019滚粗记
CSP2019滚粗记 从不拖更 Day -inf 考完月考才停课\kel,然后月考又被吊打了. Day -1 和左边的\({\text L}\color{red} {\text{ongge}}\)右边 ...
- CSP2019题解
CSP2019题解 格雷码 按照生成的规则模拟一下即可. 代码 括号树 看到括号匹配首先想到用栈,然后又在树上就可以想到可追溯化栈. 令\(a_i=1\)表示\(i\)号节点上的括号为(,否则为), ...
- 【CSP2019】树上的数
[CSP2019]树上的数 题面 洛谷 题解 我们设每个点上的编号分别为\(a_1,a_2...a_n\). 10pts ... 菊花 假设现在菊花中心编号是\(rt\),设你依次拆边\((p_1,r ...
- CSP2019蒸馏记
Day -\(\infty\) ~ Day -2 认真准备联赛. Day -1 复习模板,全真模拟比赛平衡树 下午进行了湖南大学 2 小时游. Day 0 上午睡过头了 下午日常训练,并没有什么开放日 ...
- NOIP(划掉)CSP2019一轮知识点
今年似乎变动很大呢…… 去年总结的 历年真题 以下标题中打*的是我认为的重点内容 *一.关于计算机 (一)计算机组成 计算机的工作原理跟人的大脑很相似,而且还是大脑功能的延伸,所以习惯上叫它电脑. 硬 ...
- CSP2019懵逼记
CSP2019 考场二日游 CJ 旅游团 本来我是准备咕掉的, 但是被强 ♂ 烈要求更博了 Day -INF ~ Day -1 专题巩固和联考 前面半个月疯狂爆炸 后面半个月状态恢复了, 考得还行 联 ...
随机推荐
- 使用Swagger自动生成文档
1.maven依赖 maven仓库(https://mvnrepository.com/)搜索springfox <!-- https://mvnrepository.com/artifact/ ...
- Linux培训教程 linux下修改用户权限的方法
一般我们日常碰到要修改用户权限的,往往是要么修改一下用户的gorupid,通过上面命令可以改;要么是把普通用户改成具有超级权限的用户,这个一般自己不能直接改,只能是root或有root权限的用户才能帮 ...
- 【BZOJ4195】 [Noi2015]程序自动分析
Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或x ...
- scrapy项目4:爬取当当网中机器学习的数据及价格(CrawlSpider类)
scrapy项目3中已经对网页规律作出解析,这里用crawlspider类对其内容进行爬取: 项目结构与项目3中相同如下图,唯一不同的为book.py文件 crawlspider类的爬虫文件book的 ...
- Linux基本命令使用(一)
1.head -n 文件 可以查看文件前n行 tail -n 文件 可以查看文件的后n行 tail -f 文件 可以实时查看文件,比如日志在更新,就可以实时显示最后几行 ...
- [BZOJ4456][ZJOI2016]旅行者:分治+最短路
分析 类似于点分治的思想,只统计经过分割线的最短路,然后把地图一分为二. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(regist ...
- vue-router(转)——基本使用 + 路由守卫无限循环问题
路由守卫无限循环问题 https://www.jianshu.com/p/1187f8f74a72 学习目的 学习Vue的必备技能,必须 熟练使用 Vue-router,能够在实际项目中运用. Vue ...
- legend3---3、lavarel页面post请求错误之后跳转
legend3---3.lavarel页面post请求错误之后跳转 一.总结 一句话总结: 控制器:return back()->withInput()->with('error','验证 ...
- excel简单操作
百度网盘(npoi.dll): http://pan.baidu.com/s/14eJRw //先创建一个文件流,指向磁盘上的某个Excel文件 using (FileStream fsRead = ...
- 使用 circleci 自动部署 vuepress 到 github
概述 今天我想把博客什么的搬到 github 的 vuepress 上面.但是每次提交 md 文件需要手动打包然后再提交到 github 的 gh-pages,非常麻烦.所以我去研究了一下用 circ ...