zoukankan      html  css  js  c++  java
  • Codeforces Round #643 (Div. 2)

    比赛链接:https://codeforces.com/contest/1355

    A. Sequence with Digits

    题意

    给你第一个数和k,根据题中所给公式求出第k个数的值

    思路

    直接暴力,但中间会出现最大最小字符相乘为0的情况,然后break掉就不会超时了

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t;
    ll mi,mx,n,k;
    void solve(ll a)
    {
    	mi=9,mx=0;
    	while(a)
    	{
    		mi=min(mi,a%10);
    		mx=max(mx,a%10);
    		a/=10;	
    	}	
    }
    int main()
    {
    	cin>>t;
    	while(t--)
    	{
    		cin>>n>>k;
    		for(int i=1;i<k;i++)
    		{
    			solve(n);
    			n+=mi*mx;
    			if(mi*mx==0) break;
    		}
    		cout<<n<<endl;
    	}
    	
    	return 0;
     }
     
    

    B. Young Explorers

    题意

    题中所给数组表示第i个人所在的组最少有(e_i)个人

    思路

    对数组中数的大小进行统计,然后分配

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N = 2e5+5;
    #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    ll t,n,a[N],num[N];
    
    int main()
    {
    	cin>>t;
    	while(t--){
    		cin>>n;
    		for(int i=1;i<=n;i++) num[i]=0;
    		for(int i=1;i<=n;i++){
    			cin>>a[i];
    			num[a[i]]++;
    		} 
    		ll ans=0,tmp=0;
    		for(int i=1;i<=n;i++){
    			ans+=(tmp+num[i])/i;
    			tmp=(tmp+num[i])%i;
    		}
    		cout<<ans<<'
    ';
    	}
    	
    	return 0;
     }
    

    C. Count Triangles

    题意

    三个数x,y,z的范围是A≤x≤B≤y≤C≤z≤D,求用该三条边最多可以构成三角形的个数

    思路

    x+y的取值范围在[A+B,B+C]中,但在这范围之间由于x,y取值的变化会存在某一个值重复出现的情况,所以还要考虑某一个数重复出现的次数,
    然后在[C,D]范围内找到第三条边满足构成三角形的情况,然后相乘即可

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    ll t,a,b,c,d;
     
    int main()
    {
    	cin>>a>>b>>c>>d;
    	ll ans=0,num;
    	ll l=d-c+1;
    	for(ll i=a+b;i<=b+c;i++){
    		if(i>a+b&&i<b+c){
    			num=min(i-(a+b)+1,(b+c)-i+1);
    			num=min(num,min(b-a+1,c-b+1));
    		}
    		else num=1; 
    		ll tmp=i-c;
    		tmp=max(0ll,tmp);
    		tmp=min(tmp,l);
    		ans+=(tmp*num);
    	}
    	cout<<ans<<'
    ';
    	
    	return 0;
     }
    

    D. Game With Array

    题意

    大小为n的数组和为s,问是否存在一个大小为n数组的子数组和为k

    思路

    观察可以发现s/n大于1就存在反之不存在,构建数组只要将前n-1项全赋值为1即可,然后k值取s/2就行,写完c时间不够了,没交上。。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N = 2e5+5;
    #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    ll n,s;
    
    int main()
    {
    	cin>>n>>s;
    	int num=s/n;
    	if(num>1){
    		puts("YES");
    		ll tmp=s;
    		for(int i=1;i<=n-1;i++){
    			cout<<"1 ";
    			s--;
    		}
    		cout<<s<<'
    ';
    		cout<<(tmp+1)/2<<'
    ';
    	}
    	else puts("NO");
    	
    	return 0;
     }
    
    七月在野,八月在宇,九月在户,十月蟋蟀入我床下
  • 相关阅读:
    Unity The Method Signature Matching Rule
    Unity The Property Matching Rule
    Unity The Type Matching Rule
    Unity The Custom Attribute Matching Rule
    Unity The Member Name Matching Rule
    Unity No Policies
    Unity The Return Type Matching Rule
    Unity The Parameter Type Matching Rule
    Unity The Namespace Matching Rule
    关于TSQL递归查询的(转)
  • 原文地址:https://www.cnblogs.com/voids5/p/12902757.html
Copyright © 2011-2022 走看看