【题解】NOIP2015提高组 复赛

传送门:

【Day1】

【T1】

神奇的幻方 \([P2615]\)

【题目描述】

幻方是由 \(1,2,3...n*n\) 共 \(n^2\) 个数组成一个的 \(n*n\) 的矩阵。

当 \(n\) 为奇数时,可按以下方式构造一个幻方:

首先将 \(1\) 写在第一行的中间。

之后,按如下方式从小到大依次填写每个数 \(K(K=2,3,…,n*n)\) :

\((1).\) 若 \(\text{(K-1)}\) 在第一行但不在最后一列,则将 \(K\) 填在最后一行,\(\text{(K-1)}\) 所在列的右一列;

\((2).\) 若 \(\text{(K-1)}\) 在最后一列但不在第一行,则将 \(K\) 填在第一列,\(\text{(K-1)}\) 所在行的上一行;

\((3).\) 若 \(\text{(K-1)}\) 在第一行最后一列,则将 \(K\) 填在 \(\text{(K-1)}\) 的正下方;

\((4).\) 若 \(\text{(K-1)}\) 既不在第一行,也不在最后一列,如果 \(\text{(K-1)}\) 的右上方还未填数,则将 \(K\) 填在\(\text{(K-1)}\)的右上方,否则将 \(K\) 填在 \(\text{(K-1)}\) 的正下方。

现给定 \(n\) \((n \leqslant 39\) 且 \(n\) 为奇数 \()\),请按上述方法构造 \(n*n\) 的幻方。

【分析】

模你送分题。

按照题面说的一个一个地填就好了。

【Code】

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cstdio>
  6. #define Re register int
  7. using namespace std;
  8. const int N=55;
  9. int n,x,y,nx,ny,a[N][N];
  10. inline void in(Re &x){
  11. int f=0;x=0;char c=getchar();
  12. while(c<'0'||c>'9')f|=c=='-',c=getchar();
  13. while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
  14. x=f?-x:x;
  15. }
  16. int main(){
  17. // freopen("magic.in","r",stdin);
  18. // freopen("magic.out","w",stdout);
  19. in(n);
  20. a[x=1][y=n/2+1]=1;
  21. for(Re i=2;i<=n*n;++i){
  22. if(x==1&&y<n)nx=n,ny=y+1;
  23. else if(y==n&&x>1)nx=x-1,ny=1;
  24. else if(x==1&&y==n)nx=x+1,ny=y;
  25. else if(x>1&&y<n){
  26. if(!a[x-1][y+1])nx=x-1,ny=y+1;
  27. else nx=x+1,ny=y;
  28. }
  29. a[x=nx][y=ny]=i;
  30. }
  31. for(Re i=1;i<=n;puts(""),++i)
  32. for(Re j=1;j<=n;++j)
  33. printf("%d ",a[i][j]);
  34. fclose(stdin);
  35. fclose(stdout);
  36. return 0;
  37. }

【T2】

信息传递 \([P2661]\)

【题目描述】

有 \(n\) \((n \leqslant 200000)\) 个同学(编号为 \(1\) 到 \(n\))。

游戏开始时,每人都只知道自己的信息,之后的每一轮,\(i\) 会将自己所知的所有信息都传递给 \(T_i\) \((T_i\) \(\text{!=}\) \(i)\),当有人从别人口中得知自己的信息时,游戏结束。问该游戏可以进行几轮?。

【分析】

每个点都只会有一条出边,很明显是一个内向基环树森林,只要找到长度最小的环即可。

找法可以是并查集,也可以用 \(tarjan\) 。

