集训前复习

Kruskal

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
int n,m,ans,fa[5001];
struct bian{
    int from,to,v;
}len[200010];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
bool cmp(bian a,bian b){
    return a.v < b.v;
}
int find(int x){
    if(x == fa[x])
        return x;
    else return fa[x] = find(fa[x]);
}
int main()
{
    freopen("kru.in","r",stdin);
    freopen("kru.out","w",stdout);
    n = fd(),m = fd();
    for(re int i=1;i<=n;++i)
        fa[i] = i;
    for(re int i=1;i<=m;++i)
        len[i].from = fd(),len[i].to = fd(),len[i].v = fd();
    sort(len+1,len+1+m,cmp);
    for(re int i=1;i<=m;++i){
        int fa1 = find(len[i].from),fa2 = find(len[i].to);
        if(fa1 != fa2){
            fa[fa1] = fa2;
            ans += len[i].v;
        }
    }
    printf("%d",ans);
    return 0;
}

Prim

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
#define inf 19260817
const int maxn = 2*1e5+5;
int n,m,now,cnt,ans,head[maxn<<1],dis[maxn],vis[maxn];
struct bian{
    int to,next,v;
}len[maxn<<1];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
void add(int from,int to,int v){
    len[++cnt].v = v;
    len[cnt].to = to;
    len[cnt].next = head[from];
    head[from] = cnt;
}
int main()
{
    n = fd(),m = fd();
    for(re int i=1;i<=m;++i){
        int from = fd(),to = fd(),v = fd();
        add(from,to,v),add(to,from,v);
    }
    for(re int i=1;i<=n;++i)
        dis[i] = inf,vis[i] = 0;
    dis[1] = 0;
    for(re int k=head[1];k;k=len[k].next){
        int to = len[k].to,v = len[k].v;
        dis[to] = min(dis[to],dis[1]+v);
    }
    now = 1;
    for(re int i=1;i<=n-1;++i){
        int minn = inf;
        vis[now] = 1;
        for(re int j=1;j<=n;++j)
            if(!vis[j]&&minn>dis[j])
                minn = dis[j],now = j;
        //遍历n个点,保证每次选不同的点,一共选n-1次.
        ans += minn;
        for(re int j=head[now];j;j=len[j].next){
            int to = len[j].to,v = len[j].v;
            if(vis[to]) continue;
            dis[to] = min(dis[to],v);//dis可理解为加入生成树的最小代价.
        }
    }
    printf("%d",ans);
    //用kru理解,手动模拟贪心选小边再选大边的‘hack‘,感性证明.
    return 0;
}

DJ:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
#define e exit(0);
#define re register
#define inf 2147483647
const int maxn = 2*1e5+5;
int n,m,s,cnt,head[maxn],dis[maxn],vis[maxn];
struct bian{
    int to,next,v;
}len[maxn];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
void add(int from,int to,int v){
    len[++cnt].v = v;
    len[cnt].to = to;
    len[cnt].next = head[from];
    head[from] = cnt;
}
void dj(int s){
    for(re int i=1;i<=n;++i)
        dis[i] = inf,vis[i] = 0;
    dis[s] = 0;
    priority_queue<pair<int,int> > q;
    q.push(make_pair(0,s));
    while(q.size()){
        int now = q.top().second;
        q.pop();
        if(vis[now]) continue;
        vis[now] = 1;
        for(re int k=head[now];k;k=len[k].next){
            int to = len[k].to,v = len[k].v;
            if(dis[to] > dis[now]+v){
                dis[to] = dis[now]+v;
                q.push(make_pair(-dis[to],to));
            }
        }
    }
}
int main()
{
    freopen("dj.in","r",stdin);
    freopen("dj.out","w",stdout);
    n = fd(),m = fd(),s = fd();
    for(re int i=1;i<=m;++i){
        int from = fd(),to = fd(),v = fd();
        add(from,to,v);
    }
    dj(s);
    for(re int i=1;i<=n;++i){
        if(i == s) dis[i] = 0;
        printf("%d ",dis[i]);
    }
    return 0;
}

