[POJ2947] Widget Factory 高斯消元

2023-12-07 07:08

本文主要是介绍[POJ2947] Widget Factory 高斯消元,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过每个人列方程 把系数模7来防止溢出 最后除法的时候用逆元算一下

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<map>
#define SF scanf
#define PF printf
using namespace std;
typedef long long LL;
const int MAXN = 300;
inline int abs(int x) { return x > 0 ? x : -x; }
inline int gcd(int a, int b)  
{  while(b)  { int r = a % b; a = b; b = r; }  return a;  
}
inline int lcm(int a, int b)
{return a / gcd(a, b) * b;
}
int Ans[MAXN+10];
int Niyuan[] = { 0, 1, 4, 5, 2, 3, 6 };
char s[10], ss[10];
template <int maxn, int maxm>
struct Maxtrix{int equ, var;int A[maxn+10][maxm+10];void init() { memset(A, 0, sizeof(A)); equ = var = 0; }int Gauss(int equ, int var) {int row, col;for(row = 0, col = 0; row < equ && col < var; row++, col++){int r = row;for(int i = row+1; i < equ;i++)if(abs(A[i][col]) > abs(A[r][col]))r = i;if(A[r][col] == 0) {row--;continue;}if(r != row) for(int i = 0; i <= var; i++) swap(A[r][i], A[row][i]);for(int i = row+1; i < equ; i++){if(!A[i][col]) continue;int LCM = lcm(abs(A[row][col]), abs(A[i][col]));int ta = LCM / abs(A[i][col]);int tb = LCM / abs(A[row][col]);if(A[row][col] * A[i][col] < 0) tb = -tb;for(int j = col; j <= var; j++)A[i][j] = ((A[i][j] * ta - A[row][j] * tb) % 7 + 7) % 7;}}for(int i = row; i < equ; i++) if(A[i][var]) return -1;if(row < var) return 1;for(int i = var-1; i >= 0; i--){int tmp = A[i][var];for(int j = i+1; j < var;j++)if(A[i][j] != 0)tmp = ((tmp - A[i][j] * Ans[j]) % 7 + 7) % 7;Ans[i] = (tmp * Niyuan[A[i][i]]) % 7;}return 0;}
};
Maxtrix <MAXN, MAXN> A;
int Num(char s[])
{if(strcmp(s,"MON") == 0) return 1;else if(strcmp(s,"TUE")==0) return 2;else if(strcmp(s,"WED")==0) return 3;else if(strcmp(s,"THU")==0) return 4;else if(strcmp(s,"FRI")==0) return 5;else if(strcmp(s,"SAT")==0) return 6;else return 7;
}
int main()
{int n, m;while(SF("%d%d", &n, &m) == 2 && (n || m)){memset(A.A, 0, sizeof(A.A)); A.equ = m; A.var = n;for(int i = 0; i < m; i++){int k;SF("%d%s%s", &k, s, ss);int u = Num(s), v = Num(ss);A.A[i][n] = ((v - u + 1) % 7 + 7) % 7;for(int j = 1; j <= k; j++){SF("%d", &u); u--;A.A[i][u] = (A.A[i][u] + 1) % 7;}}int ans = A.Gauss(m, n);if(ans == 0) {for(int i = 0; i < n; i++) if(Ans[i] <= 2) Ans[i] += 7;for(int i = 0; i < n; i++)if(i == n-1) PF("%d\n", Ans[i]);else PF("%d ", Ans[i]);}else if(ans == -1) PF("Inconsistent data.\n");else PF("Multiple solutions.\n");}
}


这篇关于[POJ2947] Widget Factory 高斯消元的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/464948

相关文章

HDU 5833 高斯消元

n个数,任选>=1个数相乘,使得乘积是完全平方数。 其实就是开关,控制灯泡。 数 ----第i个质因子p的个数%2  = {1 , 0} == 开关----第i个灯泡 = {开 , 关} 最后使得所有灯泡都是灭着的方案数 = 2^自由变元个数   全部关着的情况     ==   一个数也不选   应省去 import java.io.BufferedReader;

王立平--AES加密图片实现 SkImageDecoder::Factory return null

这个问题是在加密图片,存入sd卡,在解密出来展示,出现的。我个人研究了很久没解决。最后经过高人指点,终于解决了。 在此,拿出来分享,希望各位少走弯路。 我之前的设计思路是:(可以不看哦) 1.把图片从drawable读入成bitmap 2.bitmap-->byte 3.调用AES的byte加密算法。 4.加密成byte,在转化为string 5,把string存入sd卡。

如何在Qt的widget上右键显示菜单

如何在Qt的widget上右键显示菜单 今天早上一来,我老大叫我在widget上点击右键加上一个菜单,并相应其响应的功能,因为我成刚接触Qt,所以看了下QtGUI编程这本书,做出来,记录下来,说不定哪天还用得上啊! 废话不多说,直接上代码: 方法一: m_text = QTextCodec::codecForLocale(); ui->tableWidget->addAction(ne

《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于抽象工厂的迷宫

 示例:基于抽象工厂的迷宫   实现:     如果TMaze.Create是传递一个对象当作参数来建立rooms、walls及doors;如此你可以以不同的参数来改变rooms、walls及doors的类。  请注意MazeFactory也就是工厂方法(Factory Method)的一个集合;这是最通常实现抽象工厂模式的方式。同时请注意MazeFactory不是一个抽象类

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from class path resource [bean1.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineN

QT窗体Widget使用的若干问题

这里介绍的是widget 窗体的属性 最完整的属性请查看qt自带的帮助文档,这里之拿了一部分做说明 窗体属性: object name:物件名称 qwidget:enable 使能本部件 geometry:窗口位置和大小设置 sizepolicy: 1. Fixed: 大小不能改变 2. Minimum: 已经是最小, 不能再被缩小, 但

cannot be cast toandroid.widget.HeaderViewListAdapter

在做上拉刷新的时候,想要在下拉到底部的时候通过addFooterView给listview添加一个view,遇到这个异常 网上找到解决方法之后,记录下。 ---------------------------------------------- cannot be cast toandroid.widget.HeaderViewListAdapter 用listview设置h

LLaMA-Factory仓基础功能架构及NPU/GPU环境实战演练

LLaMA-Factory 基础篇 LLaMA-Factory简介 LLaMA-Factory是一个开源的大规模语言模型微调框架,设计用于简化大模型的训练过程。它提供了一个统一的平台,支持多种大模型的微调,包括LLaMA、BLOOM、Mistral等,旨在帮助用户快速适应和调整这些模型以适应特定的应用场景。LLaMA-Factory通过提供一套完整的工具和接口,使用户能够轻松地对预训练的

简单工厂模式(Abstract Factory)

一直想认认真真的学习一下设计模式,发现不开始行动起来一直找不到时间好好学习一下,索性通过博客的方式督促自己过一遍设计模式 所谓简单工厂模式,英文描述为Provides one level of interface higher than the factory pattern. It is used to return one of several factories.主要是利用

Azure Data Factory 多选选项集不受支持

在用ADF往外部推数据时,会碰到CRM的一种数据类型,多选下拉框,如下图中的                   如果我们把多选字段输入源字段中,会得到如下的提示                 查询官方文档,则有如下的说法      所以把值往外推就需要变通下,例如使用一个文本字段将多选的value值以文本的形式存下来,以这样的格式"1,2,3",可以利用power a