【Code】

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cstdio>
  6. #define Re register int
  7. using namespace std;
  8. const int N=2e5+3;
  9. int n,ans,Q_o,a[N],ip[N],gs[N];
  10. inline void in(Re &x){
  11. int f=0;x=0;char c=getchar();
  12. while(c<'0'||c>'9')f|=c=='-',c=getchar();
  13. while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
  14. x=f?-x:x;
  15. }
  16. struct Tarjan{//用Tarjan跑强连通模板
  17. int h,t,dfn_o,Q[N],pan[N],low[N],dfn[N];
  18. inline void tarjan(Re x){
  19. dfn[x]=low[x]=++dfn_o,Q[++t]=x,pan[x]=1;
  20. Re to=a[x];
  21. if(!dfn[to])tarjan(to),low[x]=min(low[x],low[to]);
  22. else if(pan[to])low[x]=min(low[x],dfn[to]);
  23. if(low[x]==dfn[x]){
  24. ++Q_o;
  25. while(1){
  26. ip[Q[t]]=Q_o,++gs[Q_o],pan[x]=1;
  27. if(x==Q[t--])break;
  28. }
  29. }
  30. }
  31. inline void SuoPoint(){
  32. for(Re i=1;i<=n;++i)if(!dfn[i])tarjan(i);
  33. }
  34. }T1;
  35. int main(){
  36. // freopen("message.in","r",stdin);
  37. // freopen("message.out","w",stdout);
  38. in(n),ans=n;
  39. for(Re i=1;i<=n;++i)in(a[i]);
  40. T1.SuoPoint();
  41. for(Re i=1;i<=Q_o;++i)if(gs[i]>1)ans=min(ans,gs[i]);
  42. //只有长度大于1的强连通分量才是环
  43. printf("%d\n",ans);
  44. fclose(stdin);
  45. fclose(stdout);
  46. return 0;
  47. }

【T3】

斗地主 \([P2668]\)

【题目描述】

模拟斗地主。

有 \(T\) \((T \leqslant 100)\) 组数据,每组数据给出 \(n\) \((n \leqslant 23)\) 张手牌,可以按给定的 \(11\) 种牌型出牌,求出完所有牌所需的最小出牌次数。

【分析】

一天考两道模拟?真够神奇的。

由于数据较小,可以直接暴搜,但只是单纯的搜索可能会炸,需要一些技巧来进行优化。

\((1).\) 先抛开有顺子的情况,对于三张,四张(炸弹)的牌,一定会一起打出去,因为把它们拆开只会消耗更多的次数,而带不带牌并不影响它们在一起这一事实,所以凡是发现有 \(3\) 张或 \(4\) 张的,直接统计一下它的张数。关于带牌的问题,三张的话,直接带一个单牌双牌,而四张要优先带两张单牌双牌,如果带不了就带一个双牌(题意不明确,不知道到底能不能带一个双牌)。

\((2).\) 仍然是先抛开有顺子的情况,在处理了三张和四张得情况后,剩下的全是单牌和双牌,只需要统计一下张数就可以了。

\((3).\) 现在只剩下有顺子的情况,可以直接暴力枚举搜索了。

然后就是处理的小技巧,从学长那儿学了一些,最后写出来后发现代码并不长。

写完后突然发现有一个漏洞,如果只有三个不连续的三张,那么可以将其中拆成两半,而上述贪心并没有涵盖这一情况。但是由于数据随机生成,所以随便水一水就可以了。