Spfa

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
#define e exit(0);
#define re register
#define inf 2147483647
const int maxn = 2*1e5+5;
int n,m,s,cnt,head[maxn],dis[maxn],vis[maxn];
struct bian{
    int to,next,v;
}len[maxn];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
void add(int from,int to,int v){
    len[++cnt].v = v;
    len[cnt].to = to;
    len[cnt].next = head[from];
    head[from] = cnt;
}
void dj(int s){
    for(re int i=1;i<=n;++i)
        dis[i] = inf,vis[i] = 0;
    dis[s] = 0;
    queue<int> q;
    q.push(s);
    vis[s] = 1;
    while(q.size()){
        int now = q.front();
        q.pop();
        vis[now] = 0;
        for(re int k=head[now];k;k=len[k].next){
            int to = len[k].to,v = len[k].v;
            if(dis[to] > dis[now]+v){
                dis[to] = dis[now]+v;
                if(!vis[to]){
                    q.push(to);
                    vis[to] = 1;
                }
            }
        }
    }
}
int main()
{
    n = fd(),m = fd(),s = fd();
    for(re int i=1;i<=m;++i){
        int from = fd(),to = fd(),v = fd();
        add(from,to,v);
    }
    dj(s);
    for(re int i=1;i<=n;++i){
        if(i == s) dis[i] = 0;
        printf("%d ",dis[i]);
    }
    return 0;
}

Trie:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
const int maxn = 10000*51*26+5;
char a[60];
int n,m,cnt,root,trie[maxn][27],vis[maxn],check[maxn];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
void insert(char a[]){
    int lenth = strlen(a);
    root = 0;
    for(re int i=0;i<lenth;++i){
        int x = a[i]-‘a‘;
        if(!trie[root][x])
            trie[root][x] = ++cnt;
        root = trie[root][x];
    }
    vis[root] = 1;
}
int find(char a[]){
    int lenth = strlen(a);
    root = 0;
    for(re int i=0;i<lenth;++i){
        int x = a[i]-‘a‘;
        if(!trie[root][x])
            return 1;
        root = trie[root][x];
    }
    if(!vis[root])
        return 1;
    if(check[root])
        return 2;
    check[root] = 1;
    return 3;
}
int main()
{
    freopen("trie.in","r",stdin);
    freopen("trie.out","w",stdout);
    n = fd();
    for(re int i=1;i<=n;++i){
        scanf("%s",a);
        insert(a);
    }
    m = fd();
    for(re int i=1;i<=m;++i){
        scanf("%s",a);
        int flag = find(a);
        if(flag == 1)
            printf("WRONG\n");
        if(flag == 2)
            printf("REPEAT\n");
        if(flag == 3)
            printf("OK\n");
    }
    return 0;
}

LCA( bz )

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
const int maxn = 5*1e5+5;
int n,m,s,cnt,head[maxn],h[maxn],fa[maxn],bz[maxn][24];
struct bian{
    int to,next,v;
}len[maxn<<1];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
void add(int from,int to){
    len[++cnt].to = to;
    len[cnt].next = head[from];
    head[from] = cnt;
}
void dfs(int x){
    for(re int k=head[x];k;k=len[k].next){
        int to = len[k].to;
        if(!h[to]){
            fa[to] = x;
            h[to] = h[x]+1;
            dfs(to);
        }
    }
}
void makebz(){
    for(re int i=1;i<=n;++i)
        bz[i][0] = fa[i];
    for(re int j=1;j<=19;++j)
        for(re int i=1;i<=n;++i)
            bz[i][j] = bz[bz[i][j-1]][j-1];
}
int LCA(int x,int y){
    if(h[x] < h[y])
        swap(x,y);
    for(re int j=19;j>=0;--j)
        if(h[bz[x][j]] >= h[y])
            x = bz[x][j];
    if(x == y)
        return x;
    for(re int j=19;j>=0;--j)
        if(bz[x][j] != bz[y][j])
            x = bz[x][j],y = bz[y][j];
    return fa[x];
}
int main()
{
    freopen("Lca.in","r",stdin);
    freopen("Lca.out","w",stdout);
    n = fd(),m = fd(),s = fd();
    for(re int i=1;i<=n-1;++i){
        int from = fd(),to = fd();
        add(from,to),add(to,from);
    }
    fa[s] = s,h[s] = 1;
    dfs(s);
    makebz();
    for(re int i=1;i<=m;++i){
        int from = fd(),to =fd();
        printf("%d\n",LCA(from,to));
    }
    return 0;
}

