哇 这题目怎么一次比一次毒瘤 当然这次还好 有会做的题目。

T1 一眼看上去 毒瘤!再看一眼 我真不想看了 扔了。

T2 哇感觉能写 哇这不是 随便都有40分了么 二分?优化一下65到手了。然后剩下的不会了。

T3 爆搜?怎么连30分都没有啊 还是状压吧 只有30分觉得剩下的是贪心就没有再思考了。

先从T2 开始改吧。

LINK: (其实就是一个-1 1序列 求出一段连续的序列使其最长。

当然这是转化过的模型了 具体看题目 首先 从答案的角度进行分析 得到最后一定是某个质因数留到了最后 发现没有质因数就没有答案所以要枚举质因数。

枚举完质因数就是上述的问题了 怎么解决?显然我有一个二分的思路然后 复杂度 nlogn 而质因数很多 设为T T=1e6/ln1e6 这个少说也有1e5 所以说 不能这样搞,复杂度过大。

但是由于1的位置非常至少我们不妨将其抽出来。但是通过二分可以发现答案可能不在1这个位置上。但是我们显然可以得到一个推论。

答案的区间一定是一个偶数除非是1~n.这个区间,所以我们得到一对 i j的区间是合法的 那么我们也同时得到了这个区间的长度2*(i-j+1);于是做一些细节的处理就可以得到我们要求的区间辣。

还是一样的结果 枚举所有的质因数来寻找答案 我们分析 一下如何只遍历1的位置来寻找答案。

对于一个i 来说我们要寻找一个尽可能小的j 使得其满足 2*(i-j+1)>=(pi-pj+1) 当然这个地方 i pi 这个玩意都是同时单调 的所以我们还是要找到一个尽量小的j。

这个问题 可以很快的得到答案 。首先 我们得到了这个东西有一些性质 不妨可以讨论一下可以发现pi是单调递增的 并非原来最基础的二分模型每个位置上的数字都不单调。

当然 这个和我的二分做法不尽相同所以 这里不再赘述 我突然有点sb...

我们把1抽出来之后考虑如何求答案 也就是对于每个i如何寻找j 暴力枚举?复杂度还是会达到n^2 我们观察上述的式子可以简化为 pi-2*i-1<=pj-2*j;

显然我们可以排序 然后 就可以通过双指针扫描的方法寻找到最小的j 二分复杂度就有点高了...这样复杂度最好还是一个nlogn的加上了一些小常数罢了。

还是有点迷不过没有关系 正序枚举i好像会出现一些事故 i单调递增 那么这将意味着j的集合不断减小 不妨倒序枚举i 这样j这个集合也好加入..

考虑 了一些细节却反过来迷惑了自己qwq 其实都是一些不必要的情况 如 j找到了i怎么办 我们维护一个最小的j尽管遇到了这种情况也是不会累计贡献的 所以是合法的。

考虑 到 答案所在 最小左端点显然 我们必然能直接从左端点向右边找最小 因为 如果可能不合法那么必然的我们最小的左端点还能更小所以假设不成立。

//#include<bits/stdc++.h>
#include<iomanip>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<deque>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<stack>
#include<algorithm>
#include<vector>
#include<cctype>
#include<utility>
#include<set>
#include<bitset>
#include<map>
#define INF 1000000010
#define ll long long
#define mp(x,y) make_pair(x,y)
#define un unsigned
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline ll read()
{
ll x=,f=;char ch=getc();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getc();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getc();}
return x*f;
}
const int MAXN=,maxn=;
int n,flag,maxx=,mark;
int ans,ansl,top;
int a[MAXN],w[MAXN];
vector<int>p[maxn],id[maxn];
struct wy{int p,v,cnt;}t[MAXN];//pos v
inline int cmp(wy a,wy b){return a.v>b.v;}
inline void upd(int L,int len)
{
if(len>ans)ansl=L,ans=len;
else if(len==ans)ansl=min(ansl,L);
return;
}
int main()
{
//freopen("1.in","r",stdin);
n=read();mark=n/;if(n&)++mark;
for(int i=;i<=maxx;++i)
if(!p[i].size())
for(int j=i;j<=maxx;j+=i)
p[j].push_back(i);
for(int i=;i<=n;++i)
{
a[i]=read();
if(a[i]!=)flag=;
for(un int j=;j<p[a[i]].size();++j)
{
id[p[a[i]][j]].push_back(i);
//cout<<p[a[i]][j]<<endl;
if(id[p[a[i]][j]].size()>=mark)mark=INF;
}
}
if(!flag){printf("0 0\n");return ;}
if(mark==INF){printf("1 %d\n",n);return ;}
for(int i=;i<=maxx;++i)
{
if(!id[i].size())continue;
top=;
for(un j=;j<id[i].size();++j)
{
++top;
t[top]=(wy){id[i][j],id[i][j]-*top,top};
}
sort(t+,t++top,cmp);
int j=,now=n+;
for(int k=;k<=top;++k)//寻找一个j使得 t[k].top-2*t[top].p<=。。。
{
while(j<=top&&t[j].v+>=t[k].v)
{
now=min(now,t[j].cnt);
++j;
}
int len=*(t[k].cnt-now+);
int l=max(,t[k].p-len+);
upd(l,len);
}
}
printf("%d %d\n",ansl,ansl+ans-);
return ;
}