【Code】

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cstdio>
  6. #define Re register int
  7. using namespace std;
  8. int n,x,y,T,ans,gs[20];
  9. inline void in(Re &x){
  10. int f=0;x=0;char c=getchar();
  11. while(c<'0'||c>'9')f|=c=='-',c=getchar();
  12. while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
  13. x=f?-x:x;
  14. }
  15. inline void dfs(Re g){
  16. Re p4=0,p3=0,p2=0,p1=0;
  17. for(Re i=1;i<=14;++i){//扫描3~king (1~14)
  18. if(gs[i]==1)++p1;//单牌
  19. if(gs[i]==2)++p2;//双牌
  20. }
  21. for(Re i=1;i<=14;++i)//扫描3~king
  22. if(gs[i]==4){//4牌
  23. ++p4;//不管带不带.这个四牌肯定要出
  24. if(p1>=2){p1-=2;continue;}//带两个单牌
  25. if(p2>=2){p2-=2;continue;}//带两个双牌
  26. if(p2>=1){p2-=1;continue;}//带一个双牌(两个一样的单牌)
  27. //一个四牌(炸弹)
  28. }
  29. for(Re i=1;i<=14;++i)//扫描3~king (1~14)
  30. if(gs[i]==3){//3牌
  31. ++p3;//不管带不带,这个三牌肯定要出
  32. if(p1>=1){p1-=1;continue;}//带一个单牌
  33. if(p2>=1){p2-=1;continue;}//带一个双牌
  34. //一个三牌
  35. }
  36. ans=min(ans,g+p1+p2+p3+p4);//没有顺子的最小答案
  37. for(Re i=1,j;i<=8;++i){//单顺子,最大为(10~A)8~12
  38. for(j=i;j<=12;++j){
  39. gs[j]-=1;//反正最后要回溯,先减了再说
  40. if(gs[j]<0)break;//无法继续连下去了,退出
  41. if(j-i+1>=5)dfs(g+1);//单顺子长度至少为5
  42. }
  43. if(j==13)--j;//如果全部连完了,2(13)是不用回溯的
  44. while(j>=i)gs[j]+=1,--j;//最后放在一起回溯
  45. }
  46. for(Re i=1,j;i<=10;++i){//双顺子,最大为Q~A(10~12)
  47. for(j=i;j<=12;++j){
  48. gs[j]-=2;
  49. if(gs[j]<0)break;
  50. if(j-i+1>=3)dfs(g+1);//双顺子长度至少为3
  51. }
  52. if(j==13)--j;
  53. while(j>=i)gs[j]+=2,--j;
  54. }
  55. for(Re i=1,j;i<=11;++i){//三顺子,最大为Q~A(10~12)
  56. for(j=i;j<=12;++j){
  57. gs[j]-=3;
  58. if(gs[j]<0)break;
  59. if(j-i+1>=2)dfs(g+1);//三顺子长度至少为2
  60. }
  61. if(j==13)--j;
  62. while(j>=i)gs[j]+=3,--j;
  63. }
  64. }
  65. int main(){
  66. // freopen("landlords.in","r",stdin);
  67. // freopen("landlords.out","w",stdout);
  68. in(T),in(n);
  69. while(T--){
  70. memset(gs,0,sizeof(gs));
  71. for(Re i=1;i<=n;++i){
  72. in(x),in(y);
  73. if(x==0)++gs[14];//14: 大王
  74. if(x==2)++gs[13];//13: 2
  75. if(x==1)++gs[12];//12: A
  76. if(x>=3)++gs[x-2];//x-2: x
  77. // J: 11-2=9
  78. // Q: 12-2=10
  79. // K: 13-2=11
  80. }
  81. ans=2e9,dfs(0);
  82. printf("%d\n",ans);
  83. }
  84. fclose(stdin);
  85. fclose(stdout);
  86. return 0;
  87. }

【Day2】

【T1】

跳石头 \([P2678]\)

【题目描述】

给出终点坐标 \(L\) 与 \(n\) \((0 \leqslant n \leqslant 50000)\) 个石头的坐标(起点坐标为 \(0\)),可以删掉至多 \(m\) \((0 \leqslant m \leqslant 50000)\) 个石头,求每两个相邻石头距离的最小值最大可以为多少。

【分析】

最小值最大,很明显的二分标志。

\(check\) 函数就从 \(1\) 到 \(n\) 扫一遍,只要有石头与前一个的距离大于 \(mid\),那么 \(cnt++\),表示必须要多移走一个石头,如果 \(cnt<=m\) 那么扩大下界,否则缩小上界。

坑点:从起点 \(0\) 开跳,并且最后还要跳到终点 \(L\),这两次跳跃的距离都应在 \(check\) 中扫描到。

【Code】

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cstdio>
  6. #define Re register int
  7. using namespace std;
  8. const int N=5e4+3;
  9. int n,m,L,a[N],b[N];
  10. inline void in(Re &x){
  11. int f=0;x=0;char c=getchar();
  12. while(c<'0'||c>'9')f|=c=='-',c=getchar();
  13. while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
  14. x=f?-x:x;
  15. }
  16. inline int check(Re mid){
  17. for(Re i=1;i<=n;++i)b[i]=a[i];
  18. Re tmp=m;
  19. for(Re i=1;i<=n;++i)
  20. if(b[i]-b[i-1]<mid){
  21. if(tmp)--tmp,b[i]=b[i-1];
  22. else return 0;
  23. }
  24. return 1;
  25. }
  26. int main(){
  27. // freopen("stone.in","r",stdin);
  28. // freopen("stone.out","w",stdout);
  29. in(L),in(n),in(m);
  30. for(Re i=1;i<=n;++i)in(a[i]);
  31. a[++n]=L;
  32. Re l=0,r=L;
  33. while(l<r){
  34. Re mid=l+r+1>>1;
  35. if(check(mid))l=mid;
  36. else r=mid-1;
  37. }
  38. printf("%d\n",l);
  39. fclose(stdin);
  40. fclose(stdout);
  41. return 0;
  42. }