Treearray:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
const int maxn = 5*1e5+5;
int n,m,tree[maxn];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
int lowbit(int x){
    return x&(-x);
}
void add(int id,int v){
    while(id<=n){
        tree[id] += v;
        id += lowbit(id);
    }
}
long long ask(int x){
    long long sum = 0;
    while(x){
        sum += tree[x];
        x -= lowbit(x);
    }
    return sum;
}
int main()
{
    freopen("Treearray.in","r",stdin);
    freopen("Treearray.out","w",stdout);
    n = fd(),m = fd();
    for(re int i=1;i<=n;++i){
        int num = fd();
        add(i,num);
    }
    for(re int i=1;i<=m;++i){
        int flag = fd(),x = fd(),y = fd();
        if(flag == 1)
            add(x,y);
        else if(flag == 2)
            printf("%lld\n",ask(y)-ask(x-1));
    }
    return 0;
}

Treearraycf:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
const int maxn = 5*1e5+5;
int n,m,tree[maxn],val[maxn];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
int lowbit(int x){
    return x&(-x);
}
void add(int x,int v){
    while(x<=n){
        tree[x] += v;
        x += lowbit(x);
    }
}
long long ask(int x){
    long long sum = 0;
    while(x){
        sum += tree[x];
        x -= lowbit(x);
    }
    return sum;
}
int main()
{
    freopen("Treearraycf.in","r",stdin);
    freopen("Treearraycf.out","w",stdout);
    n = fd(),m = fd();
    for(re int i=1;i<=n;++i)
        val[i] = fd();
    for(re int i=1;i<=n;++i)
        add(i,val[i]-val[i-1]);
    for(re int i=1;i<=m;++i){
        int flag = fd();
        if(flag == 1){
            int x = fd(),y = fd(),v = fd();
            add(x,v),add(y+1,-v);//cf理解.
        }
        else if(flag == 2){
            int x = fd();
            printf("%lld\n",ask(x));
        }
    }
    return 0;
}

RMQ:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
const int maxn = 1e6+10;
int n,m,f[maxn][24],logn[maxn];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
int main()
{
    freopen("RMQ.in","r",stdin);
    freopen("RMQ.out","w",stdout);
    n = fd(),m = fd();
    logn[0] = -1;
    for(re int i=1;i<=n;++i)
        f[i][0] = fd(),logn[i] = logn[i>>1]+1;
    for(re int j=1;j<=19;++j)
        for(re int i=1;i+(1<<j)-1<=n;++i)
            f[i][j] = max(f[i][j-1],f[i+(1<<j-1)][j-1]);
    //f[i+(i<<j-1)][j-1];
    for(re int i=1;i<=m;++i){
        int L = fd(),R = fd();
        int id = logn[R-L+1];
        printf("%d\n",max(f[L][id],f[R-(1<<id)+1][id]));
    }
    //f[R-(1<<id)+1];
    return 0;
}

Invfm:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
int n,mod;
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
int qsm(int x,int y){
    int base = 1;
    while(y){
        if(y&1) base = (base%mod*x%mod)%mod;
        x = (x%mod*x%mod)%mod;
        y>>=1;
    }
    return base;
}
int main()
{
    freopen("Ivfm.in","r",stdin);
    freopen("Ivfm.out","w",stdout);
    n = fd(),mod = fd();
    for(re int i=1;i<=n;++i){
        int ans = qsm(i,mod-2);
        ans = (ans%mod+mod)%mod;
        printf("%d\n",ans);
    }
    return 0;
}

Invexgcd:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
int n,x1,y1,x2,y2,mod;
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
void exgcd(int a,int b){
    if(!b){
        x1 = 1;
        y1 = 0;
        return;
    }
    exgcd(b,a%b);
    x2 = x1,y2 = y1;
    x1 = y2;
    y1 = x2 - (a/b)*y2;
}
int main()
{
    freopen("Invexgcd.in","r",stdin);
    freopen("Invexgcd.out","w",stdout);
    n = fd(),mod = fd();
    for(re int i=1;i<=n;++i){
        exgcd(i,mod);
        printf("%d\n",(x1%mod+mod)%mod);
    }
    return 0;
}

Invdt:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
const int maxn = 3*1e6+10;
int n,mod,inv[maxn];
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
int main()
{
    freopen("Invdt.in","r",stdin);
    freopen("Invdt.out","w",stdout);
    n = fd(),mod = fd();
    inv[1] = 1;
    for(re int i=2;i<=n;++i)
        inv[i] = ((1ll*(-inv[mod%i])*(mod/i))%mod+mod)%mod;
    for(re int i=1;i<=n;++i)
        printf("%d\n",inv[i]);
    return 0;
}

