【题解】UVA1564/SP2883 Widget Factory

news2024/9/22 1:23:12

题解

      • 题意
    • 题解
      • 分析
      • Code

前言

调了好久,还是太菜了

题意

洛谷:
SP UVA
vjudge
SP UVA

在这里插入图片描述

题解

分析

转换一下,题目就是让我们解方程组:
{ ∑ i = 1 n a 1 , i x i ≡ b 1 ( m o d 7 ) ∑ i = 1 n a 2 , i x i ≡ b 2 ( m o d 7 ) ⋯ ∑ i = 1 n a m , i x i ≡ b m ( m o d 7 ) \left\{\begin{matrix} \sum_{i=1}^na_{1,i}x_i\equiv b_1 \pmod 7 \\ \sum_{i=1}^na_{2,i}x_i\equiv b_2 \pmod 7 \\ \cdots \\ \sum_{i=1}^na_{m,i}x_i\equiv b_m \pmod 7 \end{matrix}\right. i=1na1,ixib1(mod7)i=1na2,ixib2(mod7)i=1nam,ixibm(mod7)

其中 a i , j a_{i,j} ai,j 表示第 i i i 条记录中零件 j j j 加工的次数, x i x_i xi 为所求, b i b_i bi 表示第 i i i 条记录的天数。

如果不是在模意义下进行,这就是个裸的高斯消元。(如果你还不会请左转)

那怎么办呢?

我们还是直接暴力消元,只不过我们得到的是:

{ y 1 x 1 ≡ b 1 ( m o d 7 ) y 2 x 2 ≡ b 2 ( m o d 7 ) ⋯ y m x m ≡ b m ( m o d 7 ) \left\{\begin{matrix} y_1 x_1\equiv b_1\pmod7\\ y_2 x_2\equiv b_2\pmod7\\ \cdots \\ y_m x_m\equiv b_m\pmod7 \end{matrix}\right. y1x1b1(mod7)y2x2b2(mod7)ymxmbm(mod7)

那求一下逆元即可,注意答案有范围。

再说一下无解和无数组解的情况。

因为有 n n n 个未知数, m m m 组方程,所以判无数组解时判完未知数即可,而判无解时要判全部方程。

注意:如果 m > n m>n m>n,对于剩下的 m − n m-n mn 个方程,我们只用判断最右边那一列是否为 0 0 0 即可。

Code

参考代码:

int qmi(int x,int y){
	int res=1;
	while(y>0){
		if(y&1)
			res=res*x%mod;
		x=x*x%mod;
		y>>=1;
	}
	return res;
}
void gauss(){
	int o=0;
	for(int i=1;i<=n;i++){
		int p=0;
		for(int j=1;j<=m;j++)
			if(a[j][i]&&(j>=i||!a[j][j])){
				p=j;
				break;
			}
		if(!p)
			continue;
		swap(a[i],a[p]);
		for(int j=1;j<=m;j++){
			if(a[j][i]&&j!=i){
				int x=a[j][i]*qmi(a[i][i],mod-2)%mod;
				for(int k=i;k<=n+1;k++)
					a[j][k]-=a[i][k]*x,a[j][k]%=mod,a[j][k]=(a[j][k]+mod)%mod;
			}
		}
	}
	bool ok=1;
	/*for(int i=1;i<=m;i++)
		for(int j=1;j<=n+1;j++){
			cout<<a[i][j]<<(j==n+1?"\n":" ");
		}*/
	
	for(int i=1;i<=n;i++){
		if(!a[i][i]){
			if(a[i][n+1]){
				cout<<"Inconsistent data.\n";
				return ;
			}
		}
	}
	for(int i=n+1;i<=m;i++){
		if(a[i][n+1]){
			cout<<"Inconsistent data.\n";
			return ;
		}
	}
	for(int i=1;i<=n;i++){
		if(!a[i][i]){
			if(!a[i][n+1]){
				cout<<"Multiple solutions.\n";
				return ;
			}
		}
	}
	int ans;
	for(int i=1;i<=n;i++){
		ans=a[i][n+1]*qmi(a[i][i],mod-2)%mod;
		if(ans<3)
			ans+=7;
		cout<<ans<<(i==n?"\n":" ");
	}
}
signed main(){
	IOS;
	cou(0);
//	freopen("1","w",stdout);
	map<string,int>A;
	A["SUN"]=1;
	A["MON"]=2;
	A["TUE"]=3;
	A["WED"]=4;
	A["THU"]=5;
	A["FRI"]=6;
	A["SAT"]=7;
	while(cin>>n>>m&&n&&m){
		memset(a,0,sizeof a);
		for(int i=1;i<=m;i++){
			string s1,s2;
			cin>>k>>s1>>s2;
			a[i][n+1]=((A[s2]-A[s1]+1)%mod+mod)%mod;
			for(int j=1;j<=k;j++){
				int x;
				cin>>x;
				a[i][x]++,a[i][x]%=mod;
			}
		}
		/*for(int i=1;i<=m;i++)
			for(int j=1;j<=n+1;j++){
				cout<<a[i][j]<<(j==n+1?"\n":" ");
		}*/
		gauss();
	}
	return 0;
}
/*
3 4
1 SUN FRI
2
1 MON SAT
3
3 FRI SAT
2 3 2
3 MON TUE
2 2 1
0 0

//无解
//给了一组数据,真良心~~
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1945066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java学习Day13:基础篇3

流程控制 1.if 案例&#xff1a; public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.nextInt();int b sc.nextInt();int c sc.nextInt();if (ab>c&&ac>b&&bc>a){System.out.println(&quo…

连锁店收银系统源码

系统概况&#xff1a; 专门为零售行业的连锁店量身打造的收银系统&#xff0c;适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通&#xff0c;线下收银的数据与小程序私域商城中的数据完全同步&#…

06-Ubuntu 22.04LTS安装 Redis | QuickRedis 远程连接

文章目录 1. 安装命令2. 查看redis 状态3. 查看配置文件的位置4. 注释掉bind addr&#xff0c;并设置redis密码5. 设置端口6379开放6. 重启redis6. 本地测试连接7. QuickRedis 远程连接 1. 安装命令 sudo apt-get update sudo apt-get install redis-server2. 查看redis 状态 …

dsa加训

refs: OI Wiki - OI Wiki (oi-wiki.org) 1. 枚举 POJ 2811 熄灯问题 refs : OpenJudge - 2811:熄灯问题 如果要枚举每个灯开或者不开的情况&#xff0c;总计2^30种情况&#xff0c;显然T。 不过我们可以发现&#xff1a;若第i行的某个灯亮了&#xff0c;那么有且仅有第i行和第…

MQ传递用户信息

theme: nico 你们好&#xff0c;我是金金金。 场景 购物车里面有5个商品&#xff0c;用户勾选了并且提交订单了&#xff0c;此时需要删除购物车对应勾选的商品&#xff0c;mq的话涉及到传递用户信息~因为删除对应的购物车商品是需要传递用户信息来知晓对应用户的 生产者 消费者…

SolidWorks 二次开发--创建属性页面及控件事件(二)

在前文中我们学习了如何创建和显示属性页面&#xff0c;本章节将重点介绍如何向属性页面中添加控件。控件是属性页面的基本组成部分&#xff0c;可以是文本框、按钮、复选框等&#xff0c;用于用户交互和数据展示。接下来我们将看到如何定义、配置和操作这些控件&#xff0c;让…

ROS2入门到精通—— 2-8 ROS2实战:机器人安全通过狭窄区域的方案

0 前言 室内机器人需要具备适应性和灵活性&#xff0c;以便在狭窄的空间中进行安全、高效的导航。本文提供一些让机器人在狭窄区域安全通过的思路&#xff0c;希望帮助读者根据实际开发适当调整和扩展 1 Voronoi图 Voronoi图&#xff1a;根据给定的一组“种子点”&#xff0…

【保姆级介绍PyCharm安装教程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🤹目录 🤹前言🤹前提条件🤹安装步骤🤹前言 🥰PyChar…

外卖霸王餐系统架构怎么选?

在当今日益繁荣的外卖市场中&#xff0c;外卖霸王餐作为一种独特的营销策略&#xff0c;受到了众多商家的青睐。然而&#xff0c;要想成功实施外卖霸王餐活动&#xff0c;一个安全、稳定且高效的架构选择至关重要。本文将深入探讨外卖霸王餐架构的选择&#xff0c;以期为商家提…

仕考网:公务员考试申论答题技巧

在国家公务员考试的申论部分&#xff0c;要想取得好的成绩&#xff0c;关键在于掌握有效的写作方法。 1.文章结构 申论考试中&#xff0c;一个清晰、逻辑性强的结构是至关重要的。这种结构能迅速找到核心论点和支持论据。 2.紧贴主题 申论试题经常设置特定条件或要求&#…

谁说软考高级难?这个“通关秘籍”人人都能掌握

今天给大家分享一个非常有效的学习方法&#xff0c;来自网友的经验精华&#xff0c;仅供参考。 尝试了这个方法之后&#xff0c;你会觉得软考高级考试真的有点容易了&#xff01;想要及格拿证都是分分钟的事情&#xff01;按照我的方法&#xff0c;就算你从来没有考过初级和中级…

Python+Flask+Mysql or sqlite,搭建个人博客

昨天逛csdn看到了一个前端小框架界面&#xff0c;想着试着搭建一下要了一份源代码&#xff0c;因为我自己本身好久没有接触&#xff0c;好多知识有忘记了&#xff0c;只能重温python爬虫问题了&#xff0c;随后跟博主要了一份源码&#xff0c;作为练习使用&#xff0c;也不是很…

Java根据code获取枚举优化

Java枚举获取优化 需求原始解决方案优化方案1. 首先创建base接口。2. 创建枚举工具类3. 需要使用工具类的枚举&#xff0c;实现BaseEnum接口即可4. 测试使用 拓展 需求 自己模拟两个枚举&#xff0c;假设业务中需要用到 Example1StatusEnum.java package com.zdh.zdhenum;/*…

【大师与bug里特】M_Studio《王国之梦》学习笔记

1️⃣ Object & object(✅) 之辨 《7.泛型事件框架〈余2min左右时〉》 不然inspector窗口的最后一行&#xff08;告诉我们订阅者是SceneLoadManager它身上挂了☝️ObjectEventListener用来监听这个事件 有多少个事件注册到这里来了都能够看到&#xff09;还是不会出现 加上…

光谱分析仪进行一些常规参数测量的方法有哪些?

光谱分析仪在光纤通信产品中的应用&#xff0c;以AQ6370光谱分析仪为例&#xff0c;详细说明了使用光谱分析仪进行一些常规参数测量的方法。这些参数包括光谱的带宽、边模抑制比、增益、噪声系数和系统OSNR等。文章中还提到了光谱分析仪的一些基本功能&#xff0c;如屏幕显示测…

人大金仓亮相国际金融展,助力数字金融跑出“加速度”

7月19日至21日&#xff0c;由商务部批准、中国金融电子化集团有限公司主办的2024中国国际金融展&#xff08;以下简称“金融展”&#xff09;在北京国家会议中心举办。作为数据库领域国家队&#xff0c;人大金仓携金融领域创新成果与解决方案亮相本次金融展&#xff0c;获得了业…

ChatTTS真人文本转语音模型,富有韵律与情感,且免费开源

上期图文教程&#xff0c;我们分享了微软TTS真人转语音大模型&#xff0c;但是微软的TTS模型只有针对新用户免费一年&#xff0c;其他用户都是收费的&#xff0c;虽然微软开源了部分TTS的功能&#xff0c;但是针对真人类似的富有情感的TTS模型并没有进行开源&#xff0c;本期介…

代码随想录day21 二叉树最后一天 || 669修剪二叉树 108将有序数组转变为平衡搜索二叉树 538把搜索二叉树变为累加二叉树

669修剪二叉树 力扣题目链接 题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果…

Anything LLM ,构建自己的 RAG 架构 LLM,学习自己的知识库

本心、输入输出、结果 文章目录 Anything LLM ,构建自己的 RAG 架构 LLM,学习自己的知识库前言什么是Anything LLM?主要功能与技术原理功能亮点技术原理安装与使用方法初始设置模型部署案例应用企业知识管理个性化教育助手内容创作助手Anything LLM 开源新Anything LLM ,构…

DolphinDB Web 端权限管理:可视化操作指南

在现代数据库管理中&#xff0c;高效和直观的权限管理对于用户的数据安全是至关重要的。过去 DolphinDB 用户需要依赖系统脚本来管理用户和权限&#xff0c;这对于缺乏技术背景的管理员来说既复杂又容易出错。 为了提升用户体验和操作效率&#xff0c;DolphinDB 目前在 Web 上…