栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

AtCoder Beginner Contest 221(A-D)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AtCoder Beginner Contest 221(A-D)

(转自atcoder官网) A - Seismic magnitude scales

因为我们可以假设,当震级增加 1 时,它正好乘以 32 ,所以答案是 

根据约束条件, A和 B 是整数,  , 因此,可以使用  语句计算它。在某些语言中,我们可以用求幂或  函数来找到它

#include 
using namespace std;

int main(void) {
	int a, b;
	int k = 1;
	cin >> a >> b;
	for (int i = b; i < a; i++)k *= 32;
	cout << k << endl;
	return 0;
}

B - typo

我们可以在不执行任何操作的情况下检查 S 和 T 是否相同,或者在每个  ,交换第  个和第  个字符时, 和  是否一致.

#include
using namespace std;

int main(){
    string S,T; 
    cin >> S >> T;
    string ans = "No";
    if(S == T) ans = "Yes";
    for(int i=0; i 

C - Select Mul

最多有  种分离方式(或2903040/2=1451520,忽略两个分离整数的顺序时),这足够小。

因此,我们可以用暴力对付所有可能的分离方式。

在 c++ 中实现时,有一个有用的函数称为 next_permutation ,它包含在标准库  中。

#include
using namespace std;

int main(){
    string N; 
    cin >> N;
    sort(N.begin(),N.end());
    int ans = 0;
    do{
        for(int i=1; i 

再稍加观察,我们就会发现接受前导零并不影响结果。

#include
using namespace std;

int main(){
    string N; 
    cin >> N;
    sort(N.begin(),N.end());//排序,next_permutation只能排已经排好序的全排列
    int ans = 0;
    do{
        for(int i=1; i 

进一步观察,我们可以看到,当达到最大值时,被分离的两个变量在被视为一个数字序列时是单调不递增的。

根据这个属性,我们可以看到应该检查的分离次数是(或 如果忽略两个分开的整数的顺序)。

在实现时,使用位强制暴力也是很简单的。

D - online games

让 x1,x2,...,xn 是一个整数排序序列,由某些玩家开始或退出登录的天数组成;也就是说,X使X= Ai 或X= + 

然后,对于任意满足 X 的 <=Y<=  ,在第Y天登录的人数不变。同样,对于  的任何  或  ,  人登录,所以我们不必考虑这些天。因此,可以使用一个计数器和一个记录答案的数组来解决这个问题,计数器和数组初始化为  ,并针对每个  进行更新按照以下步骤进行操作:

· 递增计数器 X 我根据第 X 天开始登录的人数i,并减少退出登录的人数。

· 将 C 用户登录的天数增加 xi+1-xi ,其中  是计数器的当前值。

#include 
using namespace std;

#define N 200010
#define rep(i, n) for(int i = 0; i < n; ++i)

int main( ) {
	int n;
	int a, b;
	vector >x;
	int cnt;
	int ans[N];
	rep(i, N)ans[i] = 0;

	cin >> n;
	rep(i, n) {
		cin >> a >> b;
		x.push_back({ a,1 });
		x.push_back({ a + b,-1 });
	}

	sort(x.begin(), x.end());

	cnt = 0;
	rep(i, (x.size())-1) {
		cnt += x[i].second;
		ans[cnt] += ((x[i + 1].first) - (x[i].first));
	}

	rep(i, n - 1)cout << ans[i + 1] << " ";
	cout << ans[n] << endl;
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291138.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号