test Week2

2/6 还是欠缺稳定性,心急吃不了热豆腐啊。。keep fighting!!

A 6位的枚举

B 递归枚举,2进制枚举都行

综合两个基础题来看,在紧张的环境下,不能冷静地作出决策,还是多练吧!

C 花的时间不少,一开始的想法是模拟过程,WA, 后来是求区间的方法,也不行,最后还是枚举整个过程最方便,

10000的数据规模,虽然本题求的是时间,但按米为单位是还是可以离散化的。。

a[10000]数组表示a[i]米有车,b[i]同理,那么只要枚举当a[0]~a[8] b[8]~[b16]没有车时,就可以过了

#include <iostream>
#include <cstdio>
using namespace std;

bool a[10005];
bool b[10005];
int n, m, tmp;

int main() 
{
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> tmp;
		for (int j = tmp; j < tmp + 5; j++) {
			a[j] = true;
		}
	}
	cin >> m;
	for (int i = 0; i < m; i++) {
		cin >> tmp;
		for (int j = tmp; j < tmp + 5; j++) {
			b[j] = true;
		}
	}
	double answer = 0;
	for (int i = 0; i <= 10000; i++) {
		bool waiting = false;	
		for (int j = i; j < i + 8; j++)  if (a[j]) waiting = true;
		for (int j = i + 8; j < i + 16; j++) if (b[j]) waiting = true;
		if (!waiting) {
			answer = i * 3600 / 20000.0; 
			break;
		}
	}
	printf("%.6lf\n", answer);
}

C题的区间法终于搞清楚WA在哪了!感谢宏生!当右车道车初始值很小时,可能输出负数!!,怒改!!

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;

int car[660];
int m , n, tmp;

int main () 
{
	cin >> n;
	for (int i = 0; i < n; i++)  {
		cin >> tmp;
		car[i] = tmp - 8;
	}
	cin >> m;
	for (int i = 0; i < m; i++)  {
		cin >> tmp;
		car[n+i] = tmp - 16;
	}
	int total = n + m;
	sort(car, car+total);
	int waiting = 0;
	if (car[0] >= 0)  printf("%f\n", waiting * 0.0);
	else { 
		waiting = car[0] + 13;
		for (int i = 1; i < total; i++) {
			if (car[i] >= waiting) break;
			else waiting = car[i] + 13;
		}
		if (waiting < 0) waiting = 0.0;  // key judge!!!!
		printf("%f\n", waiting * 0.18);
	}	
}






D 题实际上依然是枚举检测,它基于这么一个事实:对于两本书的相同数字,先考察其所在的页首个数ab,若相同,或者大于,则不处理,若小于则说明这个数与b-a个数存在错页

#include <iostream>
using namespace std;

int a, b, n;
int main()
{
	cin >> a >> b >> n;
	long long sum = 0;
	int topa, topb;
	for (int i = 0; i < n; i++) {
		topa = (i / a) * a;
		topb = (i / b) * b;
		topb -= topa;
		if (topb > 0) sum += topb;
	}
	cout << sum << endl;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值