Tyfc:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define re register
int a,b,x1,x2,y1,y2;
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
void exgcd(int a,int b){
    if(!b){
        x1 = 1;
        y1 = 0;
        return;
    }
    exgcd(b,a%b);
    x2 = x1,y2 = y1;
    x1 = y2;
    y1 = x2 - a/b*y2;
}
int main()
{
    freopen("Tyfc.in","r",stdin);
    freopen("Tyfc.out","w",stdout);
    a = fd(),b = fd();
    exgcd(a,b);
    x1 = (x1%b+b)%b;
    printf("%d",x1);
    return 0;
}

bdfc:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define e exit(0)
#define re register
int a,b,c,g,x1,y1,x2,y2,x,y;
inline int fd(){
    int s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
int gcd(int x,int y){
    if(!y)
        return x;
    else return gcd(y,x%y);
}
void exgcd(int a,int b){
    if(!b){
        x1 = 1;
        y1 = 0;
        return;
    }
    exgcd(b,a%b);
    x2 = x1,y2 = y1;
    x1 = y2;
    y1 = x2 - a/b*y2;
}
int main()
{
    freopen("bdfc.in","r",stdin);
    freopen("bdfc.out","w",stdout);
    a = fd(),b = fd(),c = fd();
    g = gcd(a,b);
    exgcd(a,b);
    x1 = x1*(c/g),y1 = y1*(c/g);
    for(re int k = 0;k<=100;++k){
        x = x1 + k*(b/g);
        y = y1 - k*(a/g);
        printf("%d %d\n",x,y);
    }
    return 0;
}

CRT:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define e exit(0)
#define re register
#define LL long long
const int maxn = 1010;
long long n,M=1,k,x1,y1,x2,y2,ans,a[maxn],b[maxn];
inline long long fd(){
    long long s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
void exgcd(LL a,LL b){
    if(!b){
        x1 = 1;
        y1 = 0;
        return;
    }
    exgcd(b,a%b);
    x2 = x1,y2 = y1;
    x1 = y2;
    y1 = x2-a/b*y2;
}
int main()
{
    freopen("CRT.in","r",stdin);
    freopen("CRT.out","w",stdout);
    n = fd();
    for(re LL i=1;i<=n;++i){
        a[i] = fd(),b[i] = fd();
        M*=a[i];
    }
    for(re LL i=1;i<=n;++i){
        LL mi = M/a[i];
        exgcd(mi,a[i]);
        k = x1;
        ans += k*mi*b[i];
    }
    ans = ((ans%M)+M)%M;
    printf("%lld",ans);
    //注意最后模数为M.
    return 0;
}

jzqsm:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define e exit(0)
#define re register
#define LL long long
const long long mod = 1e9+7;
long long n,k;
struct jz{
    long long a[101][101];
    jz(){memset(a,0,sizeof(a));}
    inline jz operator*(const jz & b)const{
        jz p;
        for(re LL k=1;k<=n;++k)
            for(re LL i=1;i<=n;++i)
                for(re LL j=1;j<=n;++j)
                    p.a[i][j] = (p.a[i][j]%mod+(1ll*a[i][k]%mod*b.a[k][j]%mod)%mod)%mod;
        return p;
    }
};
inline long long fd(){
    long long s=1,t=0;
    char c=getchar();
    while(c<‘0‘||c>‘9‘){
        if(c==‘-‘)
            s=-1;
        c=getchar();
    }
    while(c>=‘0‘&&c<=‘9‘){
        t=t*10+c-‘0‘;
        c=getchar();
    }
    return s*t;
}
jz qsm(jz x,LL y){
    jz base;
    for(re LL i=1;i<=n;++i)
        base.a[i][i] = 1;
    while(y){
        if(y&1) base = base*x;
        x = x*x;
        y>>=1;
    }
    return base;
}
int main()
{
    freopen("jzqsm.in","r",stdin);
    freopen("jzqsm.out","w",stdout);
    n = fd(),k = fd();
    jz ori;
    for(re LL i=1;i<=n;++i)
        for(re LL j=1;j<=n;++j)
            ori.a[i][j] = fd();
    jz p = qsm(ori,k);
    for(re LL i=1;i<=n;++i){
        for(re LL j=1;j<=n;++j)
            printf("%lld ",p.a[i][j]);
        printf("\n");
    }
    return 0;
}

原文地址:https://www.cnblogs.com/xqysckt/p/11593791.html

时间: 2024-08-11 10:15:11

集训前复习的相关文章

集训前

今天,参加地大的邀请赛,本来是自己领队_Fffm战队出征的,但是队友略坑,此处就不说了.(话说,ACM想组一个好队,真的得志同道合的人啊).算是_Fffm战队,就正式解散了吧.但是自己在暑假集训期间,一定会把他建起来的,加油. 于是临时的,我和DB队拼成了一个队出战.这也算是自己的首战了,按照自己不爆0的初衷,算是这场比赛也可以无悔了.但是第一题,真的是大水哦.自己做了2个多小时,但是还是没有A掉,这就很大程度的影响了后面的题吧.这算是最大的遗憾吧.(今天跟其中一队友,虽然是首次合作,但是感觉还

#15天信息集训前半期总结

//( ̄(工) ̄)您受到了比利一击,HP--,XW++,爽脆极了~#15天信息集训前半期总结 #接下来一段用来刷长度:#include<bits.stdc++.h>#define C getchar()#define ll long long#define mmm 168430090#define mem(a,b) memset(a,b,sizeof(a))#pragma GCC optimize(2)#pragma GCC optimize(1)#pragma GCC optimize(2.

2017暑假集训前总结和规划

距离大一进来已经一年了啊,感觉还是啥也不会,哎,太差了,总结一下这一年都学了写什么吧! 大一寒假开始专题,刷过的有:dp,dfs和bfs,数论(gcd拓展gcd,欧拉定理等等,但是中国剩余定理没学,等复习的时候再学吧),并查集,最短路(bellman-fprd,dijkstra,floyd-warshall,spfa),最小生成树(prim,kruskal),线段树,二分三分 大一下学期有:拓扑排序,基础计算几何(直线线段相交,快速排除实验,跨立实验),矩阵快速幂,博弈基础(nim博弈,威佐夫博

暑期前复习

图论 最短路: spfa Floyd Dijkstra 生成树: kruskal prim 强联通分量: tarjan ko 并查集: LCA: 倍增 树剖

给自己端上一杯热咖啡

昨天下午到今天下午,我一直在做一件事情,那就是照着考纲复习考试内容.我要考的是上海市java二级.这一次我选择了, 从后往前复习.难点和重点往往都在考纲的后面.这些被列出来的考纲,没有什么我不熟悉的知识点.但是总有那种提笔忘字的感觉! 不精通才是我学习每门语言的不足之处. 无疑,我的大多数不足都被放大了.可是这次,我再也没有感觉到从前考试的无所适从.相反,我十分冷静.只要是碰到自己熟悉的 知识点,我都会全力再次理解,对需要敲的代码,我耐心地敲上去.自我检测真是个极好的办法,通过这个你能深刻认识到

[转]Java多线程干货系列—(一)Java多线程基础

Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境 2 进程:执行中的程序一个进程至少包含一个线程 3 单线程:程序中只存在一个线程,实际上主方法就是一个主线程 4

Java多线程基础(一)

线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境 2 进程:执行中的程序一个进程至少包含一个线程 3 单线程:程序中只存在一个线程,实际上主方法就是一个主线程 4 多线程:在一个程序中运行多个任务目的是更好地使用CPU资源 5  在Java语言中,引入对象互斥锁的概念,保证共享数据操作的完整性. 每个对象都对应于一个可称为"互斥锁"的标记,这个标记保证在任一时刻,只能有一个线程访问对象用关键字synchr

2017年山东省ACM省赛总结

----但求努力到问心无愧 这次比赛我们是作为友谊队去的,本来我们队选拔赛成绩并不是很好,是去不了的,但伟大的教主大人牛逼地又要到了几个省赛友谊队的名额,才让我们有这次见识大场面比赛的机会,在这里我们先要感谢教主,还有就是感谢陪同的老师们,还有一直忙里忙外的负责人学长和同学们. 然后就是检讨我们自己了.这次比赛我们真的打的很不好,虽然比赛方有好多地方弄得有点欠缺.首先是热身赛,开始我们以为会有好多题,发下题目来看原来只有3个,好有三个题就三个题,那就做,但是我们还没开始看题,就意识到一个问题:这

多线程并发编程

前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境 2 进程:执行中的程序一个进程至少包含一个线程 3 单线程:程序中只存在一个线程,实际上主方法就是一个主线程 4 多线程:在一个程序中运行多个任务目的是更好地使用CPU资源 线程的实现 继承Thread类 在j