首页 > 其他分享 >牛客小白月赛81

牛客小白月赛81

时间:2023-11-23 17:36:53浏览次数:40  
标签:int ll ans cin long 牛客 小白月赛 using 81

牛客小白月赛81

A. 小辰打比赛

解题思路:

遍历找到小于\(x\)的数累加即可。

代码:

#include<bits/stdc++.h>
using namespace std;

void solve()
{
	int n,x;
	int ans = 0;
	cin >> n >> x;
	for(int i = 1;i<=n;i++)
	{
		int k = 0;
		cin >> k;
		if(k < x)
		{
			ans += k;
		}
	}
	cout << ans;
}

int main()
{
	int t = 1;
	while(t--)
	{
		solve();
	}
	return 0;
}

B. 小辰的圣剑

解题思路:

两层循环枚举左右区间累加判断计算即可。

代码:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;

void solve()
{
	ll n,m,u;
	cin >> n >> m >> u;
	vector<ll> a(n + 1),b(n + 1);
	for(int i = 1;i<=n;i++)
	{
		cin >> a[i];
	}
	for(int i = 1;i<=n;i++)
	{
		cin >> b[i];
	}
	ll ans = 0;
	for(int i = 1;i<=n;i++)
	{
		ll res = 0;
		ll t = 0;
		ll cnt = 0;
		for(int j = i;j<=n;j++)
		{
			res += a[j];
			t += b[j];
			cnt ++;
			if(res > m || t > u)
			{
				break;
			}
			ans = max(ans,cnt);
		}
	}
	cout << ans << endl;
}

int main()
{
	int t = 1; 
	while(t--)
	{
		solve();
	}
	return 0;
}

C. 陶陶学算术

解题思路:

如果直接模拟,那么数据会很大。

对于每次操作,分解操作数的质因子进行统计。如果最后二者质因子和符号都完全一样,那么就是一样的。

代码:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5 + 10;
int primes[N]; 
bool st[N];
int minp[N];
int cnt = 0;
bool f1 = true;
bool f2 = true;
int p1[N];
int p2[N];
void init(int n)
{
	for(int i = 2;i<=n;i++)
	{
		if(!st[i])
		{
			primes[cnt++] = i;
			st[i] = true;
			minp[i] = i;
		}
		for(int j = 0;i <= n / primes[j];j ++)
		{
			st[i * primes[j]] = true;
			minp[i * primes[j]] = primes[j];
			if(i % primes[j] == 0)
			{
				break;
			}
		}
	}
}

void find(int x,int t,int op)
{
	if(t == 1)
	{
		if(x < 0)
		{
			f1 ^= 1;
			x = abs(x);
		}
		if(op)
		{
			while(x != 1)
			{
				int p = minp[x];
				p1[p] ++;
				x = x / p;
			}
		}
		else
		{
			while(x != 1)
			{
				int p = minp[x];
				p1[p] --;
				x = x / p;
			}
		}
	}
	else
	{
		if(x < 0)
		{
			f2 ^= 1;
			x = abs(x);
		}
		if(op)
		{
			while(x != 1)
			{
				int p = minp[x];
				p2[p] ++;
				x = x / p;
			}
		}
		else
		{
			while(x != 1)
			{
				int p = minp[x];
				p2[p] --;
				x = x / p;
			}
		}
	}
}

void solve()
{
	int n;
	cin >> n;
	for(int i = 1;i<=n;i++)
	{
		int x,y;
		cin >> x >> y;
		if(x == 1)
		{
			find(y,1,0);
		}
		else
		{
			find(y,1,1);
		}
	}
	cin >> n;
	for(int i = 1;i<=n;i++)
	{
		int x,y;
		cin >> x >> y;
		if(x == 1)
		{
			find(y,2,0);
		}
		else
		{
			find(y,2,1);
		}
	}
	for(int i = 1;i<=1e5;i++)
	{
		if(p1[i] != p2[i])
		{
			puts("NO");
			return;
		}
	}
	if(f1 != f2)
	{
		puts("NO");
	}
	else
	{
		puts("YES");
	}
}

int main()
{
	init(100000);
	int t = 1; 
	while(t--)
	{
		solve();
	}
	return 0;
}

D. 小辰的借钱计划

解题思路:

按照题意直接计算期望即可。

代码:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;


void solve()
{
	int m,a;
	cin >> m >> a;
	ll len = 0;
	ll sum = 0;
	for(int i = 1;i <= m - a;i++)
	{
		if(i % a == 0 || a % i == 0)
		{
			len ++;
			sum += i;
		}
	}
	double res = (double)sum / len;
	if(res > a)
	{
		puts("YES");
	}
	else
	{
		puts("NO");
	}
}

int main()
{
	int t = 1; 
	cin >> t;
	while(t--)
	{
		solve();
	}
	return 0;
}

E. 小辰的智慧树

解题思路:

我们假设将一棵树从高度\(r\)砍到\(l\)。\(c = r - l = a + b\),我们可以直接砍\(c\),也可以先砍\(a\),再砍\(b\)。

\[\begin{align*} \Delta h &= c * (2 * r - c)\\ &= a * (2 * r - a) + b * (2 * ( r - a) - b) \\ &= 2 * r *(a + b) - (a^2 + 2ab - b^2)\\ &= 2rc - (a + b)^2\\ &= 2rc -c^2 \\ &= c*(2r - c) \end{align*} \]

