codeforces 1117(第三场div2)

第一题,是啥吧,就是让你找最长区间,区间特性就是平均数要最大。所以你只要贪心地搞最大的就行了。找到最大的连续最大值区间。
第二题就坑爹,不是人家题坑爹,简单地一匹,哎,可是
忘了取整这回事了。假设m/(k+1)是次数,然后要乘以权重,你不能这样写,
w*m/(k+),因为这样和可能就不是次数了,乘以w之后,几乎次数就变了。哎,还不如预先处理
像。ll x=m/(k+1),然后再乘。不错不错,真不错。
第三题就不会了。、
给你一个点坐标,要去到另一个点,给你n天的风向,循环。问你最小的天数到达,或者不可能。还有每天可以选择走一个方向,也就是顺风会多走一个,逆风估计就停留原地,似乎还可以选择不走。
太强了吧,还有标程耶
在这里插入图片描述

#include <bits/stdc++.h>

using namespace std;

#define x first
#define y second

const int N = 100009;

pair<int, int> st, fi;
int n;
string s;

string mv = "UDLR";
int dx[] = {0, 0, -1, 1};
int dy[] = {1, -1, 0, 0};

pair<int, int> d[N];

int main(){
	cin >> st.x >> st.y >> fi.x >> fi.y;
	cin >> n >> s;		

	for(int i = 0; i < n; ++i){
		int id = -1;
		for(int j = 0; j < 4; ++j)
			if(mv[j] == s[i])
				id = j;
		assert(id != -1);
		d[i + 1] = make_pair(d[i].x + dx[id], d[i].y + dy[id]);
	}

	long long l = 0, r = 1e18;
	while(r - l > 1){
		long long mid = (l + r) / 2;
		long long cnt = mid / n, rem = mid % n;
		long long x = st.x + d[rem].x + cnt *  1LL * d[n].x;
		long long y = st.y + d[rem].y + cnt *  1LL * d[n].y;
		long long dist = abs(x - fi.x) + abs(y - fi.y);
		if(dist <= mid)
			r = mid;
		else
			l = mid;	
	} 

	if(r > 5e17) r = -1;
	cout << r << endl;

	return 0;
}

太深奥了,看不懂标程。
还是看国内大佬的吧

第四题,然后给n个空间,m是一个魔法师可以分解成m个普通魔法石,原来应该是由无限个魔法石,问你有多少种方案,可以占据n个空间,魔法石和普通魔法石都占据1个,但是如果魔法石分解就会占据m个空间。
你应该是要把n个空间填满。

在这里插入图片描述
应该是dp[i]=dp[i-m]+dp[i-1];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的码泰君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值