关于这题的一种70分做法
查看原帖
关于这题的一种70分做法
459038
luoyubo楼主2022/8/19 16:04

如题,直接枚举每一个flag,计算A几倍杀B / B几倍杀A, 然后乱搞比较出答案。感觉思路没问题,不过WA了最后三点。

code:

#include<bits/stdc++.h>
using namespace std;
double mod=0.000000000001;
int n,s,t;
int op[1001],A[1001],B[1001];
double k[1001];
int C;
double dis[1001];
double ans=-1;
int main()
{
	scanf("%d%d%d",&n,&s,&t);
	for(int i=1;i<=s;i++)
	{
		scanf("%d%d%d%lf",&op[i],&A[i],&B[i],&k[i]);
	}
	for(int i=1;i<=t;i++)
	{
		scanf("%d",&C);scanf("%lf",&dis[C]);
	}
	for(int i=1;i<=s;i++)
	{
		if(dis[A[i]]!=0&&dis[B[i]]!=0)
		{
			double a;
			if(op[i]==1)
			{
				a=dis[A[i]]/dis[B[i]];
				if(a<k[i])
				{
					double t=k[i]-a-mod;
					if(t>ans)ans=t;
				}
			}
			else{
				a=dis[B[i]]/dis[A[i]];
				if(a>k[i])
				{
					double t=a-k[i];
					if(t>ans)ans=t;
				}
			}
		}
	}
	if(ans==-1)printf("-1\n");
	else printf("%.10lf\n",ans);
	return 0;
} 

难道这题只能差分约束+二分答案吗

2022/8/19 16:04
加载中...