什么是时尚题解

这篇博客探讨了儿童追赶时尚潮流的现象,通过数学模型解释了吸引值和抵抗值如何影响参与趋势的人数。文章指出,每个时尚潮流都有初始吸引值,当吸引值大于或等于孩子的抵抗值时,孩子就会加入。随着加入的孩子增多,时尚的吸引值也会增加。通过给定的示例代码,展示了如何计算最终参与时尚潮流的小朋友数量。

什么是时尚?

Description
小朋友们喜欢追赶时尚潮流。 从算术的角度来说,我们可以认为: 每个时尚都有一个起始的吸引值L(1 <= L <= 50,000)。 每个小朋友都有一个时尚对抗值R_i (0 <= R_i <= 1,000,000)。 当一个时尚的吸引值大于等于一头小朋友的对抗值时,小朋友将会加入这个时尚潮流。 每个加入的小朋友将增加这个时尚K(1 <= K <= 2,500)点吸引值(从众心理,加入的小朋友越多越流行)。对于给定的N(1 <= N <= 100,000)个小朋友,请求出有多少头会加入给定的时尚。

Input
行1:三个空格隔开的整数:N,L和K 行2…N+1:第i+1行包含一个单独的整数,代表第i头小朋友的时尚对抗值:R_i

Output
行1:一个单独的整数,代表最终会加入这个时尚潮流的小朋友数目。

Examples
input
5 2 3
2
6
12
5
14
output
3

先给数组排序,再从a[1]开始拿吸引值与抵抗值相比较,若吸引值大于抵抗值,那么吸引值+=k。否则break。

完整代码

#include <bits/stdc++.h>
#define F(a,b,c)for(int a=b;a<=c;a++)
using namespace std;
long long n,l,k,a[500001],ans;
int main(){
	cin>>n>>l>>k;
	F(i,1,n)cin>>a[i];
	sort(a+1,a+n+1);
	if(a[1]>l){
		cout<<0;
		return 0;
	}
	F(i,1,n){
		if(a[i]<=l)l+=k,ans++;
		else break;
	}
	cout<<ans;
	return 0;
}
# P13239 「2.48sOI R1」化妆品 ## 题目背景 本月 $30$ 日即将迎来埃尔萨纳城的第 $17367$ 次名媛聚会。Misserina 和 ShenTianYi_ 正在为此做准备,她们在商场购买化妆品。 ## 题目描述 商场里面有 $2n$ 个化妆品,每一个都能提供时尚值和美丽值。任意两个化妆品提供的时尚值互不相同,且美丽值也互不相同。 Misserina 和 ShenTianYi_ 要选择 $n$ 次心仪的化妆品,每一次 Misserina 先选,ShenTianYi_ 后选。Misserina 是个性格多变的人,她时而希望自己更加时尚,时而希望自己更加美丽,会选择剩余的化妆品中该值最大的那一个;而 ShenTianYi_ 则是淑女中的淑女,每一次 Misserina 选择她想要的之后她都会选择 Misserina 最不想要的那个,也就是对应时尚值或美丽值最小的那个。 她们想知道,按照这个规则选完所有化妆品之后,两人的时尚值和美丽值分别为多少。请帮她们解答这个问题。 ## 输入格式 第一行:一个整数 $n$,含义如题干所示。 第二行:$2n$ 个整数 $F_1,F_2,\dots,F_{2n}$,表示每一个化妆品提供的时尚值。 第三行:$2n$ 个整数 $B_1,B_2,\dots,B_{2n}$,表示每一个化妆品提供的美丽值。 第四行:$n$ 个整数 $Q_1,Q_2,\dots,Q_n$,表示 Misserina 每次希望购买时尚值最高的(用 `1` 表示)还是美丽值最高的(用 `2` 表示)。 ## 输出格式 第一行两个整数,分别表示最终 Misserina 的时尚值和美丽值。 第二行两个整数,分别表示最终 ShenTianYi_ 的时尚值和美丽值。 ## 输入输出样例 #1 ### 输入 #1 ``` 3 1 7 3 8 9 4 1665 5 8888 3 4 27 1 1 2 ``` ### 输出 #1 ``` 21 34 11 10558 ``` ## 说明/提示 第一次选择: Misserina 选择时尚值最高的即第 $5$ 种化妆品,ShenTianYi_ 选择时尚值最低的即第 $1$ 种化妆品。 第二次选择: Misserina 选择剩下的时尚值最高的即第 $4$ 种化妆品,ShenTianYi_ 选择剩下的时尚值最低的第 $3$ 种化妆品。 第三次选择: Misserina 选择剩下的美丽值最高的第 $6$ 种化妆品,ShenTianYi_ 选择剩下的美丽值最低的第 $2$ 种化妆品。 最终 Misserina 的时尚值为 $8+9+4=21$,美丽值为 $3+4+27=34$;ShenTianYi_ 的时尚值为 $1+7+3=11$,美丽值为 $1665+5+8888=10558$。 对于 $100\%$ 数据: - $1 \le n \le 5 \times 10^5$; - $1 \le F_i,B_i \le 10^9$; - $Q_i \in \{1,2\}$; - $\forall\: i \ne j$,$F_i \ne F_j$,$B_i \ne B_j$。 **本题采取捆绑测试。** - Subtask 0(9 pts):$1 \le n \le 1000$,$1 \le F_i,B_i \le 2000$,$Q_i$ 均为 `1` 或均为 `2`; - Subtask 1(11 pts):$1 \le n \le 1000$,$1 \le F_i,B_i \le 2000$; - Subtask 2(20 pts):$1 \le n \le 1000$,$1 \le F_i,B_i \le 10^9$; - Subtask 3(26 pts):$1 \le n \le 5 \times 10^5$,$1 \le F_i,B_i \le 10^9$,$Q_i$ 均为 `1` 或均为 `2`; - Subtask 4(34 pts):$1 \le n \le 5 \times 10^5$,$1 \le F_i,B_i \le 10^9$。 ## 思路: >1.把$$a,b$$两个数组从小到大排序($$a$$数组是指 _时尚_ 值,$$b$$数组是指 _美丽_ 值)。 >2.模拟每次两个人取出的过程,比如:Misserina 先取出$$a[n]$$,而ShenTianYi_ 就取出$$a[1]$$。是不是很简单? 但是,在数组中删除元素不容易,一位一位挪肯定会~~喜提~~超时,所以我们掏出vector。 使用vector需要```#include <vector>```头文件,推荐一篇别人的博客(侵权请联系删除):[点我这里~](https://blog.youkuaiyun.com/m0_56494923/article/details/123263285?ops_request_misc=%257B%2522request%255Fid%2522%253A%25221da9913098733efca2fe4584e444afdc%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=1da9913098733efca2fe4584e444afdc&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123263285-null-null.142^v102^pc_search_result_base7&utm_term=vector&spm=1018.2226.3001.4187) 所以,核心部分大致总结为: >如果要取的是时尚的,就取出后去除$$a[n]$$和$$a[1]$$; >如果要取的是美丽的,就取出后去除$$b[n]$$和$$b[1]$$。 > 最后,警示大家: **十场OI一场空,不开long long见祖宗。** 请按题解方式用c++写出这题
最新发布
07-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值