NOIP 2015 提高组 Day1
期望得分:100+100+100=300
实际得分:100+100+45=245
T3 相似的代码 复制过去 没有改全,痛失55分
http://www.cogs.pro/cogs/page/page.php?aid=16
T1 神奇的幻方
题目描述
幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行、每列及两条对角线上的数字之和都相同。
当N为奇数时,我们可以通过以下方法构建一个幻方:
首先将1写在第一行的中间。
之后,按如下方式从小到大依次填写每个数K(K=2,3,…,N*N):
1.若(K−1)在第一行但不在最后一列,则将K填在最后一行,(K−1)所在列的右一列;
2.若(K−1)在最后一列但不在第一行,则将K填在第一列,(K−1)所在行的上一行;
3.若(K−1)在第一行最后一列,则将K填在(K−1)的正下方;
4.若(K−1)既不在第一行,也不在最后一列,如果(K−1)的右上方还未填数,则将K填在(K−1)的右上方,否则将K填在(K−1)的正下方。
现给定N请按上述方法构造N*N的幻方。
输入输出格式
输入格式:
输入文件只有一行,包含一个整数N即幻方的大小。
输出格式:
输出文件包含N行,每行N个整数,即按上述方法构造出的N*N的幻方。相邻两个整数之间用单个空格隔开。
输入输出样例
3
8 1 6
3 5 7
4 9 2
#include<cstdio>
using namespace std;
int a[][],posx[],posy[];
int main()
{
freopen("2015magic.in","r",stdin);
freopen("2015magic.out","w",stdout);
int n;
scanf("%d",&n);
a[][n/+]=;
posx[]=; posy[]=n/+;
for(int i=;i<=n*n;i++)
{
if(posx[i-]==&&posy[i-]!=n)
{
posx[i]=n; posy[i]=posy[i-]+;
a[posx[i]][posy[i]]=i;
}
else if(posx[i-]!=&&posy[i-]==n)
{
posx[i]=posx[i-]-; posy[i]=;
a[posx[i]][posy[i]]=i;
}
else if(posx[i-]==&&posy[i-]==n)
{
posx[i]=posx[i-]+; posy[i]=posy[i-];
a[posx[i]][posy[i]]=i;
}
else
{
if(!a[posx[i-]-][posy[i-]+])
{
posx[i]=posx[i-]-; posy[i]=posy[i-]+;
a[posx[i]][posy[i]]=i;
}
else
{
posx[i]=posx[i-]+; posy[i]=posy[i-];
a[posx[i]][posy[i]]=i;
}
}
}
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++) printf("%d ",a[i][j]);
printf("\n");
}
}
T2 信息传递
时间限制:1 s 内存限制:256 MB
【题目描述】
有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学。
游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游戏结束。请问该游戏一共可以进行几轮?
【输入格式】
输入共2行。
第1行包含1个正整数n表示n个人。
第2行包含n个用空格隔开的正整数T1,T2,……,Tn其中第i个整数Ti示编号为i
的同学的信息传递对象是编号为Ti的同学,Ti≤n且Ti≠i
数据保证游戏一定会结束。
【输出格式】
输出共 1 行,包含 1 个整数,表示游戏一共可以进行多少轮。
【样例输入】
5
2 4 2 3 1
【样例输出】
3
【提示】
游戏的流程如图所示。当进行完第 3 轮游戏后, 4 号玩家会听到 2 号玩家告诉他自
己的生日,所以答案为 3。当然,第 3 轮游戏后, 2 号玩家、 3 号玩家都能从自己的消息
来源得知自己的生日,同样符合游戏结束的条件。
对于 30%的数据, n ≤ 200;
对于 60%的数据, n ≤ 2500;
对于 100%的数据, n ≤ 200000。
求最小的强连通分量
tarjen算法 模板
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,cnt,tmp,ans=;
int to[],dfn[],low[];
struct stack
{
int topp,st[];
bool v[];
stack() { topp=; memset(v,,sizeof(v));}
void push(int x) { st[topp++]=x; v[x]=true; }
void pop() { v[topp-]=false; topp--; }
int top() { return st[topp-]; }
bool find(int x) { return v[x]; }
}s;
void tarjer(int u)
{
if(!dfn[u])
{
s.push(u);
dfn[u]=low[u]=++cnt;
}
if(!dfn[to[u]])
{
tarjer(to[u]);
low[u]=min(low[to[u]],low[u]);
}
else if(s.find(to[u])) low[u]=min(low[u],dfn[to[u]]);
if(dfn[u]==low[u])
{
tmp=;
while(s.top()!=u) { tmp++; s.pop();}
tmp++; s.pop();
if(tmp>) ans=min(tmp,ans);
}
}
int main()
{
freopen("2015message.in","r",stdin);
freopen("2015message.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&to[i]);
for(int i=;i<=n;i++) if(!dfn[i]) tarjer(i);
printf("%d",ans);
}
T3 斗地主
时间限制:2 s 内存限制:1025 MB
【题目描述】
牛牛最近迷上了一种叫斗地主的扑克游戏。斗地主是一种使用黑桃、红心、梅花、方片的A到K加上大小王的共54张牌来进行的扑克牌游戏。在斗地主中,牌的大小关系根据牌的数码表示如下:3<4<5<6<7<8<9<10<J<Q<K<A<2<小王<大王,而花色并不对牌的大小产生影响。每一局游戏中,一副手牌由n张牌组成。游戏者每次可以根据规定的牌型进行出牌,首先打光自己的手牌一方取得游戏的胜利。
现在,牛牛只想知道,对于自己的若干组手牌,分别最少需要多少次出牌可以将它们打光。请你帮他解决这个问题。
需要注意的是,本题中游戏者每次可以出手的牌型与一般的斗地主相似而略有不同。
具体规则如下:
【输入格式】
第一行包含用空格隔开的2个正整数Tn,表示手牌的组数以及每组手牌的张数。
接下来T组数据,每组数据n行,每行一个非负整数对aibi表示一张牌,其中ai示牌的数码,bi表示牌的花色,中间用空格隔开。特别的,我们用1来表示数码A,11表示数码J,12表示数码Q,13表示数码K;黑桃、红心、梅花、方片分别用1-4来表示;小王的表示方法为01,大王的表示方法为02。
【输出格式】
共T行,每行一个整数,表示打光第i手牌的最少次数。
【样例输入1】
1 8
7 4
8 4
9 1
10 4
11 1
5 1
1 4
1 1
【样例输出1】
3
【样例输入2】
1 17
12 3
4 3
2 3
5 4
10 2
3 3
12 2
0 1
1 3
10 1
6 2
12 1
11 3
5 2
12 4
2 2
7 2
【样例输出2】
6
【提示】
样例1说明
共有1组手牌,包含8张牌:方片7,方片8,黑桃9,方片10,黑桃J,黑桃5,方片A以及黑桃A。可以通过打单顺子(方片7,方片8,黑桃9,方片10,黑桃J),单张牌(黑桃5)以及对子牌(黑桃A以及方片A)在3次内打光。
对于不同的测试点, 我们约定手牌组数T与张数n的规模如下:
数据保证:所有的手牌都是随机生成的。
大模拟
先 dfs 顺子
再dfs 几带几
最后在加上 剩余的单牌、对子
一定要加 最优性剪枝:
if(tot > ans) return;
因为这句话,才使上面的 模拟顺序 时间复杂度减少
否则,时间与模拟顺序无关
此代码最后一个点900ms+,刚卡过去
总耗时:1593ms
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int T,n,ans=;
int a[];
void dfs(int leave,int tot)
{
if(tot>ans) return;
if(!leave) { ans=min(ans,tot); return;}
int tmp[];
memcpy(tmp,a,sizeof(tmp));
int sum=;
bool ok=false;
for(int i=;i<=;i++) //三顺子
if(a[i]>=)
{
sum++;
if(sum>=) { ok=true; break;}
}
else sum=;
if(ok)
{
for(int s=;s<=-;s++) //qi dian
{
if(a[s]<||a[s+]<) continue;
a[s]-=;
for(int k=s+;k<=;k++) // zhong dian
{
if(a[k]<) break;
a[k]-=;
dfs(leave-(k-s+)*,tot+);
}
memcpy(a,tmp,sizeof(a));
}
}
ok=false;
for(int i=;i<=;i++)//双顺子
if(a[i]>=)
{
sum++;
if(sum>=) { ok=true; break;}
}
else sum=;
if(ok)
{
for(int s=;s<=-;s++) //qi dian
{
if(a[s]<||a[s+]<||a[s+]<) continue;
a[s]-=;a[s+]-=;
for(int k=s+;k<=;k++) // zhong dian
{
if(a[k]<) break;
a[k]-=;
dfs(leave-(k-s+)*,tot+);
}
memcpy(a,tmp,sizeof(a));
}
}
ok=false;
for(int i=;i<=;i++)//单顺子
if(a[i])
{
sum++;
if(sum>=) { ok=true; break;}
}
else sum=;
if(ok)
{
for(int s=;s<=-;s++) //qi dian
{
if(!a[s]||!a[s+]||!a[s+]||!a[s+]||!a[s+]) continue;
a[s]--;a[s+]--;a[s+]--;a[s+]--;
for(int k=s+;k<=;k++) // zhong dian
{
if(!a[k]) break;
a[k]--;
dfs(leave-(k-s+),tot+);
}
memcpy(a,tmp,sizeof(a));
}
}
for(int i=;i<=;i++) // 四带X
{
if(a[i]<) continue;
for(int j=;j<=;j++) //四带二对 第一对
{
if(a[j]<||j==i) continue;
for(int k=j+;k<=;k++) //第二对
{
if(a[k]<||k==i) continue;
a[j]-=; a[k]-=;a[i]-=;
dfs(leave-,tot+);
memcpy(a,tmp,sizeof(a));
}
a[j]-=;a[i]-=; //四带一对
dfs(leave-,tot+);
memcpy(a,tmp,sizeof(a));
}
for(int j=;j<;j++) //四带两张单 第一张
{
if(!a[j]||j==i) continue;
for(int k=j+;k<=;k++) //第二张
{
if(!a[k]||k==i) continue;
a[j]--; a[k]--;a[i]-=;
dfs(leave-,tot+);
memcpy(a,tmp,sizeof(a));
}
}
a[i]-=; //炸弹
dfs(leave-,tot+);
memcpy(a,tmp,sizeof(a));
}
for(int i=;i<=;i++) //三带二 第一对
{
if(a[i]<) continue;
for(int j=;j<=;j++) //第二对
{
if(a[j]<||j==i) continue;
a[i]-=; a[j]-=;
dfs(leave-,tot+);
memcpy(a,tmp,sizeof(a));
}
for(int j=;j<=;j++) //三带一
{
if(!a[j]||j==i) continue;
a[i]-=; a[j]--;
dfs(leave-,tot+);
memcpy(a,tmp,sizeof(a));
}
a[i]-=;//三张牌
dfs(leave-,tot+);
memcpy(a,tmp,sizeof(a));
}
int p=;
for(int i=;i<=;i++) //剩余的
if(a[i]) p++;
dfs(,tot+p);
memcpy(a,tmp,sizeof(a));
}
void clear()
{
ans=;
memset(a,,sizeof(a));
}
int main()
{
freopen("landlords.in","r",stdin);
freopen("landlords.out","w",stdout);
scanf("%d%d",&T,&n);
int x;
while(T--)
{
clear();
for(int i=;i<=n;i++)
{
scanf("%d",&x);
if(x==) x=;
a[x]++;
scanf("%d",&x);
}
dfs(n,);
printf("%d\n",ans);
}
}
优化:
在上一份代码中,如果是 几带几
dfs枚举它带的是哪张牌
若 它带的牌 不能形成牌型,那么带谁都是一样的
所以我们可以与处理出 哪那些单牌、对子不能形成顺子
那么这些牌是没用的
即,若不能带出去,只能一次一次出
因为这些牌用谁无所谓
所以用两个变量记录他们的总数即可
dfs要带牌时,
如果 还有没用的的单牌、对子 就先用这些
否则,dfs枚举 其他单牌、对子
所以dfs只需要考虑如何打光 能形成牌型的牌,
最后再加上 没有带出的没用的对子、单牌即可
总耗时:436ms
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int T,n,ans=;
int a[];
int dan,dui;
bool v[];
void dfs(int leave,int tot)
{
if(tot>ans) return;
if(!leave) { ans=min(ans,tot+dan+dui); return;}
int tmp[];
memcpy(tmp,a,sizeof(tmp));
int sum=;
bool ok=false;
for(int i=;i<=;i++)
if(a[i]>=)
{
sum++;
if(sum>=) { ok=true; break;}
}
else sum=;
if(ok)
{
for(int s=;s<=-;s++)
{
if(a[s]<||a[s+]<) continue;
a[s]-=;
for(int k=s+;k<=;k++)
{
if(a[k]<) break;
a[k]-=;
dfs(leave-(k-s+)*,tot+);
}
memcpy(a,tmp,sizeof(a));
}
}
ok=false;
for(int i=;i<=;i++)
if(a[i]>=)
{
sum++;
if(sum>=) { ok=true; break;}
}
else sum=;
if(ok)
{
for(int s=;s<=-;s++)
{
if(a[s]<||a[s+]<||a[s+]<) continue;
a[s]-=;a[s+]-=;
for(int k=s+;k<=;k++)
{
if(a[k]<) break;
a[k]-=;
dfs(leave-(k-s+)*,tot+);
}
memcpy(a,tmp,sizeof(a));
}
}
ok=false;
for(int i=;i<=;i++)
if(a[i])
{
sum++;
if(sum>=) { ok=true; break;}
}
else sum=;
if(ok)
{
for(int s=;s<=-;s++)
{
if(!a[s]||!a[s+]||!a[s+]||!a[s+]||!a[s+]) continue;
a[s]--;a[s+]--;a[s+]--;a[s+]--;
for(int k=s+;k<=;k++)
{
if(!a[k]) break;
a[k]--;
dfs(leave-(k-s+),tot+);
}
memcpy(a,tmp,sizeof(a));
}
}
//以上代码都与上一个代码一模一样,只有这儿下面的改了
int use_dui[],use_dan[]; //统计 除去预处理出的没用的单牌、对子外,其他的单排、对子
use_dui[]=; use_dan[]=;
for(int i=;i<=;i++)
if(v[i])
{
if(a[i]) use_dan[++use_dan[]]=i;
if(a[i]>=) use_dui[++use_dui[]]=i;
}
for(int i=;i<=;i++)
{
if(a[i]<) continue;//先四带两对
if(dui>=) //没用的对子至少有两对,带出去
{
dui-=; a[i]-=;
dfs(leave-,tot+);
dui+=; a[i]+=;
}
else //没用的对子不够两对,枚举统计出来的其他的对子
{
for(int j=;j<=use_dui[];j++)
{
if(use_dui[j]==i) continue;
for(int k=j+;k<=use_dui[];k++)
{
if(use_dui[k]==i) continue;
a[i]-=; a[use_dui[j]]-=; a[use_dui[k]]-=;
dfs(leave-,tot+);
a[i]+=; a[use_dui[j]]+=; a[use_dui[k]]+=;
}
bool g=false;
//如果没用的对子 还有一对,那么当然就带出去,还是四带两对,否则四带一对
if(dui==) { g=true; dui=;}
a[i]-=; a[use_dui[j]]-=;
dfs(leave-,tot+);
if(g) dui=;
a[i]+=; a[use_dui[j]]+=;
}
}
if(dan>=) //四带两张单牌,同对子
{
dan-=; a[i]-=;
dfs(leave-,tot+);
dan+=; a[i]+=;
}
else
{
for(int j=;j<=use_dan[];j++)
{
if(use_dan[j]==i) continue;
for(int k=j+;k<=use_dan[];k++)
{
if(use_dan[k]==i) continue;
a[i]-=; a[use_dan[j]]--; a[use_dan[k]]--;
dfs(leave-,tot+);
a[i]+=; a[use_dan[j]]++; a[use_dan[k]]++;
}
if(dan==)
{
dan=; a[i]-=; a[use_dan[j]]--;
dfs(leave-,tot+);
dan=; a[i]+=; a[use_dan[j]]++;
} }
}
}
for(int i=;i<=;i++) //三带的情况,同四带
{
if(a[i]<) continue;
if(dui)
{
dui--; a[i]-=;
dfs(leave-,tot+);
dui++; a[i]+=;
}
else
{
for(int j=;j<=use_dui[];j++)
{
if(use_dui[j]==i) continue;
a[i]-=; a[use_dui[j]]-=;
dfs(leave-,tot+);
a[i]+=; a[use_dui[j]]+=;
}
}
if(dan)
{
dan--; a[i]-=;
dfs(leave-,tot+);
dan++; a[i]+=;
}
else
{
for(int j=;j<=use_dan[];j++)
{
if(use_dan[j]==i) continue;
a[i]-=; a[use_dan[j]]--;
dfs(leave-,tot+);
a[i]+=; a[use_dan[j]]++;
}
}
}
int h=;
for(int i=;i<=;i++) //一次出一种的牌,包括单张、对子、三张牌、炸弹
if(a[i]) h++;
dfs(,tot+h);
}
void pre()
{
for(int i=;i<=;i++)
{
if(v[i]||!a[i]) continue;
if(a[i]>=)
{
int j=i;
while(a[j]) j++; j--;
if(j-i+>=)
for(int k=i;k<=j;k++) v[k]=true;
}
if(a[i]>=)
{
int j=i;
while(a[j]>=) j++; j--;
if(j-i+>=)
for(int k=i;k<=j;k++) v[k]=true;
}
}
dan=; dui=;
for(int i=;i<=;i++)
if(!v[i])
{
if(a[i]==) a[i]=,dan++;
else if(a[i]==) a[i]=,dui++;
else if(a[i]) v[i]=true;
}
}
int main()
{
freopen("landlords.in","r",stdin);
freopen("landlords.out","w",stdout);
scanf("%d%d",&T,&n);
int x;
while(T--)
{
ans=;
memset(a,,sizeof(a));
memset(v,,sizeof(v));
for(int i=;i<=n;i++)
{
scanf("%d",&x);
if(x==) x=;
a[x]++;
scanf("%d",&x);
}
pre();
dfs(n-dan-dui*,);
printf("%d\n",ans);
}
}
考试时,模拟顺子代码
只写了 三顺子,双顺子、单顺子复制的
但没改全,导致双顺子里牌数-3
虽然也写了优化的代码,但只优化了几带几部分
所以顺子那块也是直接复制的
所以也错了
痛失55分,否则今日题目就可以AK了。
复制一定要慎重
看了看以前写的代码,竟然在洛谷上跑11ms
#include<cstdio>
#include<cstring>
using namespace std;
int t,n,a[],b[],ans=0x7fffffff;
void dfs(int);
void pre()
{
ans=0x7fffffff;
memset(a,,sizeof(a));
memset(b,,sizeof(b));
}
void shunzi(int now)
{
for(int i=;i<=;i++)
{
int j=i;
while(a[j]>=) j++;
if(j-i>=)
{
for(int h=i+;h<=j-;h++)
{
for(int k=i;k<=h;k++)
a[k]--;
dfs(now+);
for(int k=i;k<=h;k++)
a[k]++;
} }
}
}
void liandui(int now)
{
for(int i=;i<=;i++)
{
int j=i;
while(a[j]>=) j++;
if(j-i>=)
{
for(int h=i+;h<=j-;h++)
{
for(int k=i;k<=h;k++)
a[k]-=;
dfs(now+);
for(int k=i;k<=h;k++)
a[k]+=;
} }
}
}
void feiji(int now)
{
for(int i=;i<=;i++)
{
int j=i;
while(a[j]>=) j++;
if(j-i>=)
{
for(int h=i+;h<=j-;h++)
{
for(int k=i;k<=h;k++)
a[k]-=;
dfs(now+);
for(int k=i;k<=h;k++)
a[k]+=;
} }
}
}
int qita()
{
memset(b,,sizeof(b));
int tot=;
for(int i=;i<=;i++) b[a[i]]++;
while(b[]>=&&b[]>=) b[]-=,b[]--,tot++;
while(b[]>=&&b[]>=) b[]-=,b[]--,tot++;
while(b[]>=&&b[]>=) b[]--,b[]--,tot++;
while(b[]>=&&b[]>=) b[]--,b[]--,tot++;
while(b[]>=&&b[]>=) b[]--,b[]--,tot++;
return tot+b[]+b[]+b[]+b[];
}
void dfs(int now)
{
if(now>=ans) return;
int tmp=qita();
if(now+tmp<ans) ans=now+tmp;
feiji(now);
liandui(now);
shunzi(now);
}
int main()
{
scanf("%d%d",&t,&n);
while(t--)
{
pre();
for(int i=;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
if(x==) x=;
if(x==) x=;
if(x==) x=;
a[x]++;
}
dfs();
printf("%d\n",ans);
}
}
今天发现那是错误的
因为 在qita()函数里
几张牌就只能按几张牌出
但事实上是 若3张牌,可以按对子+单牌出
官方数据竟然没卡掉
数据:
1 9
3 1
3 2
3 3
5 1
5 2
5 3
8 1
8 2
8 3
输出:2
NOIP 2015 提高组 Day1的更多相关文章
- NOIP 2015提高组复赛
神奇的幻方 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第 ...
- NOIP 2015 提高组 Day2
期望得分:100+10+60=170 实际得分:100+10+35=145 http://www.cogs.pro/cogs/page/page.php?aid=16 T1 跳石头 时间限制:1 s ...
- NOIP 2013 提高组 day1 T2 火柴排队 归并 逆序对
描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度.现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:∑i=1n(ai−bi)2∑i=1n(ai−bi) ...
- NOIP 2014 提高组 Day1
期望得分:100+100+50=250 实际得分:100+100+50=250 此次NOIP ZJ省一分数线:500,SD:345 https://www.luogu.org/problem/lis ...
- noip 2015 提高组
算是填个坑吧 , QwQ Day 1 第一题很水,就是考代码能力 ,直接贴代码. #include <iostream> #include <cstdlib> #include ...
- noip 2013 提高组 day1
1.转圈游戏: 解析部分略,快速幂就可以过 Code: #include<iostream> #include<fstream> using namespace std; if ...
- NOIP 2014 提高组 题解
NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...
- GZOJ 1361. 国王游戏【NOIP2012提高组DAY1】
国王游戏[NOIP2012提高组DAY1] Time Limit:1000MS Memory Limit:128000K Description 国王游戏(game.cpp/c/pas) [问题描述] ...
- NOIP 2008提高组第三题题解by rLq
啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...
随机推荐
- ubuntu关闭系统自动检测错误
sudo gedit /etc/default/apport 将enabled=1 改成 enabled=0
- 一次WebSphere性能问题诊断过程
一次接到用户电话,说某个应用在并发量稍大的情况下就会出现响应时间陡然增大,同时管理控制台的响应时间也很慢,几乎无法进行正常工作. 赶到现场后,查看平台版本为Webshpere6.0.2.29,操作系统 ...
- css声明的优先级
选择器的特殊性 选择器的特殊性由选择器本身的组件确定,特殊性值表述为4个部分,如0,0,0,0,0 一个选择器的具体特殊性如下确定 1.对于选择器给定的ID属性值,加0,1,0,0 2.对于选择器中给 ...
- MVC与MVP简单对比
在Java平台,基于Spring等技术的MVC框架已经走向成熟:在.NET平台,微软也推出了MVC.MVP Framework,MVP不同于MVC的地方,关键在于,View不再显示的依赖于Busine ...
- 【Linux笔记】CentOS yum 安装 vsftpd
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.特点是小巧轻快,安全易用,下面直接上干货. 一.安装vsftp 以管理员的身份使用yum命令安装vsftp: [root@localh ...
- php 随机密码和盐 来自wordpress
生成随机密码或盐. Generate keys and salts using secure CSPRNG $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJ ...
- APIO/CTSC2017游记
5.10开坑,别问我为啥今天才开始写,前几天玩得太开心了233 5.7 坐火车坐火车,坐地铁坐地铁.其实是第一次坐地铁233.解锁了在地铁上双手玩手机不扶东西站立的姿势? 全程烧流量上QQ,拜大佬约面 ...
- BZOJ3613 HEOI2014南园满地堆轻絮
不明白在某谷上是怎么标到紫的.二分答案或者发现答案就是最大逆序差的一半. #include<iostream> #include<cstdio> #include<cma ...
- OSPF与Vlan间通信综合实验小结与端口隔离
总结 本实验模拟实际工作环境的网络拓扑结构,至此终于理解了一部分的配置思路: 一.三层交换机连接路由器的端口配置 图中GE0/0/4应该是配置成access类型,这个时候应该是不带vlan标签的. ...
- Day21-模板之继承
一,模板之继承 1.在template下面新建一个master.html的文件,当做母版. 2. 母版里需要被替代的部分,以block开始,以endblock结尾 {% block content % ...