codeforces 1204 A (思维) B(思维)

A. BowWow and the Timetable(思维)

题目链接:codeforces 1204A

题意:

   城市从第1分钟开始, 每到4^k分钟的时候都有车离开, 现给出一个二进制串, 问在该时间到达城市, 已经离开了多少辆车 ?

题解:

   字符串的长度除以2,如果字符串长度为奇数,判断后面还有没有1,如果有1 ,再加1

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e5 + 5;
int main(){
	string s;
	cin >> s;
	int len = s.size();
	int ans = len / 2;
	if(len % 2 == 1){
		for(int i = 1; i < len; i++){
			if(s[i] == '1'){
				ans++;
				break;
			}
		}
	}
	cout << ans << endl;
	return 0;
} 

B. Mislove Has Lost an Array(思维)

题目链接:codeforces 1204B

题意:

   n个数,要求奇数只能为1,其他数要求ai / 2 存在于数组中(也就是说有 4 必有 2, 有8 必有 4),求最少L个数,最多R个数不同的时候,总和最小和最大的情况

题解:

   分析当总和最小时,(n - L + 1) 个1,其他为2,4,....

   当总和最大时, (n - R +1) 个 2^(n-1) ,其他 1,2,3....

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e5 + 5;
int main(){
	int n, l, r;
	cin >> n >> l >> r;
	ll minans = 0, t = 0;
	ll maxans = 0;
	minans = n-l+1;
	ll k = 2;
	for(int i = 1; i <= l-1; i++){
		t = t + k;
		k = k * 2;
	}
	minans += t;
	
	t = 0; k = 1;
	for(int i = 1; i < r; i++){
		t = t + k;
		k = k * 2;
	}
	maxans = k * (n-r+1)+ t + 1;
	cout << minans << " " << maxans-1 << endl;
	return 0;
} 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值