为啥我开long long还是过不去!!!80蒟蒻求助!
查看原帖
为啥我开long long还是过不去!!!80蒟蒻求助!
510070
keqing_yysd楼主2022/10/15 22:16

各位大佬,有大佬说开long long可以卡过去,问题是我这没过,还是五个点WA,各位大佬看看是啥子问题。代码如下。

#include<bits/stdc++.h>

using namespace std;

unsigned long long n, m, c[100005], p1, p2, s1, s2;

unsigned long long a[100005], b[100005], sum1 = 0, sum2 = 0;

unsigned long long mn = 0x3f3f3f3f, ans = 0;

//a[i]表示龙势力i号兵营的势力值 

//b[i]表示虎势力i号兵营的势力值 

int main() {

	cin >> n;
    
	for (int i = 1; i <= n; i++)
		cin >> c[i];
	cin >> m >> p1 >> s1 >> s2;
	for (int i = 1; i < m; i++)
		a[i] = (m - i) * c[i], sum1 += a[i];//算出龙势力总值 
	for (int i = m + 1; i <= n; i++)
		b[i] = (i - m) * c[i], sum2 += b[i];//算出虎势力总值 
	if (p1 < m)//判断是否属于龙势力 
		sum1 += (m - p1) * s1;
	if (p1 > m)//判断是否属于虎势力 
		sum2 += (p1 - m) * s1;
	//cout << sum1 << " " << sum2 << endl;
	for (int i = 1; i <= n; i++) {//循环枚举p2 
		int t1 = sum1, t2 = sum2;
		if (i < m)//如果在龙势力 
			t1 += (m - i) * s2;
		if (i > m)//如果在虎势力 
			t2 += (i - m) * s2;
		if(mn > abs(t1 - t2))
			mn = abs(t1 - t2), ans = i;
	}
	cout << ans << endl; 
	return 0;
 } 
 
2022/10/15 22:16
加载中...