【洛谷P2397】yyy loves Maths VI (mode)【模拟】

题目大意:

题目链接:https://www.luogu.org/problemnew/show/P2397
给出长度为 n n n的数列,其中的众数个数超过了一半。求这个众数。


思路:

数据范围要求在 O ( n ) O(n) O(n)的时间复杂度内完成。
那么排序和 m a p map map,离散这些 n l o g n nlogn nlogn的可以拜拜了。
那么自然就要分析一下“众数个数超过一半”这个条件了。
我们不难发现,一个数列众数超过了一半,那么在这个数列里去掉任意两个不相等的数字,剩余的数字中的众数肯定也超过了一半!
但是怎么在这个数列中 O ( 1 ) O(1) O(1)找到两个不相等的数呢?
显然是不可能的。
那么可以换一种方式看问题:
假设我们已经知道前 i − 1 i-1 i1个数的众数和出现次数了,那么现在读入第 i i i个数,如果第 i i i个数之前的众数一样,那么就将数量加 1 1 1,如果和之前的众数不一样,那么众数个数就减 1 1 1,相当于去掉两个不相等的数(一个众数和一个不等于众数的数)。
那么最终留下来的众数就是答案了。
时间复杂度 O ( n ) O(n) O(n)


代码:

#include <cstdio>
using namespace std;

int n,ans,sum,x;

int main()
{
	scanf("%d",&n);
	while (n--)
	{
		scanf("%d",&x);
		if (!sum)  //前面的数都被消除完了,说明没有众数
		{
			ans=x;
			sum++;
		}
		else if (ans==x) sum++;
		else sum--;
	}
	printf("%d\n",ans);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在TouchDesigner中,你可以使用CHOP(通道操作)节点中的LFO(低频振荡器)和Maths(数学)节点来控制图像。以下是一个简单的例子: 1. 创建一个Movie File In节点,将其命名为“movie_in”。 2. 将Movie File In节点的输出连接到一个常规的TOP(图像处理)节点。 3. 创建一个LFO CHOP节点,并将其命名为“lfo”。 4. 在LFO CHOP节点的参数页面上,设置“Frequency”参数为适当的值,以控制LFO的速度。 5. 创建一个Maths CHOP节点,并将其命名为“maths”。 6. 在Maths CHOP节点的参数页面上,选择“Add”操作,并将其输入连接到“lfo”节点的输出。 7. 在Maths CHOP节点的参数页面上,设置“Value 1”参数为1,以控制LFO的振幅。 8. 创建一个Constant CHOP节点,并将其命名为“constant”。 9. 在Constant CHOP节点的参数页面上,设置“Value”参数为0.5,以控制图像的亮度。 10. 创建一个Maths CHOP节点,并将其命名为“maths2”。 11. 在Maths CHOP节点的参数页面上,选择“Multiply”操作,并将其输入连接到“constant”节点的输出。 12. 将“maths”节点的输出连接到“maths2”节点的第一个输入。 13. 将TOP节点的亮度参数连接到“maths2”节点的输出。 现在,你可以控制图像的亮度,以及LFO的速度和振幅,来创建一个动态的图像效果。你可以通过调整LFO节点和Maths节点的参数来实现不同的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值