当然二分也是可以过的(说的不是我的二分 但是我的二分加入一些奇技淫巧也可以过嘿嘿嘿...比如只判断40个质数直接水过有没有 当然这种做法相当的不严谨 我杜绝这样的做法这里我放一个 65分的二分 很巧妙的.

//#include<bits/stdc++.h>
#include<iomanip>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<deque>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<stack>
#include<algorithm>
#include<vector>
#include<cctype>
#include<utility>
#include<set>
#include<bitset>
#include<map>
#define INF 1000000000
#define ll long long
#define R register
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int MAXN=,maxn=;
int n,maxx,ans,ansl,L;
int a[MAXN],f[MAXN];
int p[maxn];
int w[MAXN];
inline void fj(int x)
{
for(int i=;i*i<=x;++i)
{
if(x%i==)
{
while(x%i==)x=x/i;
p[i]=;
maxx=max(maxx,i);
}
}
if(x>)p[x]=;
maxx=max(maxx,x);
}
inline int check(int x)
{
int minn=INF,mark;
for(int i=;i<x;++i)f[i]=f[i-]+w[i];
for(int i=x;i<=n;++i)
{
f[i]=f[i-]+w[i];
if(f[i-x]<minn){minn=f[i-x];mark=i-x+;}
if(f[i]-minn>=){L=mark;return ;}
}
return ;
}
inline void solve(int x)
{
for(int i=;i<=n;++i)
{
w[i]=;
if(a[i]%x==)w[i]=;
--w[i];
}
int l=ans,r=n;
while(l+<r)
{
int mid=(l+r)>>;
if(check(mid))l=mid;
else r=mid;
}
if(check(r))
{
if(ans==r){ansl=min(ansl,L);}
if(r>ans){ans=r;ansl=L;}
}
else
{
check(l);
if(ans==l){ansl=min(ansl,L);}
if(l>ans){ans=l;ansl=L;}
}
return;
}
int main()
{
//freopen("1.in","r",stdin);
n=read();
for(int i=;i<=n;++i)a[i]=read(),fj(a[i]);
for(int i=;i<=maxx;++i)if(p[i])solve(i);
if(!ansl)printf("%d %d\n",ansl,ansl);
else printf("%d %d\n",ansl,ansl+ans-);
return ;
}

但是还需要考虑一波事情 叫做二分过题 。优化这个二分如何?我们还是把1 抽出来进行这个上述二分答案的过程发现这样的复杂度也是科学的n*8*logn 哇很稳。当时考试的时候关键是少了一个推论。

很可惜。我应该是能够推出那个答案所在的推论的,要不就A了。

A了都不知道 以为wa了 那就很棒了 我的思路也是正确的二分 +验证 不过把1抽出来罢了 跟上述做法差多了 但是没有上述做法好调。

但是要注意细节 二分果然毒瘤。...

//#include<bits/stdc++.h>
#include<iomanip>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<deque>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<stack>
#include<algorithm>
#include<vector>
#include<cctype>
#include<utility>
#include<set>
#include<bitset>
#include<map>
#define INF 1000000010
#define ll long long
#define mp(x,y) make_pair(x,y)
#define un unsigned
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline ll read()
{
ll x=,f=;char ch=getc();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getc();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getc();}
return x*f;
}
const int MAXN=,maxn=;
int n,flag,maxx=,mark;
int ans,ansl,top;
int a[MAXN],w[MAXN];
int b[MAXN],c[MAXN],f[MAXN];
vector<int>p[maxn],id[maxn];
inline void upd(int L,int len)
{
if(len>ans)ansl=L,ans=len;
else if(len==ans)ansl=min(ansl,L);
return;
}
inline int check(int x)
{
int minn=INF,s;
for(int i=;i<=x;++i)f[i]=(c[i]<<)-b[i];
for(int i=x+;i<=top;++i)
{
f[i]=(c[i]<<)-b[i];
if(f[i-x]<minn){minn=f[i-x];s=i-x;}
if(f[i]-minn+>=)
{
int len=*(c[i]-c[s]+);
int L=max(,b[i]-len+);
upd(L,len);
return ;
}
}
return ;
}
int main()
{
//freopen("1.in","r",stdin);
n=read();mark=n/;if(n&)++mark;
for(int i=;i<=maxx;++i)
if(!p[i].size())
for(int j=i;j<=maxx;j+=i)
p[j].push_back(i);
for(int i=;i<=n;++i)
{
a[i]=read();
if(a[i]!=)flag=;
for(un int j=;j<p[a[i]].size();++j)
{
id[p[a[i]][j]].push_back(i);
//cout<<p[a[i]][j]<<endl;
if(id[p[a[i]][j]].size()>=mark)mark=INF;
}
}
if(!flag){printf("0 0\n");return ;}
if(mark==INF){printf("1 %d\n",n);return ;}
for(int i=;i<=maxx;++i)
{
if(!id[i].size())continue;
top=;
for(unsigned int j=;j<id[i].size();++j)
{
b[++top]=id[i][j];
c[top]=j+;
if((c[top]<<)>=b[top])upd(max(,b[top]-c[top]*+),c[top]<<);
}
int l=,r=top;
while(l+<r)
{
int mid=(l+r)>>;
if(check(mid))l=mid;
else r=mid;
}
check(r);check(l);
}
printf("%d %d\n",ansl,ansl+ans-);
return ;
}

