zoukankan      html  css  js  c++  java
  • cf掉分记——Avito Code Challenge 2018

    再次作死的打了一次cf的修仙比赛感觉有点迷。。

    还好掉的分不多(原本就太低没法掉了QAQ)

    把会做的前三道水题记录在这。。

    A: Antipalindrome

    emmmm...直接暴力枚举

    code:

    //By Menteur_Hxy
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    
    int n,ans;
    char ch[100];
    
    bool jud(int l,int len) {
    	int r=l+len-1;
    	for(int i=0;i<(len>>1);i++) 
    		if(ch[l+i]!=ch[r-i]) return 1;
    	return 0;
    }
    
    bool check(int len) {
    	for(int i=1;i+len-1<=n;i++) 
    		if(jud(i,len)) return 1;
    	return 0;
    }
    
    int main() {
    	scanf("%s",ch+1);
    	n=strlen(ch+1);
    	for(int i=n;i>1;i--) {
    		if(check(i)) {ans=i;break;}
    	}
    	if(!ans) printf("0");
    	else printf("%d",ans);
    	return 0;
    }
    

    B: Businessmen Problems

    用map直接上记下每个元素的最大值最后加起来

    code:

    //By Menteur_Hxy
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <map>
    #define M(a,b) memset(a,(b),sizeof(a))
    #define F(i,a,b) for(register int i=(a);i<=(b);i++)
    #define LL long long
    using namespace std;
    
    LL rd() {
    	LL x=0,fla=1; char c=' ';
    	while(c<'0'||c>'9') {c=getchar();if(c=='-') fla=-fla;}
    	while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
    	return x*fla;
    }
    
    map <int,int> M;
    
    int main() {
    	int n=rd();
    	F(i,1,n) {
    		int x=rd(),y=rd();
    		M[x]=y;
    	}
    	int m=rd();
    	F(i,1,m) {
    		int x=rd(),y=rd();
    		if(M.count(x)) {
    			M[x]=max(M[x],y);
    		}else {
    			M[x]=y;
    		}
    	}
    	LL ans=0;
    	for(map<int,int>::iterator it=M.begin();
    		it!=M.end();it++) {
    		if(it->second) ans+=it->second;
    	}
    	printf("%lld",ans);
    	return 0;
    }	
    

    C: Useful Decomposition

    题面略迷。。

    大概意思是找到一种方式 分配他所给你的一些边 使组成一些简单路径要求每两条简单路径都有一个公共点

    保证给出的边组成一棵树,输出路径数和每条路径的起点和终点 (顺序无所谓)这么水的题 题面就让我看了半天QAQ

    显然考虑只有一个公共点,记录每个点连着几条边然后分情况:

    1.如果有两个点连着超过两条边说明无法完成

    2.如果仅有一个点连边超过两条 答案为以它为端点的所有简单路径

    3.如果无连边超过两条的那么只有一条简单路径 且两个只连一条边的点为两端点

    code: (略暴力)

    //By Menteur_Hxy
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <map>
    #include <vector>
    #define M(a,b) memset(a,(b),sizeof(a))
    #define F(i,a,b) for(register int i=(a);i<=(b);i++)
    #define LL long long
    using namespace std;
    
    inline LL rd() {
    	LL x=0,fla=1; char c=' ';
    	while(c>'9'|| c<'0') {if(c=='-') fla=-fla; c=getchar();}
    	while(c<='9' && c>='0') x=x*10+c-'0',c=getchar();
    	return x*fla;
    }
    
    inline void out(LL x){
        int a[25],wei=0;
        if(x<0) putchar('-'),x=-x;
        for(;x;x/=10) a[++wei]=x%10;
        if(wei==0){ puts("0"); return;}
        for(int j=wei;j>=1;--j) putchar('0'+a[j]);
        putchar('
    ');
    }
    
    const int N=10010;
    const int INF=0x3f3f3f3f;
    int n,rt,cnt;
    int du[N],head[N];
    
    struct edges{
    	int to,next;
    }e[N<<2];
    
    void add(int x,int y) {
    	e[++cnt].next=head[x];
    	e[cnt].to=y;
    	head[x]=cnt;
    }
    
    int dfs(int x,int pre) {
    	for(int i=head[x];i;i=e[i].next) {
    		int v=e[i].to;
    		if(v!=pre) return dfs(v,x);
    	}
    	return x;
    }
    
    int main() {
    	n=rd();
    	F(i,1,n-1) {
    		int u=rd(),v=rd();
    		add(u,v);add(v,u);
    		du[u]++,du[v]++;
    	}
    	F(i,1,n) if(du[i]>2) rt=i;
    	F(i,1,n) if(du[i]>2&&i!=rt) {
    		printf("No");
    		return 0;
    	}
    	if(!rt) {
    		printf("Yes
    1
    ");
    		F(i,1,n) if(du[i]==1) printf("%d ",i);
    		return 0;
    	}
    	printf("Yes
    %d
    ",du[rt]);
    	for(int i=head[rt];i;i=e[i].next) {
    		int v=e[i].to;
    		printf("%d %d
    ",rt,dfs(v,rt));
    	}
    	return 0;
    }
    

    后面回头再说吧(不会做QAQ


    版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.cnblogs.com/Menteur-Hxy/p/9099644.html

    版权声明:本文为博主原创文章,未经博主允许不得转载。 博主:https://www.cnblogs.com/Menteur-Hxy/
  • 相关阅读:
    令Django 视图有默认 login_required
    令Django 视图有默认 login_required
    Python 资源
    Python 资源
    小米3 日历 同步google日历
    小米3 日历 同步google日历
    sql语句 case
    DDOSIM安装
    DDos工具tfn2k的编译
    RPM和YUM
  • 原文地址:https://www.cnblogs.com/Menteur-Hxy/p/9099644.html
Copyright © 2011-2022 走看看