8.8 正睿暑期集训营 Day5
2018.8.8 正睿暑期集训营 Day5
时间:3.5h(实际)
期望得分:60+20+20
实际得分:20+20+20
总结
线段树!!!
[Update]好了现在我已经见什么都想写线段树了。
A 友谊巨轮(线段树 动态开点)
开n棵线段树,维护最大值及答案,动态开点就完了啊。。
//4810ms 71524kb
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 300000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
typedef long long LL;
const int N=1e5+5;
int n,K,m,root[N],Ans;
char IN[MAXIN],*SS=IN,*TT=IN;
struct Operation
{
int a,b,c;
}opt[N];
struct Segment_Tree
{
#define S N*50//每次最多4次Modify,但是有2次之前开过了,so N*17*2就够。
#define ls son[x][0]
#define rs son[x][1]
#define lson ls,l,m
#define rson rs,m+1,r
int tot,son[S][2];
struct Node
{
LL mxv; int tm,ans;
bool operator <(const Node &x)const{
return mxv==x.mxv?tm<x.tm:mxv<x.mxv;
}
}t[S];
#define Update(x) t[x]=std::max(t[ls],t[rs])
void Modify(int &x,int l,int r,int p,LL v,int tm)
{
if(!x) x=++tot, ls=rs=0, t[x]=(Node){0,0,0};//取max,tm也要清零啊
if(l==r) {t[x].mxv+=v, t[x].tm=std::max(t[x].tm,tm), t[x].ans=p; return;}
int m=l+r>>1;
if(p<=m) Modify(lson,p,v,tm);
else Modify(rson,p,v,tm);
Update(x);
}
}T;
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
void Modify(int a,int b,int c,int tm)
{
int bef=T.t[root[a]].ans;
T.Modify(root[a],1,n,b,c,tm);
int now=T.t[root[a]].ans;
if(bef==now) return;
if(bef)
if(T.t[root[bef]].ans==a) ++Ans;
else --Ans;
if(now)
if(T.t[root[now]].ans==a) --Ans;
else ++Ans;
}
int main()
{
// freopen("a.in","r",stdin);
// freopen("my.out","w",stdout);
T.t[0].tm=1000000;
for(int Case=read(); Case--; )
{
memset(root,0,sizeof root);
n=read(), K=read(), m=read(), T.tot=Ans=0;
for(int i=1,a,b,c; i<=K; ++i)
{
opt[i]=(Operation){a=read(),b=read(),c=read()};
Modify(a,b,c,i), Modify(b,a,c,i);
if(i>m)
Modify(opt[i-m].a,opt[i-m].b,-opt[i-m].c,i-m), Modify(opt[i-m].b,opt[i-m].a,-opt[i-m].c,i-m);
printf("%d\n",Ans);
}
}
return 0;
}
B 璀璨光滑
C 构解巨树
考试代码
A
//7.7K...(其实copy了两遍)
//暴力都可以O(n)得到答案,非得O(1)。。但是数组改map就可以60了啊
//巨难调。。
#include <map>
#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 300000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
typedef long long LL;
const int N=1e5+5;
int n,K,m;
char IN[MAXIN],*SS=IN,*TT=IN;
struct Operation
{
int a,b,c;
}opt[N];
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
namespace Subtask1
{
const int S=1005;
int ship[S],tm[S][S];
LL mx[S],val[S][S];
bool alone[S];
// struct Node
// {
// int mxv,tm,id;
// bool operator <(const Node &x)const{
// return mxv==x.mxv?tm<x.tm:mxv<x.mxv;
// }
// };
// struct Heap
// {
// std::priority_queue<Node> q;
// inline void Clear() {while(!q.empty()) q.pop();}
// }hp[S];
void Main()
{
memset(mx,0,sizeof mx);
memset(tm,0,sizeof tm);
memset(val,0,sizeof val);
// memset(tag,0,sizeof tag);
memset(ship,0,sizeof ship);
memset(alone,0,sizeof alone);
// for(int i=1; i<=n; ++i) hp[i].Clear();
int ans=0; if(m>K) m=K;
for(int i=1; i<=n; ++i) tm[i][0]=1000000;
for(int i=1,a,b,c; i<=m; ++i)
{
a=read(), b=read(), c=read(), opt[i]=(Operation){a,b,c};
tm[a][b]=tm[b][a]=i;
if((val[a][b]+=c)>=mx[a] && ship[a]!=b)
{
if(ship[ship[a]]==a) ++ans, alone[ship[a]]=1;
mx[a]=val[a][b], ship[a]=b;
}
if((val[b][a]+=c)>=mx[b] && ship[b]!=a)
{
if(ship[ship[b]]==b) ++ans, alone[ship[b]]=1;
mx[b]=val[b][a], ship[b]=a;
}
if(!alone[a]&&ship[a]==b&&ship[b]!=a) ++ans, alone[a]=1;
else if(alone[a]&&ship[ship[a]]==a) --ans, alone[a]=0;
if(!alone[b]&&ship[b]==a&&ship[a]!=b) ++ans, alone[b]=1;
else if(alone[b]&&ship[ship[b]]==b) --ans, alone[b]=0;
printf("%d\n",ans);
}
for(int i=m+1,a,b,c; i<=K; ++i)
{
a=opt[i-m].a, b=opt[i-m].b, c=opt[i-m].c;
val[a][b]-=c, val[b][a]-=c;
// printf("Now:%d bef:%d a:%d b:%d\n",i,i-m,a,b);
if(ship[a]==b)
{
int p=0;
for(int j=1; j<=n; ++j) if(val[a][j]>val[a][p]||(val[a][j]==val[a][p]&&tm[a][j]>tm[a][p])) p=j;
// printf("a: ship[%d]=%d p:%d\n",a,b,p);
if(!p)
{
if(alone[a]) --ans, alone[a]=0;
ship[a]=mx[a]=0;
}
else if(p!=b)
{
if(ship[b]==a) ++ans, alone[b]=1;
ship[a]=p, mx[a]=val[a][p];
if(ship[p]==a)
{
--ans, alone[p]=0;
if(alone[a]) --ans, alone[a]=0;
}
else if(!alone[a]) ++ans, alone[a]=1;
}
else mx[a]-=c;
}
// printf("aa: %d\n",ans);
if(ship[b]==a)
{
int p=0;
for(int j=1; j<=n; ++j) if(val[b][j]>val[b][p]||(val[b][j]==val[b][p]&&tm[b][j]>tm[b][p])) p=j;
// printf("b: ship[%d]=%d p:%d\n",b,a,p);
if(!p)
{
if(alone[b]) --ans, alone[b]=0;
ship[b]=mx[b]=0;
}
else if(p!=a)
{
if(ship[a]==b) ++ans, alone[a]=1;
ship[b]=p, mx[b]=val[b][p];
if(ship[p]==b)
{
--ans, alone[p]=0;
if(alone[b]) --ans, alone[b]=0;
}
else if(!alone[b]) ++ans, alone[b]=1;
}
else mx[b]-=c;
}
// printf("bb: %d\n",ans);
a=read(), b=read(), c=read(), opt[i]=(Operation){a,b,c};
tm[a][b]=tm[b][a]=i;
if((val[a][b]+=c)>=mx[a] && ship[a]!=b)
{
if(ship[ship[a]]==a) ++ans, alone[ship[a]]=1;
mx[a]=val[a][b], ship[a]=b;
}
if((val[b][a]+=c)>=mx[b] && ship[b]!=a)
{
if(ship[ship[b]]==b) ++ans, alone[ship[b]]=1;
mx[b]=val[b][a], ship[b]=a;
}
if(!alone[a]&&ship[a]==b&&ship[b]!=a) ++ans, alone[a]=1;
else if(alone[a]&&ship[ship[a]]==a) --ans, alone[a]=0;
if(!alone[b]&&ship[b]==a&&ship[a]!=b) ++ans, alone[b]=1;
else if(alone[b]&&ship[ship[b]]==b) --ans, alone[b]=0;
printf("%d\n",ans);
}
}
}
namespace Subtask2
{//m=k
int ship[N];
LL mx[N];
bool alone[N];
std::map<int,LL> val[N];
void Main()
{
for(int i=1; i<=n; ++i) val[i].clear();
memset(mx,0,sizeof mx);
memset(ship,0,sizeof ship);
memset(alone,0,sizeof alone);
int ans=0;
for(int i=1,a,b,c; i<=m; ++i)
{
a=read(), b=read(), c=read();
if((val[a][b]+=c)>=mx[a] && ship[a]!=b)
{
if(ship[ship[a]]==a) ++ans, alone[ship[a]]=1;
mx[a]=val[a][b], ship[a]=b;
}
if((val[b][a]+=c)>=mx[b] && ship[b]!=a)
{
if(ship[ship[b]]==b) ++ans, alone[ship[b]]=1;
mx[b]=val[b][a], ship[b]=a;
}
if(!alone[a]&&ship[a]==b&&ship[b]!=a) ++ans, alone[a]=1;
else if(alone[a]&&ship[ship[a]]==a) --ans, alone[a]=0;
if(!alone[b]&&ship[b]==a&&ship[a]!=b) ++ans, alone[b]=1;
else if(alone[b]&&ship[ship[b]]==b) --ans, alone[b]=0;
printf("%d\n",ans);
}
}
}
namespace Subtask3
{
int ship[N];
LL mx[N];
std::map<int,int> tm[N];
std::map<int,LL> val[N];
bool alone[N];
void Main()
{
memset(mx,0,sizeof mx);
memset(ship,0,sizeof ship);
memset(alone,0,sizeof alone);
for(int i=1; i<=n; ++i) tm[i].clear(), val[i].clear();
int ans=0; if(m>K) m=K;
for(int i=1; i<=n; ++i) tm[i][0]=1000000;
for(int i=1,a,b,c; i<=m; ++i)
{
a=read(), b=read(), c=read(), opt[i]=(Operation){a,b,c};
tm[a][b]=tm[b][a]=i;
if((val[a][b]+=c)>=mx[a] && ship[a]!=b)
{
if(ship[ship[a]]==a) ++ans, alone[ship[a]]=1;
mx[a]=val[a][b], ship[a]=b;
}
if((val[b][a]+=c)>=mx[b] && ship[b]!=a)
{
if(ship[ship[b]]==b) ++ans, alone[ship[b]]=1;
mx[b]=val[b][a], ship[b]=a;
}
if(!alone[a]&&ship[a]==b&&ship[b]!=a) ++ans, alone[a]=1;
else if(alone[a]&&ship[ship[a]]==a) --ans, alone[a]=0;
if(!alone[b]&&ship[b]==a&&ship[a]!=b) ++ans, alone[b]=1;
else if(alone[b]&&ship[ship[b]]==b) --ans, alone[b]=0;
printf("%d\n",ans);
}
for(int i=m+1,a,b,c; i<=K; ++i)
{
a=opt[i-m].a, b=opt[i-m].b, c=opt[i-m].c;
val[a][b]-=c, val[b][a]-=c;
if(ship[a]==b)
{
int p=0;
for(int j=1; j<=n; ++j) if(val[a][j]>val[a][p]||(val[a][j]==val[a][p]&&tm[a][j]>tm[a][p])) p=j;
if(!p)
{
if(alone[a]) --ans, alone[a]=0;
ship[a]=mx[a]=0;
}
else if(p!=b)
{
if(ship[b]==a) ++ans, alone[b]=1;
ship[a]=p, mx[a]=val[a][p];
if(ship[p]==a)
{
--ans, alone[p]=0;
if(alone[a]) --ans, alone[a]=0;
}
else if(!alone[a]) ++ans, alone[a]=1;
}
else mx[a]-=c;
}
if(ship[b]==a)
{
int p=0;
for(int j=1; j<=n; ++j) if(val[b][j]>val[b][p]||(val[b][j]==val[b][p]&&tm[b][j]>tm[b][p])) p=j;
if(!p)
{
if(alone[b]) --ans, alone[b]=0;
ship[b]=mx[b]=0;
}
else if(p!=a)
{
if(ship[a]==b) ++ans, alone[a]=1;
ship[b]=p, mx[b]=val[b][p];
if(ship[p]==b)
{
--ans, alone[p]=0;
if(alone[b]) --ans, alone[b]=0;
}
else if(!alone[b]) ++ans, alone[b]=1;
}
else mx[b]-=c;
}
a=read(), b=read(), c=read(), opt[i]=(Operation){a,b,c};
tm[a][b]=tm[b][a]=i;
if((val[a][b]+=c)>=mx[a] && ship[a]!=b)
{
if(ship[ship[a]]==a) ++ans, alone[ship[a]]=1;
mx[a]=val[a][b], ship[a]=b;
}
if((val[b][a]+=c)>=mx[b] && ship[b]!=a)
{
if(ship[ship[b]]==b) ++ans, alone[ship[b]]=1;
mx[b]=val[b][a], ship[b]=a;
}
if(!alone[a]&&ship[a]==b&&ship[b]!=a) ++ans, alone[a]=1;
else if(alone[a]&&ship[ship[a]]==a) --ans, alone[a]=0;
if(!alone[b]&&ship[b]==a&&ship[a]!=b) ++ans, alone[b]=1;
else if(alone[b]&&ship[ship[b]]==b) --ans, alone[b]=0;
printf("%d\n",ans);
}
}
}
int main()
{
// freopen("a2.in","r",stdin);
// freopen("my.out","w",stdout);
for(int Case=read(); Case--; )
{
n=read(), K=read(), m=read();
if(m==K) {Subtask2::Main(); continue;}
if(n<=1000) {Subtask1::Main(); continue;}
Subtask3::Main();
// for(int i=1; i<=K; ++i) opt[i]=(Operation){read(),read(),read()};
}
return 0;
}
B
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 400000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
#define mod (1000000007)
typedef long long LL;
const int N=5e5+5,M=4e5+5;
int n,m,lim,pw2[N],pw10[N],Enum,H[N],nxt[M],to[M],p[N];
bool vic,use[N];
char IN[MAXIN],*SS=IN,*TT=IN;
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline void AddEdge(int u,int v)
{
if(u<v) std::swap(u,v);
to[++Enum]=v, nxt[Enum]=H[u], H[u]=Enum;//big->small
}
inline bool Check(int v1,int v2)
{
for(int i=0,f=1; i<=n; ++i)
if((v1>>i&1)^(v2>>i&1))
if(f) f=0;
else return 0;
return 1;
}
inline bool OK(int x,int val)
{
for(int i=H[x]; i; i=nxt[i])
if(!Check(p[to[i]],val)) return 0;
return 1;
}
void DFS(int now,LL ans)
{
if(vic) return;
if(now==lim) {vic=1, printf("%lld\n",ans%mod); return;}
for(int x=0; x<lim; ++x)
if(!use[x] && OK(now,x))
{
use[x]=1, p[now]=x;
DFS(now+1,ans+1ll*x*pw10[now]%mod);
if(vic) return;
use[x]=0;
}
}
int main()
{
// freopen("b1.in","r",stdin);
// freopen(".out","w",stdout);
pw10[0]=1;
for(int i=0; i<=18; ++i) pw2[i]=1<<i;
for(int i=1; i<=pw2[12]/*pw2[18]*/; ++i) pw10[i]=1ll*pw10[i-1]*10%mod;
for(int Case=read(); Case--; )
{
n=read(), m=read(), Enum=vic=0, lim=pw2[n];
for(int i=1; i<=lim; ++i) H[i]=0;
for(int i=1; i<=m; ++i) AddEdge(read()-1,read()-1);
DFS(0,0);
for(int i=0; i<lim; ++i) use[i]=0;
}
return 0;
}
C
#include <cstdio>
#include <cctype>
#include <assert.h>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 400000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
#define mod (1000000007)
typedef long long LL;
const int N=1e5+5,M=4e5+5;
int n,m,Enum,H[N],nxt[M],to[M],sz[N],sum[N],sz2[N],sum2[N],sz3[N],sum3[N];
LL Ans;
char IN[MAXIN],*SS=IN,*TT=IN;
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline void AddEdge(int u,int v)
{
to[++Enum]=v, nxt[Enum]=H[u], H[u]=Enum;
to[++Enum]=u, nxt[Enum]=H[v], H[v]=Enum;
}
namespace Subtask1
{
const int N=4e6+5,M=N<<1;
int Enum,H[N],nxt[M],to[M],sz[N],sum[N];
LL Ans;
inline void AddEdge(int u,int v)
{
// printf("%d->%d\n",u,v);
to[++Enum]=v, nxt[Enum]=H[u], H[u]=Enum;
to[++Enum]=u, nxt[Enum]=H[v], H[v]=Enum;
}
void DFS(int x,int f)
{
sz[x]=1; LL tmp=0;
for(int v,i=H[x]; i; i=nxt[i])
if((v=to[i])!=f) DFS(v,x), sz[x]+=sz[v], tmp+=sum[v];
sum[x]=(int)((tmp+sz[x])%mod);
tmp=0;
for(int v,i=H[x]; i; i=nxt[i])
if((v=to[i])!=f) tmp+=1ll*(sz[x]-sz[v])*sum[v]%mod;
Ans+=tmp%mod;
}
void Main()
{
for(int i=1; i<n; ++i)
for(int u=read(),v=read(),j=0; j<m; ++j) AddEdge(j*n+u,j*n+v);
for(int i=1,a,b; i<m; ++i) a=read()-1,b=read()-1,AddEdge(b*n+read(),a*n+read());//mmp忘了
DFS(1,1);
printf("%lld\n",Ans%mod);
}
}
void DFS(int x,int f)
{
sum[x]=0, sz[x]=1; LL tmp=0;
for(int v,i=H[x]; i; i=nxt[i])
if((v=to[i])!=f) DFS(v,x), sz[x]+=sz[v], tmp+=sum[v];
sum[x]=(int)((tmp+sz[x])%mod);
tmp=0;
for(int v,i=H[x]; i; i=nxt[i])
if((v=to[i])!=f) tmp+=1ll*(sz[x]-sz[v])*sum[v]%mod;
Ans+=tmp%mod;
}
void DFS2(int x,int f)
{
LL tmp=0,size=sz3[x]+1;
for(int v,i=H[x]; i; i=nxt[i])
if((v=to[i])!=f) DFS(v,x), size+=sz[v], tmp+=sum[v];
sz[x]=(int)(size%mod);
sum[x]=(int)((tmp+sz[x]+sum3[x])%mod);
tmp=0;
for(int v,i=H[x]; i; i=nxt[i])
if((v=to[i])!=f) tmp+=1ll*(sz[x]-sz[v])*sum[v]%mod;
Ans+=tmp%mod;
}
int main()
{
freopen("c3.in","r",stdin);
// freopen(".out","w",stdout);
n=read(), m=read();
if(1ll*n*m<=4e6) {Subtask1::Main(); return 0;}
for(int i=1; i<n; ++i) AddEdge(read(),read());
DFS(1,1), Ans=Ans*(m-1)%mod;
sum2[1]=sum[1], sz2[1]=sz[1];
for(int i=1,a,b,u,v; i<m; ++i)
{
a=read(), b=read(), u=read(), v=read();
if(!sz2[v]) DFS(v,v);
sz3[u]+=sz2[v], sz3[u]>=mod&&(sz3[u]-=mod);
sum3[u]+=(sum2[v]+sz2[v])%mod, sum3[u]>=mod&&(sum3[u]-=mod);
}
DFS2(1,1);
printf("%lld\n",Ans%mod);
return 0;
}
8.8 正睿暑期集训营 Day5的更多相关文章
- 8.10 正睿暑期集训营 Day7
目录 2018.8.10 正睿暑期集训营 Day7 总结 A 花园(思路) B 归来(Tarjan 拓扑) C 机场(凸函数 点分治) 考试代码 A B C 2018.8.10 正睿暑期集训营 Day ...
- 8.6 正睿暑期集训营 Day3
目录 2018.8.6 正睿暑期集训营 Day3 A 亵渎(DP) B 绕口令(KMP) C 最远点(LCT) 考试代码 A B C 2018.8.6 正睿暑期集训营 Day3 时间:5h(实际) 期 ...
- 8.9 正睿暑期集训营 Day6
目录 2018.8.9 正睿暑期集训营 Day6 A 萌新拆塔(状压DP) B 奇迹暖暖 C 风花雪月(DP) 考试代码 A B C 2018.8.9 正睿暑期集训营 Day6 时间:2.5h(实际) ...
- 8.7 正睿暑期集训营 Day4
目录 2018.8.7 正睿暑期集训营 Day4 A 世界杯(贪心) B 数组(线段树) C 淘汰赛 考试代码 A B C 2018.8.7 正睿暑期集训营 Day4 时间:5h(实际) 期望得分:. ...
- 8.5 正睿暑期集训营 Day2
目录 2018.8.5 正睿暑期集训营 Day2 总结 A.占领地区(前缀和) B.配对(组合) C 导数卷积(NTT) 考试代码 T1 T2 T3 2018.8.5 正睿暑期集训营 Day2 时间: ...
- 8.4 正睿暑期集训营 Day1
目录 2018.8.4 正睿暑期集训营 Day1 A 数对子 B 逆序对 C 盖房子 考试代码 A B C 2018.8.4 正睿暑期集训营 Day1 时间:4.5h(实际) 期望得分:30+50+3 ...
- 7.30 正睿暑期集训营 A班训练赛
目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...
- 8.9 正睿暑期集训营 Day6 C 风花雪月(DP)
题目链接 完整比赛在这儿. 杜老师tql . 求期望要抽卡的次数,也就是求期望经历了多少不满足状态.而每个不满足的状态对答案的贡献为\(1\),所以可以直接算概率.即\(Ans=\sum_{不满足状态 ...
- 正睿OI集训游记
什么嘛....就是去被虐的... 反正就是难受就是了.各种神仙知识点,神仙题目,各式各样的仙人掌..... 但是还是学会了不少东西...... 应该是OI生涯最后一次集训了吧.... 这次的感言还是好 ...
随机推荐
- docker 时区设置
今天查问题的时候发现 在对时间 格式化为 时间戳的时候,time.mktime(time.strptime('20170609-15:00:00','%Y%m%d-%H:%M:%S')) 发现测试环境 ...
- 一个ssm综合小案例-商品订单管理-第一天
项目需求分析: 功能需求:登录,商品列表查询,修改 项目环境及技术栈: 项目构成及环境: 本项目采用 maven 构建 环境要求: IDEA Version: 2017.2.5 Tomcat Vers ...
- css框架,一把锋利的剑
CSS 框架是一系列 CSS 文件的集合体,包含了基本的元素重置,页面排版.网格布局.表单样式.通用规则等代码块,用于简化web前端开发的工作,提高工作效率. 产生原因 互联网行业已经发展了多年,浏览 ...
- [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。
解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...
- Miller_Rabin 素数测试
费马定理的逆定理几乎可以用来判断一个数是否为素数,但是有一些数是判断不出来的,因此,Miller_Rabin测试方法对费马的测试过程做了改进,克服其存在的问题. 推理过程如下(摘自维基百科): 摘自另 ...
- TensorFlow 从零到helloWorld
目录 1.git安装与使用 1.1 git安装 1.2 修改git bash默认路径 1.3 git常用操作 2.环境搭建 2.1 tensorflow安装 2.2 CUDA安装 2.3 ...
- Jenkins 安装及使用
jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作. 可以用它做网站代码提交,更新. 1,安装 首先确保目标机器上装有 java jdk 版本最好在 1.6 以上,小编使用的是 ...
- JVM 垃圾回收算法及案例分析
一. 在说垃圾回收算法之前,先谈谈JVM怎样确定哪些对象是“垃圾”. 1.引用计数器算法: 引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器- ...
- jquery-easyui:格式化列
主框架页面: 在主界面区会加载西区菜单点击的URL内容. <!DOCTYPE html> <html> <head> <meta charset=" ...
- GET和POST两种基本请求方法的区别(转载)
get与post请求的区别: 通常回答: GET在浏览器回退时是无害的,而POST会再次提交请求. GET产生的URL地址可以被Bookmark,而POST不可以. GET请求会被浏览器主动cache ...