T1:由于本人智商不够 耐心不够 不够沉着 不够冷静 不够勇敢 不够自信 总之就是不对劲这人 60分送的都没拿 我我我真不对劲。

LINK:模拟 构造 毒瘤 要求多 不会写 自闭。

具体要求 要求构造一个字符串 其由 小写字母 ?* 组成 这个类似于通配符(一听到这个名字我就烦... *可以替换任意非负长度的小写字母 注意非负也可以是0 ?可以替换任意小写字母。

给出两个 字符串S1 S2 要求出一个字符串T可以满足:如果字符串S能匹配S1或S2 那么S也能匹配T 这个条件很绕对不对。和S明明无关 非得引入S。

显然有结论 如果S能匹配S1 S1能匹配T 那么显然 T能匹配S 那么我们让T能够同时匹配S1和S2 即可。且使得*尽量少 且在满足上述条件下长度最长 且在满足上述条件之下?个数最少。

且在满足上述条件的情况下字典序最小 其中字典序的大小关系为*?abcd... 真的不想写TAT.
(别问我为什么写 我只是突然睡着了 睡醒之后就想写了。

//#include<bits/stdc++.h>
#include<iomanip>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<deque>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<stack>
#include<algorithm>
#include<vector>
#include<cctype>
#include<utility>
#include<set>
#include<bitset>
#include<map>
#define INF 1000000010
#define ll long long
#define mp(x,y) make_pair(x,y)
#define un unsigned
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int MAXN=;
int T,n,m;
char a[MAXN],b[MAXN];
int main()
{
//freopen("1.in","r",stdin);
T=read();
while(T--)
{
scanf("%s",a+);
scanf("%s",b+);
n=strlen(a+);m=strlen(b+);
if(n==m)
{
for(int i=;i<=n;++i)
{
if(a[i]=='?'||b[i]=='?'){printf("?");continue;}
if(a[i]!=b[i]){printf("?");continue;}
printf("%c",a[i]);
}
puts("");
}
}
return ;
}

60 points

这题 显然两个性质 一个 *最多一个  另一个 *带????必然可能是最多答案这也意味着答案的长度被固定了固定在min(n1,m1)两个串不含*号的长度上。

考虑接下来如何的构造 发现前面尽可能的匹配 后面也尽可能的匹配匹配不上就是?号也就是说要让?最少了。考虑枚举*号的位置从而确定?的多少。

那么我们正着做一遍匹配倒着做一遍匹配 这样子我们直接枚举i点为* 取最少的?即可。考虑字典序 我们发现在保证?最少之前是没有字典序的限制的。

所以 而?的字典序也是如此 *越靠前越优所以我们去>即可。

//#include<bits/stdc++.h>
#include<iomanip>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<deque>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<stack>
#include<algorithm>
#include<vector>
#include<cctype>
#include<utility>
#include<set>
#include<bitset>
#include<map>
#define INF 1000000010
#define ll long long
#define mp(x,y) make_pair(x,y)
#define un unsigned
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int MAXN=;
int T,n,m;
int n1,m1;
char a[MAXN],b[MAXN];
char ansl[MAXN],ansr[MAXN];
int cntl[MAXN],cntr[MAXN];
int main()
{
freopen("1.in","r",stdin);
T=read();
while(T--)
{
scanf("%s",a+);scanf("%s",b+);
n=strlen(a+);m=strlen(b+);
n1=;m1=;
memset(cntl,,sizeof(cntl));
memset(cntr,,sizeof(cntr));
for(int i=;i<=n;++i)if(a[i]!='*')++n1;
for(int i=;i<=m;++i)if(b[i]!='*')++m1;
if(n==m&&n1==n&&m1==m)
{
for(int i=;i<=n;++i)
{
if(a[i]=='?'||b[i]=='?'){printf("?");continue;}
if(a[i]!=b[i]){printf("?");continue;}
printf("%c",a[i]);
}
puts("");continue;
}
int len=min(n1,m1)+;//答案串的总长度
int flag=;
for(int i=;i<=len;++i)
{
if(flag||a[i]=='*'||b[i]=='*')
{
flag=;cntl[i]=cntl[i-]+;
ansl[i]='?';continue;
}
else
{
if(a[i]==b[i]&&a[i]!='?')cntl[i]=cntl[i-],ansl[i]=a[i];
else cntl[i]=cntl[i-]+,ansl[i]='?';
}
}
flag=;
for(int i=len;i;--i)
{
int s1=n-(len-i),s2=m-(len-i);
if(flag||a[s1]=='*'||b[s2]=='*')
{
flag=;cntr[i]=cntr[i+]+;
ansr[i]='?';continue;
}
else
{
if(a[s1]==b[s2]&&a[s1]!='?')cntr[i]=cntr[i+],ansr[i]=a[s1];
else cntr[i]=cntr[i+]+,ansr[i]='?';
}
}
int ans=INF,pos;
for(int i=;i<=len;++i)
if(cntl[i-]+cntr[i+]<ans)
{
ans=cntl[i-]+cntr[i+];
pos=i;
}
for(int i=;i<pos;++i)printf("%c",ansl[i]);
printf("*");
for(int i=pos+;i<=len;++i)printf("%c",ansr[i]);
puts("");
}
return ;
}

T3:这题还是 一个比较有意思的题目 不过我只会暴力(不推出一些性质 那么暴力也就不可能出奇迹吧。所以看题还得推出一些性质 不要不想思考。要从题目中的信息之中不断的发掘性质。

LINK:黑 需要掉命的题目必须推出性质才能解题,鬼畜的dp。

题目大意是 给出了一段程序 求出一个排列是的最后的Y值最大。还要输出构造的排列。

开始缓慢入题 要求不妨把所有的排列都搜出来判断 显然这样是n! 乌拉然后你会发现 什么也得不到。考虑装压合并状态 f[i][j]表示 状态i且x为j的答案最大。

这玩意转移是2^n*n*x的终于得到了30分的好成绩。然后弃疗即可/cy

//#include<bits/stdc++.h>
#include<iomanip>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<deque>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<stack>
#include<algorithm>
#include<vector>
#include<cctype>
#include<utility>
#include<set>
#include<bitset>
#include<map>
#define INF 1000000000
#define ll long long
#define R register
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int MAXN=;
int n,X,t,w,v,s,maxx;
int a[MAXN],b[MAXN];
int q[MAXN];
int f[<<][];
int g[<<][],h[<<][];
inline void get_path(int state,int k)
{
if(!state)return;
q[++t]=g[state][k];
get_path(state^(<<(q[t]-)),h[state][k]);
}
int main()
{
//freopen("1.in","r",stdin);
X=read();n=read();
for(int i=;i<=n;++i)a[i]=read();
for(int i=;i<=n;++i)b[i]=read();
if(n<=)
{
memset(f,0xcf,sizeof(f));
f[][X]=;
for(int i=;i<(<<n);++i)
{
for(int j=;j<=X;++j)
{
if(f[i][j]<)continue;
for(int k=;k<=n;++k)
{
if(i&(<<(k-)))continue;
s=i|(<<(k-));
w=max(,j-a[k]);
v=max(,b[k]-w);
if(f[s][w]<f[i][j]+v)
{
f[s][w]=f[i][j]+v;
g[s][w]=k;h[s][w]=j;
}
}
}
}
for(int i=;i<=X;++i)
maxx=max(maxx,f[(<<n)-][i]);
for(int i=;i<=X;++i)
if(maxx==f[(<<n)-][i])
{
get_path((<<n)-,i);
break;
}
printf("%d\n",maxx);
//cout<<t<<endl;
printf("%d",q[t]);
for(int i=t-;i>=;--i)printf(" %d",q[i]);
return ;
}
}

obviously 发现一个解 或者说最优解必然是存在在前几步累计的价值都为0 也就是我们研究的阶段变成了两步一步是爆零阶段 一步是非爆零阶段 x一旦爆零那么 那么我也跟着爆零/cy

当然不是一旦爆零后面的顺序也就无所谓了 因为对答案贡献都是其累和 也就是说 我们只需要研究前面的阶段即可。 考虑dp。

如何让x以某种方式完成优美的爆零使我们的目标 这个时候 就考验我们 的爆零能力了。发现x在非爆零阶段 承受的x都是递增的。

obvious 因为在非爆零的阶段 他们带给答案的累加都是 0 那么先搞 大的这样到最后更容易获得一些值

ZR 提高十连 DAY 4的更多相关文章

  1. 提高十连测day3

    提高十连测day3 A 我们可以枚举两个 $ 1 $ 之间的相隔距离,然后计算形如 $ 00100100 \cdots $ 的串在原串中最⻓⼦序列匹配即可,复杂度 $ O(n^2) $ .寻找 $ S ...

  2. ZR提高失恋测4

    ZR提高失恋测4 比赛链接 A (方便讨论,设读入的串为\(S,T\)答案串为\(A\)) 首先\(*\)只会有一个 这是这道题目中非常重要的一个结论 简单证明一下? 因为\(*\)可以代表所有的字符 ...

  3. ZR提高失恋测3

    ZR提高失恋测3 题目链接 (感觉这一场比以往的简单了一些) 估分 100 + 40 + 40 得分 100 + 60 + 40 ??? A 首先,我们能够想到一个比较简单的\(n^2\)做法, 枚举 ...

  4. ZR提高失恋测2(9.7)

    ZR提高失恋测2(9.7) 网址http://www.zhengruioi.com/contest/392 版权原因,不放题面 A 首先,我们发现对于匹配串\(s\)中所有满足\(s_i \not = ...

  5. 将Web应用性能提高十倍的10条建议

    导读 提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于 ...

  6. 将 Web 应用性能提高十倍的10条建议

    提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于历史上 ...

  7. ZROI2019 提高十连测

    额 掰手指头一数 特么又是第三年十连测了= = 2017一场没打 那时候好像一场比赛也就100人左右 2018前几场还都好好补了 后来开始放飞自我了 这时候一场有150人还多了 2019想让今年的No ...

  8. JAVA提高十:ArrayList 深入分析

    前面一章节,我们介绍了集合的类图,那么本节将学习Collection 接口中最常用的子类ArrayList类,本章分为下面几部分讲解(说明本章采用的JDK1.6源码进行分析,因为个人认为虽然JDK1. ...

  9. JAVA提高十二:HashMap深入分析

    首先想说的是关于HashMap源码的分析园子里面应该有很多,并且都是分析得很不错的文章,但是我还是想写出自己的学习总结,以便加深自己的理解,因此就有了此文,另外因为小孩过来了,因此更新速度可能放缓了, ...

随机推荐

  1. 通过原生js对DOM事件的绑定的几种方式总汇

    在网页开发中经常会有交互操作,比如点击一个dom元素,需要让js对该操作做出相应的响应,这就需要对Dom元素进行事件绑定来进行处理,js通常有三种常用的方法进行事件绑定:在DOM元素中直接绑定:在Ja ...

  2. UVA11300 Spreading the Wealth 题解

    题目 A Communist regime is trying to redistribute wealth in a village. They have have decided to sit e ...

  3. day58 作业

    目录 一.做一个图书管理系统页面 二.做一个主页模版 三.点赞 一.做一个图书管理系统页面 <!DOCTYPE html> <html lang="en"> ...

  4. Python比较操作符、变量赋值、对象拷贝

    Python比较操作符.变量赋值.对象拷贝 目录 Python比较操作符.变量赋值.对象拷贝 1. 比较操作符 == 和 is 1.1 区别 1.2 实例 2. 变量及其赋值 2.1 概念和逻辑关系 ...

  5. 事件的event对象基本解释

    事件流: 描述的是在页面中接受事件的顺序主要分为两种: 事件冒泡.事件捕获 事件event对象:1. type 获取事件类型2. target获取事件目标3. stopPropagation() 阻止 ...

  6. Active Directory - Creating Public and Personnel Share Folders via Script

    Create and save the following scripts on the DC folder \\Winsever2019\sysvol\pandabusiness.local\scr ...

  7. 微信小程序开发部署

    一.开发准备 1,想要开发微信小程序,必须要有一个AppId,如果没有可以去注册一个.   https://mp.weixin.qq.com/进入注册页面,点击上方注册.   2,点击选择“小程序”出 ...

  8. Windows搭建Redis集群-详细教程

    一.集群知识 1.集群的概念 所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定.高效的状态. 2.使用redis集群的必要性 问题:我们已经部署好了redis,并且能启动 ...

  9. 题解 洛谷 P6349 【[PA2011]Kangaroos】

    先考虑对题目进行转化,我们称两个区间有交集为这两个区间能匹配,每个询问就是在序列中最长能连续匹配的长度. 对序列中的一个区间\([l,r]\)和询问的一个区间\([L,R]\),若满足\(L \leq ...

  10. 目前解决移动端1px边框最好的方法

    在移动端开发时,经常会遇到在视网膜屏幕中元素边框变粗的问题.本文将带你探讨边框变粗问题的产生原因及介绍目前市面上最好的解决方法. 1px 边框问题的由来 苹果 iPhone4 首次提出了 Retina ...