由上可知,一大刀切和一小刀一小刀切并无不同。

所以可以\(1\)单位\(1\)单位地切分,取最大的\(m\)小刀即可。

我们可对值域进行差分计算。

代码:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;


void solve()
{
	ll n,m;
	cin >> n >> m;
	vector<ll> s(1e6 + 10,0);
	for(int i = 1;i <= n;i ++)
	{
		ll l,r;
		cin >> r >> l;
		l ++;
		r ++;
		s[l] ++;
		s[r] --;
	}
	for(int i = 1;i<s.size();i++)
	{
		s[i] += s[i - 1];
	}
	ll ans = 0;
	for(int i = 1e6;i >= 0;i--)
	{
		ll cur = min(m,s[i]);
		ans += cur * (2 * i - 1);
		m -= cur;
	}
	cout << ans << endl;
}

int main()
{
	int t = 1; 
	while(t--)
	{
		solve();
	}
	return 0;
}

标签:int,ll,ans,cin,long,牛客,小白月赛,using,81
From: https://www.cnblogs.com/value0/p/17852065.html

相关文章

  • 牛客周赛
    牛客周赛Round201.小红的数位删除(二进制枚举)输入1:37111输出1:0说明:111是37的倍数,所以小红不需要任何操作。输入2:123499输出2:2说明:第一个数删除数字'1',变成234。第二个数删除数字'9',变成9。234是9的倍数。二进制枚举#include<bits/stdc++.h>#de......
  • 20230814
    大概是一段自己与自己的对话?有点魔怔,有点中二,但是自己再看一遍自己写的东西之后真的很有感触。(莫名觉得很像芙宁娜qwq)「学得更深,更加感受到自己的弱小,越来越迷茫,越来越绝望。」『但至少这代表着你的认知再次拓宽了,认知面足够宽,才会看到更多的未知,才会发现人外有人,天外有天,这......
  • 20230810
    想起来我以前在自己的一个小号上面写过一点东西,打算搬过来。反正那个洛谷号算是废了吧。毕竟我写的就是我写的,不会因为发布在哪里就改变了其性质,对吧?所以我选择发出来。(这一段话是20231121加的,下面才是正文)心情不好。放假一直在颓。虽然说放假是用来放松的,并且我们也训练了......
  • oracle 静默安装 rac 转载 :https://www.modb.pro/db/1723739796005281792
    这里先为大家附上Oracle各版本支持的生命周期及发布时间线,当前较为常用的主流版本则为Oracle11g和Oracle19c以及明年发布的Oracle23c等版本。本文是对11g和19c两个主流版本的单机文件系统、单机ASM和RAC三种架构的静默安装简要步骤,并不包含所有操作步骤,仅供参考......
  • 牛客小白月赛81 F 小辰刚学gcd
    LInk首先我们可以注意到,两个数的gcd要不是它们当中较小的那一个要不是它本身。所以对于一个特定的\(r\),\(gcd_{i=p}^r,1<=p<=r\)来说,答案不会超过32种。并且因为gcd的性质,答案一定是成块且递减的。所以我们可以直接记录下对于每一个\(r\),答案都有哪些,从哪里开始出现。并......
  • SP3881 题解
    前置知识最短路。思路这就是一道很简单的最短路板子,太良心了,用堆优化的Dijkstra就能过。相信大家都会这个,我就不介绍了。ACCODE#include<bits/stdc++.h>usingnamespacestd;intdis[100005],n,m,s,t,vis[100005];vector<pair<int,int>>e[100005];inlinevoiddijkst......
  • 25届实习秋招-Java面试-MySQL数据库面试题整理-牛客网近一年
    MySQL概述:关系型数据和非关系型数据库的区别,有哪些应用场景有哪些非关系的单表操作:三种SQL语言类型,MySql本身常用命令DDL-数据定义语句:表的常用操作truncate/delete--drop操作的区别varchar最大字节数DMLUpdate语句的sql执行流程对行数据的修改是......
  • 牛客小白月赛81
    牛客小白月赛81A.小辰打比赛#include<bits/stdc++.h>usingnamespacestd;intmain(){intn,x,y,sum;cin>>n>>x;sum=0;for(inti=1;i<=n;++i){cin>>y;if(y<x)sum+=y......
  • 【操作系统MIT 6.1810(2022版)笔记】Lab实验:环境搭建——以Ubuntu20.04为例
    感觉环境搭建没有别人说的那么难。我是双系统用户(Win+Ubuntu20.04),所以直接在Ubuntu上搭建了。听别人说不要用Ubuntu18.04搭建,不知道为什么参考链接:官网环境搭建教程环境搭建打开终端,输入以下命令并回车运行sudoapt-getinstallgitbuild-essentialgdb-multiarchqemu-s......
  • 牛客网语法直播笔记-前30分钟-无图
    学习网址:https://www.nowcoder.com/study/live/528/1/1第一个问题:数组下标越界数组下标越界没有规定说声明的数组要挨着放,也就是图中的abc三个数组是没有规定地址是连在一起的,一般来说编译器是会这么干的,而且每个编译器的都会在之间留点空(也就是0)每个编译器所留的空还不一样。这里......