【T2】

子串 \([P2679]\)

【题目描述】

给出两个长度分别为 \(n,m\) \((1 \leqslant n \leqslant 1000,0 \leqslant m \leqslant 200)\) 的字符串 \(A,B\),现要从 \(A\) 中依次取出 \(K\) \((1 \leqslant K \leqslant m)\) 个互不重叠的非空子串,使其组合起来刚好为 \(B\) 。求合法方案数。

【分析】

首先可以想到一个 \(n^2mK\) 的暴力 \(dp\),大约有 \(30\) ~ \(50\) 分。

用 \(dp[p][i][j]\) 表示 \(A,B\) 分别处理到 \(i,j\) 位置,已经选出了 \(p\) 个子串的方案数,那么转移方程为:

\(dp[p][i][j]=\begin{cases}0(a[i]\ !=a[j])\\dp[p][i-1][j-1]+\sum_{k=0}^{i} dp[p-1][k][j] (a[i]==a[j])\end{cases}\)

注意:只有 \(i\) 不断地在取前面的状态,所以 \(i\) 应该在最外层枚举。

发现求和部分可以用前缀和优化,于是时间复杂度便降到了 \(nmK\) 。

类似背包降维,倒序枚举 \(p,j\) 即可将 \(i\) 这一维去掉。

【Code】

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cstdio>
  6. #define Re register int
  7. using namespace std;
  8. const int N=1003,M=203,P=1e9+7;
  9. int n,m,K,dp[M][M][2];char a[N],b[M];
  10. inline void in(Re &x){
  11. int f=0;x=0;char c=getchar();
  12. while(c<'0'||c>'9')f|=c=='-',c=getchar();
  13. while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
  14. x=f?-x:x;
  15. }
  16. int main(){
  17. // freopen("substring.in","r",stdin);
  18. // freopen("substring.out","w",stdout);
  19. in(n),in(m),in(K);
  20. scanf("%s%s",a+1,b+1);
  21. dp[0][0][0]=1;
  22. for(Re i=1;i<=n;++i){
  23. for(Re j=m;j>=1;--j)
  24. if(a[i]==b[j]){
  25. for(Re p=min(K,j);p>=1;--p){
  26. (dp[p][j][1]=(dp[p][j-1][1]+dp[p-1][j-1][0])%P)%=P;
  27. (dp[p][j][0]+=dp[p][j][1])%=P;//偷了个懒直接用dp[p][j][0]表示1到i的dp[p][j]前缀和
  28. }
  29. }
  30. else for(Re p=min(K,j);p>=1;--p)dp[p][j][1]=0;
  31. }
  32. printf("%d\n",dp[K][m][0]);//注意答案应是1到n的前缀和
  33. fclose(stdin);
  34. fclose(stdout);
  35. return 0;
  36. }

【T3】

运输计划 \([P2680]\)

【题目描述】

给出一颗 \(n\) \((n \leqslant 300000)\) 个节点的带边权树和 \(m\) \((m \leqslant 300000)\) 条简单路径的两个端点,现可选出任意一条边将其边权变为 \(0\),使得 \(m\) 条简单路径中最长的最小,输出这个最小值。

【分析】

最长的最小,又是一个二分。。。。

考如何 \(check\) 函数,现要判断的是:最长的路径是否小于等于 \(mid\) 。

换言之,就是要找出一条边免费通过,使得所有原本长度大于 \(mid\) 的路径都变成小于 \(mid\) 。

假设原本一共有 \(need\) 条路径长度大于 \(mid\),那么选出的这条免费边必须同时被这 \(need\) 条边覆盖,否则就无法减小它们的长度。

于是问题变成了:在被覆盖了 \(need\) 次的各个边中选出一条边,使得这 \(need\) 条不合法路径在减去这个边权之后都尽量小,所以免费边应该选边权最大的那一条。

思路已经有了,那么如何实现呢?

首先跑 \(lca\) 预处理出 \(m\) 条路径的原本长度(按长度排个序)。

二分的初始上界为树上最长链的长度(也可以直接取所有边权和)。

