大数据 QuarkXPress 微信公众号开发 ScrollView Gitlab Opencv text websocket ionic framework vue响应式 外卖系统源码 pytorch安装教程 collection框架的结构 java清空数组 bitlocker加密好慢 windows查看进程命令 python集合 python语言入门 python安装环境变量 python自学入门 python编程语言 java的数据类型 java遍历 java目录 java定义变量 java网课 linux云服务器 linux安装系统 网页游戏开发入门 图吧导航怎么样 凯立德地图免费下载 右键菜单背景 网络是怎样连接的 bash命令 groupy 网络克隆 getelementbyid blued是什么软件 msn格式 mysql时间比较
当前位置: 首页 > 学习教程  > 编程语言

P5027 Barracuda

2021/2/13 17:27:36 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

题目 题目 思路 不得不说这题还是有坑的,其实每一次称量都可以抽象为一个m元1次且最大系数为1的方程,接下来我们枚举n1n1n1种情况,枚举到i时,考虑当第i种情况成立且唯一(即没有别的称量错误的方法有合法答案&#x…

题目

题目

思路

不得不说这题还是有坑的,其实每一次称量都可以抽象为一个m元1次且最大系数为1的方程,接下来我们枚举 n + 1 n+1 n+1种情况,枚举到i时,考虑当第i种情况成立且唯一(即没有别的称量错误的方法有合法答案)的解。
code:

#include<cstring>
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
using namespace std;
int n,w,k;
struct f{
	double a[111];
	int id;
} a[111],b[111];
double x,y;
bool f(int u)
{
	for (int i=0,j=0;i<=n;i++,j++)
	{
		if (i==u)
		{
			j--;
			continue;
		}
		a[j]=b[i];
	}
	for (int j=0;j<n;j++)
	{
		int t=j;
		while (a[t].a[j]==0&&t<n) t++;
		if (t==n)
		{
			return 0; 
		}
		swap(a[t],a[j]);
		for (int i=0;i<n;i++)
		{
			if (i==j) continue;
			x=a[i].a[j]/a[j].a[j];
			for (int k=0;k<=n;k++) a[i].a[k]-=a[j].a[k]*x;
		}
	}
	double mx=-1;
	int kk;
	for (int j=0;j<n;j++)
	{
		if (a[j].a[n]/a[j].a[j]!=(int)(a[j].a[n]/a[j].a[j])) return 0;
		if (a[j].a[n]/a[j].a[j]<1) return 0;
		if (mx<a[j].a[n]/a[j].a[j])
		{
			mx=a[j].a[n]/a[j].a[j];
			kk=j;
		}
	}
	for (int j=0;j<n;j++)
	{
		if (kk!=j&&mx==a[j].a[n]/a[j].a[j]) return 0;
	}
	k=kk;
	return 1;
}
int main()
{
	cin>>n;
	for (int i=0;i<=n;i++)
	{
		b[i].id=i;
		int m;
		cin>>m;
		for (int j=1;j<=m;j++)
		{
			int x;
			cin>>x;
			b[i].a[x-1]=1;
		}
		cin>>b[i].a[n];
	}
	for (int i=0;i<=n;i++)
	{
		if (f(i)) w++;
	}
	if (w!=1)
	{
		cout<<"illegal";
		return 0;
	}
	cout<<k+1;
    return 0;
}

本文链接: http://www.dtmao.cc/news_show_700161.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?