ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Codeforces Round #774 (Div. 2) A-C

2022-03-06 01:03:38  阅读:159  来源: 互联网

标签:774 int ll Codeforces long printf Div include scanf


A

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=1e6+10,INF=1e8;
int a[N];
int main()
{
	int t;
	scanf("%d", &t);
	while(t--)
	{
		ll n,s;
		scanf("%lld%lld", &n,&s);
		n *= n;
		printf("%lld\n", s / n);
	}
	return 0;
}

B

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=2e5+10,INF=1e8;
ll a[N];
int main()//红名大佬的题解
{
	int t;
	scanf("%d", &t);
	while(t--)
	{
        int n,f=0;
        scanf("%d", &n);
        for (int i = 1; i <= n;i++)
        {
            scanf("%lld", &a[i]);
        }
        sort(a + 1, a + 1 + n);
        ll l = 2, r = n, ans = a[n] - a[1] - a[2];
        while(l<r)
        {
            if(ans>0) {
                f = 1;
                break;
            }
            ans += a[--r] - a[++l];
        }
        if(f)
            printf("YES\n");
        else
            printf("NO\n");
    }
	return 0;
}
/*我的题解
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=2e5+10,INF=1e8;
ll a[N],s[N];
int main()
{
	int t;
	scanf("%d", &t);
	while(t--)
	{
		int n;
		ll sum = 0;
		scanf("%d", &n);
		for (int i = 1; i <= n;i++)
		 	s[i] = 0;
		for (int i = 1; i <= n  ;i++)
		{
			scanf("%lld", &a[i]);
		}
		sort(a + 1, a + 1 + n);
		for (int i = 1; i <= n;i++)
		{
			s[i] = s[i - 1] + a[i];
		}
		int k = n / 2;
		if(n%2==0)
		{
			int i = n - 1,f=0;
			for (int j = 2; j <= k + 1; j++)
			{
				if(s[n]-s[i]<=s[j])
				{
					if(i>k+1) i--;
					else
					{
						printf("NO\n");
						break;
					}
				}
				else
				{
					printf("YES\n");
					break;
				}
			}
		}
		else
		{
			if(s[n]-s[k+1]>s[k+1])
				printf("YES\n");
			else
				printf("NO\n");
		}
	}
	return 0;
}

*/

C

参考知乎,位运算的使用,对于每个数可以枚举到2的15次方,然后用n=1!+2!+3!...+t表示,最后把t拆成2的几次幂,即算一下t里有几个1加一起取最小值。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<bitset>
using namespace std;
typedef long long ll;
const int N=1e5+10,INF=1e8;
ll fac[20];
int main()
{
	int t;
	ll res = 1;
	scanf("%d", &t);
	for (int i = 1; i <= 15;i++)
	{
		res *= i;
		fac[i - 1] = res;
	}
	while (t--)
	{
	    ll n;
	    int ans = 1000;
	    scanf("%lld", &n);
	    for (int i = 0; i < 1 << 15; i++)
	    {
		bitset<15> b(i);
	        ll t = n;
		for (int j = 0; j < 15;j++)
		    t -= fac[j] * b[j];
		if(t>=0)
		{
			bitset<64> b1(t);
			ans = min(ans,(int)(b1.count() + b.count()));
		}
	    }
	printf("%d\n", ans);
	}
	return 0;
}


标签:774,int,ll,Codeforces,long,printf,Div,include,scanf
来源: https://www.cnblogs.com/menitrust/p/15970052.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有