• 11.15


    https://codeforces.com/gym/102411/problem/M

    ICPC 2019-2020 North-Western Russia Regional Contest

    //A
    #include<iostream>
    #include<cstdio>
    using namespace std;
    int main(){
        int a,b,n;
        int x,y,ans=0;
        scanf("%d%d%d",&a,&b,&n);
        x=(n-b)%(b-a);
        y=(n-b)/(b-a);
        if(x)x=3;
        else x=1;
        ans=2*y+x;
        printf("%d
    ",ans);
        return 0;
    }
    //E
    #include<iostream>
    #include<cstdio>
    #define maxn 200010
    using namespace std;
    int n,m,dep[maxn],head[maxn],num,a[maxn],fa[maxn];
    struct node{
        int to,pre;
    }e[maxn*2];
    void Insert(int from,int to){
        e[++num].to=to;
        e[num].pre=head[from];
        head[from]=num;
    }
    void dfs(int now,int father){
        dep[now]=dep[father]+1;
        fa[now]=father;
        for(int i=head[now];i;i=e[i].pre){
            int to=e[i].to;
            if(to==father)continue;
            dfs(to,now);
        }
    }
    int main(){
        freopen("Cola.txt","r",stdin); 
        scanf("%d%d",&n,&m);
        int x,y;
        for(int i=1;i<n;i++){
            scanf("%d%d",&x,&y);
            Insert(x,y);
            Insert(y,x);
        }
        for(int i=1;i<=m;i++)scanf("%d",&a[i]);
        if(m==1){
            puts("YES");
            printf("%d
    ",a[1]);
            return 0;
        }
        dfs(a[1],0);
        int now=a[2];
        for(int i=3;i<=m;i++){
            if(dep[a[i]]>dep[now])now=a[i];
        }
        int depx=(dep[a[1]]+dep[now])/2;
        if((dep[now]-dep[a[1]])%2!=0){
            puts("NO");
            return 0;
        }
        int depnow=dep[now];
        while(depnow>depx){
            now=fa[now];
            depnow=dep[now];
        }
        dfs(now,0);
        int dis=dep[a[1]]-1;
        for(int i=2;i<=m;i++){
            if(dep[a[i]]-1!=dis){
                puts("NO");
                return 0;
            }
        }
        puts("YES");
        printf("%d
    ",now);
        return 0;
    }
    //M
    //充满魔性的a了一发
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define maxn 2010
    #define mod1 2353733
    #define mod2 12377
    using namespace std;
    int Case,n,a[maxn],b[maxn];
    int tim[10000010];
    long long ans;
    int Hash(int x){
        return (1LL*x*107%mod1+1LL*x*23%mod1+1LL*x*37%mod1)%mod1;
    }
    int main(){
        scanf("%d",&Case);
        while(Case--){
            memset(tim,0,sizeof(tim));
            ans=0;
            scanf("%d",&n);
            for(int i=1;i<=n;i++){
                scanf("%d",&a[i]);
                b[i]=a[i]*2;
            }
            for(int i=2;i<n;i++){//ö¾ÙÖмäÊýµÄλÖà 
                int hs=Hash(a[i-1]);
                tim[hs]++;
                for(int j=i+1;j<=n;j++){
                    if(a[j]<b[i]){
                        int hsnow=Hash(b[i]-a[j]);
                        ans=ans+tim[hsnow];
                    }
                }
            }
            cout<<ans<<endl;
        }
        return 0;
    } 
  • 相关阅读:
    eclipse常用快捷键
    .net操作Excel快速
    treeview使用sort以后取消排序
    行转列,参数是文本类型
    easyui分页控件汉化扩展
    在子页面中获取父frameset中元素
    easyui-datagrid自定义分页控件样式
    字符串和图片转换
    VS2012设置随笔
    DevExpress之GridControl
  • 原文地址:https://www.cnblogs.com/thmyl/p/11869175.html
Copyright © 2020-2023  润新知