每次 \(check\) 找所有路径两个端点的 \(lca\),然后差分快速处理每个点被覆盖的次数,\(dfs\) 回收差分数组时顺手找出边权最大的边。

时间复杂度为:\(O(logS*(n+m*logn))\),其中 \(S\) 为最长链的长度。

【Code】

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cstdio>
  6. #define Re register int
  7. using namespace std;
  8. const int N=3e5+3,logN=19;
  9. int n,m,o=1,x,y,z,l,r,T,tmp,need,C[N],head[N];
  10. struct QAQ{int w,to,next;}a[N<<1];
  11. struct QWQ{int x,y,dis;inline bool operator<(QWQ O)const{return dis<O.dis;};}A[N];
  12. inline void add(Re x,Re y,Re z){a[++o].w=z,a[o].to=y,a[o].next=head[x],head[x]=o;}
  13. inline void in(Re &x){
  14. int f=0;x=0;char c=getchar();
  15. while(c<'0'||c>'9')f|=c=='-',c=getchar();
  16. while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
  17. x=f?-x:x;
  18. }
  19. struct LCA{
  20. int dis[N],deep[N],anc[N][23];
  21. inline void dfs(Re x,Re fa,Re w){
  22. deep[x]=deep[anc[x][0]=fa]+1,dis[x]=dis[fa]+w;
  23. for(Re i=1;(1<<i)<=deep[x];++i)anc[x][i]=anc[anc[x][i-1]][i-1];
  24. for(Re i=head[x];i;i=a[i].next)if(a[i].to!=fa)dfs(a[i].to,x,a[i].w);
  25. }
  26. inline int lca(Re x,Re y){
  27. if(deep[x]<deep[y])swap(x,y);
  28. for(Re i=logN;i>=0;--i)if(deep[anc[x][i]]>=deep[y])x=anc[x][i];
  29. if(x==y)return x;
  30. for(Re i=logN;i>=0;--i)
  31. if(anc[x][i]!=anc[y][i])x=anc[x][i],y=anc[y][i];
  32. return anc[x][0];
  33. }
  34. }T1;
  35. inline void dfs(Re x,Re fa){
  36. for(Re i=head[x],to;i;i=a[i].next)
  37. if((to=a[i].to)!=fa){
  38. dfs(to,x);
  39. C[x]+=C[to];
  40. if(C[to]==need&&a[i].w>tmp)tmp=a[i].w;
  41. }
  42. }
  43. inline int check(Re mid){
  44. for(Re i=1;i<=n;++i)C[i]=0;
  45. need=0,tmp=-1;
  46. for(Re i=T;i>=1;--i)
  47. if(A[i].dis>mid){
  48. ++C[A[i].x],++C[A[i].y],++need;
  49. C[T1.lca(A[i].x,A[i].y)]-=2;
  50. }
  51. else break;
  52. tmp=-1,dfs(1,0);
  53. for(Re i=1;i<=T;++i)if(A[i].dis-tmp>mid)return 0;
  54. return 1;
  55. }
  56. int main(){
  57. freopen("transport.in","r",stdin);
  58. freopen("transport.out","w",stdout);
  59. in(n),in(T),m=n-1;
  60. while(m--)in(x),in(y),in(z),add(x,y,z),add(y,x,z),r+=z;
  61. for(Re i=1;i<=T;++i)in(A[i].x),in(A[i].y);
  62. T1.dfs(1,0,0);
  63. for(Re i=1;i<=T;++i)A[i].dis=T1.dis[A[i].x]+T1.dis[A[i].y]-(T1.dis[T1.lca(A[i].x,A[i].y)]<<1);
  64. sort(A+1,A+T+1);
  65. while(l<r){
  66. Re mid=l+r>>1;
  67. if(check(mid))r=mid;
  68. else l=mid+1;
  69. }
  70. printf("%d\n",r);
  71. fclose(stdin);
  72. fclose(stdout);
  73. return 0;
  74. }

