• Codeforces Round #269 (Div. 2) A B C


    A:MUH and Sticks

    水题

    #include<bits/stdc++.h>
    using namespace std;
    
    int a[10]={0};
    
    int main(){
    	int c;
    	for(int i=0;i<6;i++){
    		cin>>c;
    		a[c]++;
    	}
    	bool flag=false;
    	for(int i=1;i<=9;i++){
    		if(a[i]>=4) {
    			a[i]-=4;
    			flag=true;
    		}
    	}
    	if(!flag) cout<<"Alien
    ";
    	else{
    		flag=false;
    		for(int i=1;i<=9;i++)
    			if(a[i]==2) flag=true;
    		if(flag) cout<<"Elephant
    ";
    		else cout<<"Bear
    ";
    	}
    	return 0;
    }
    

      

    B:MUH and Important Things

    只要难度相同的个数大于三个,或者存在至少两种难度的个数为2

    如果某个难度相同的数大于等于有三个,那么可以正序、逆序、乱序(从第二个开始输出)

    如果存在两种或以上难度的个数为2,将正序、逆序、一个正序其余逆序

    #include<bits/stdc++.h>
    using namespace std;
     
    int n;
    vector<int> a[2100];
    int p[2100]={0};
    int main(){
    	cin>>n;
    	int c;
    	for(int i=1;i<=n;i++){
    		cin>>c;
    		a[c].push_back(i);
    	}
    	int sum=1;
    	for(int i=1;i<=2000;i++){
    		if(a[i].size()>0)sum*=a[i].size();
    		if(sum>=3) break;
    	}
    	if(sum>=3){
    		cout<<"YES
    ";
    		bool flag=false;
    		for(int i=0;i<=2000;i++){
    			for(int j=0;j<a[i].size();j++){
    				cout<<(flag?" ":"")<<a[i][j];
    				flag=true;
    			}
    		}
    		cout<<"
    ";
    		flag=false;
    		for(int i=0;i<=2000;i++){
    			for(int j=a[i].size()-1;j>=0;j--){
    				cout<<(flag?" ":"")<<a[i][j];
    				flag=true;
    			}
    		}
    		cout<<"
    ";
    		flag=false;
    		bool bb=false;
    		for(int i=0;i<=2000;i++){
    			if(bb==true||a[i].size()>2)
    			for(int j=1;j<a[i].size()+1;j++){
    				cout<<(flag?" ":"")<<a[i][j%(a[i].size())];
    				flag=true;
    			}
    			else{
    				if(a[i].size()==2) bb=true;
    				for(int j=0;j<a[i].size();j++){
    					cout<<(flag?" ":"")<<a[i][j];
    					flag=true;
    			 	}
    			}	
    		}
    		cout<<"
    ";
    	}
    	else{
    		cout<<"NO
    ";
    	}
    	return 0;
    }
    

      

    C:MUH and House of Cards

     题意:求n个木棒,可以搭成多少种不同高度的塔,n个木棒全部用完,

    搭成 高度为 i 的塔,需要 d[i] 个木棒,剩余的木棒可以全部放在最底层 每多一个房间需要3个木棒

    所以 (n - d[i])  % 3 == 0 ,那么用n个木棒就可以搭成高度为 i 的塔

    d[i] = d[i - 1] + 3 * i -1;

    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e6+100;
    typedef long long ll;
    ll n;
    ll d[N];
    int main(){
    	cin>>n;
    	d[0]=0;
    	for(int i=1;i<=(int)sqrt(n);i++){
    		d[i]=(ll)i*2+(ll)(i-1)+d[i-1];
    	}
    	int res=0;
    	for(int i=1;i<=(int)sqrt(n);i++){
    		if(n<d[i]) break;
    		ll tmp=n-d[i];
    		if(tmp%3==0) res++;
    	}
    	cout<<res<<"
    ";
    	return 0;
    }
    

      

  • 相关阅读:
    大航海计划
    副业刚需
    【转】iOS学习之适配iOS10
    【原】iOS学习之Masonry第三方约束
    【原】iOS学习之PINCache第三方缓存框架
    【原】iOS学习之苹果原生代码实现Autolayout和VFL语言
    【原】iOS学习之NSDate在项目中的一些类目扩展
    【原】iOS学习之tableView的常见BUG
    【转】iOS开发 -- Apple Pay
    【原】iOS学习之事件处理的原理
  • 原文地址:https://www.cnblogs.com/YJing814/p/11175285.html
Copyright © 2020-2023  润新知