【题解】NOIP2015提高组 复赛的更多相关文章

  1. 洛谷-神奇的幻方-NOIP2015提高组复赛

    题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,--,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...

  2. 冲刺NOIP2015提高组复赛模拟试题(五)2.道路修建

    2.道路修建 描述 Description liouzhou_101最悲痛的回忆就是NOI2011的道路修建,当时开了系统堆栈,结果无限RE… 出于某种报复心理,就把那题神奇了一下: 在 Z星球上有N ...

  3. NOIP2015提高组复赛B 子串

    题目链接:https://ac.nowcoder.com/acm/contest/263/B 题目大意: 略 分析: 设preA(i)为字符串A中第1个字符到第i个字符构成的字符串. 设preB(i) ...

  4. 冲刺NOIP2015提高组复赛模拟试题(五) 3.破坏基地

    3.破坏基地 描述 Description 在Z国和W国之间一直战火不断. 好不容易,W国的间谍把完整的Z国的军事基地的地图到手了. 于是W国决定再次出击,一举击破Z国的防线. W国认真研究了Z国的地 ...

  5. 冲刺NOIP2015提高组复赛模拟试题(五)1.数学作业

    1. 数学作业 [问题描述] 路人丙的数学老师非常乏力,他喜欢出一些非常乏力的数学题来为难乏力的学生们.这次数学老师布置了一堆的数学题作为作业,而且这些数学题有个共同的特点是都求C(N,M)中不同质因 ...

  6. 【题解】NOIP2016提高组 复赛

    [题解]NOIP2016提高组 复赛 传送门: 玩具谜题 \(\text{[P1563]}\) 天天爱跑步 \(\text{[P1600]}\) 换教室 \(\text{[P1850]}\) 组合数问 ...

  7. [NOIP2015 提高组] 运输计划题解

    题目链接:P2680 [NOIP2015 提高组] 运输计划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 看了好长时间题解才终于懂的,有关lca和二分答案的题解解释的不详细,一时 ...

  8. NOIP 2015提高组复赛

    神奇的幻方 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第 ...

  9. 刷题总结——子串(NOIP2015提高组)

    题目: 题目背景 NOIP2015 提高组 Day2 T2 题目描述 有两个仅包含小写英文字母的字符串 A 和 B .现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在 ...

随机推荐

  1. CentOS用yum安装MySQL 8.0 .

    先说一句,fuck,搞了一下午. 步骤:一:安装yum源: 1.wget https://dev.mysql.com/get/mysql80-community-release-el6-3.noarc ...

  2. win10上安装ubunt18双系统过程中出现mmx64.efi not found问题

    安装Ubuntu18过程中,从u盘启动ubunt安装,出现mmx64.efi not found问题 如下图: 制作好ubunt启动盘之后在EFI/BOOT下会看到两个文件,将其中grubx64.ef ...

  3. MP的自动填充功能

    用来进行自动填充时间. 使用注解@TableTield(fill=FieldFill.insert)插入时进行性填充 使用注解@TableTield(fill=FieldFill.Update)更新时 ...

  4. SHELL脚本和常用命令

    什么是脚本? 脚本简单地说就是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的(如可以用记事本打开查看.编辑). 常见的脚本: JavaScript(JS,前端),VBScript, AS ...

  5. 201871010108-高文利《面向对象程序设计(java)》第四周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ht ...

  6. windows下载的java项目部署到linux的各种解决方案

    1.Java是跨平台的,在linux下有问题,主要一是文件读取权限:二检查下系统环境变量设置可正确!.profile JavaWeb_将Windows平台上开发的JavaWeb项目部署到Linux平台 ...

  7. NOIP 2006 金明的预算方案

    洛谷 P1064 金明的预算方案 https://www.luogu.org/problem/P1064 JDOJ 1420: [NOIP2006]金明的预算方案 T2 https://neooj.c ...

  8. 了解html标签

    <title></title> 1.网页标题 2.当我们收藏网页时,默认标题就是网页标题 3.seo(搜索引擎优化) <h1></h1>~<h6& ...

  9. 关于git设置多个账号的问题,ideal中clone项目

    一.排坑 1.ping github.com超时.修改C:\Windows\System32\drivers\etc的hosts文件,添加 # GitHub地址 192.30.255.112 gith ...

  10. MacbookPro升级10.15 Catalina之后无法读写NTFS

    冲着Sidecar的双屏功能,乐呵呵的跑去升级了10.15,结果就悲剧了. 所有移动硬盘和U盘都写不了,无奈只好上网找办法,目前找到一个便宜的方法: 共2步: Step 1:编写fstab文件 使用T ...