对于同余方程的高斯消元啊。

其实也差不多吧。先同一位通分,然后减一下就好了。

主要是判无解和多解的麻烦,需要注意即使有自由元也可能先无解

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath> #define MOD(x) (x%7+7)%7
using namespace std; int n,m;
char ss[];
int scs()
{
scanf("%s",ss+);
if(ss[]=='M')return ;
else if(ss[]=='T'&&ss[]=='U')return ;
else if(ss[]=='W')return ;
else if(ss[]=='T')return ;
else if(ss[]=='F')return ;
else if(ss[]=='S'&&ss[]=='A')return ;
else return ;
} int gcd(int a,int b)
{
if(a==)return b;
return gcd(b%a,a);
}
int exgcd(int a,int b,int &x,int &y)
{
if(a==)
{
x=,y=;
return b;
}
else
{
int tx,ty;
int d=exgcd(b%a,a,tx,ty);
x=ty-b/a*tx;
y=tx;
return d;
}
} int qg[][],qc[];
int as[];
void gauss()
{
int j,jj;
for(j=,jj=;j<=n&&jj<=m;j++)
{
for(int i=jj;i<=m;i++)
if(qg[i][j]!=)
{
for(int k=j;k<=n;k++)swap(qg[i][k],qg[jj][k]);
swap(qc[i],qc[jj]);
break;
}
if(qg[jj][j]==)continue; for(int i=;i<=m;i++)
{
if(i==jj)continue; int gg=gcd(qg[i][j],qg[jj][j]);
int ml1=qg[jj][j]/gg,ml2=qg[i][j]/gg; for(int k=;k<=n;k++)
qg[i][k]=MOD(qg[i][k]*ml1-qg[jj][k]*ml2);
qc[i]=MOD(qc[i]*ml1-qc[jj]*ml2);
}
jj++;
}
for(int i=jj;i<=m;i++)
if(qc[i]>){printf("Inconsistent data.\n");return ;}
if(jj!=j||j<=n){printf("Multiple solutions.\n");return ;} for(int j=;j<=n;j++)
{
int A=qg[j][j],B=,K=qc[j],x,y;
int d=exgcd(A,B,x,y); x=(x*(K/d)%(B/d)+(B/d))%(B/d);
if(x<)x+=;
as[j]=x;
}
for(int j=;j<n;j++)printf("%d ",as[j]);
printf("%d\n",as[n]);
} int v[];
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==&&m==)break; for(int i=;i<=m;i++)
{
int k,x;
scanf("%d",&k);int s1=scs(),s2=scs();
qc[i]=MOD(s2-s1+); memset(v,,sizeof(v));
for(int j=;j<=k;j++)
scanf("%d",&x), v[x]++; for(int j=;j<=n;j++)qg[i][j]=MOD(v[j]);
} gauss();
}
return ;
}

poj2947Widget Factory的更多相关文章

  1. POJ2947Widget Factory(高斯消元解同模方程)

    http://poj.org/problem?id=2947 题目大意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下:p start enda1,a2......ap (1<=ai&l ...

  2. POJ2947-Widget Factory

    工厂里每件期间的生产时间为3-9天,告诉你有N个器件和M个计划,每个计划都是说明生产1-N号器件的时间,最后问你每件器件的生产时间.或者多解或没有解. 例如样例 2 3 2 MON THU 1 2 3 ...

  3. PHP设计模式(三)抽象工厂模式(Abstract Factory For PHP)

    一.什么是抽象工厂模式 抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足以下条件: 系统中有多个产品族,而系统一次只可能消费其中一族产品. 同 ...

  4. PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)

    最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...

  5. 菜鸟理解的工厂模式(Factory Pattern)是什么样子的?

    直接开始说了,不浪费园友宝贵的时间! 什么是工厂模式? 在学习前,先问一下:"它是什么?". 工厂模式,它是项目里面常用的设计模式之一. 它是属于创建型模式,简单的理解创建型模式就 ...

  6. Angular Service和Factory应用的区别

    Service可以用来将返回同类业务的多种返回值 Factory可以用来提供对同类业务的多个方法的调用 另外:Provider可以用来封装各独立职责

  7. 【解决方案】 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userHandler': Injection of resource dependencies failed;

    一个错误会浪费好多青春绳命 鉴于此,为了不让大家也走弯路,分享解决方案. [错误代码提示] StandardWrapper.Throwableorg.springframework.beans.fac ...

  8. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  9. C#设计模式之简单工厂模式(Simple Factory)

    1. 概述 简单工厂模式就是将一个类的实例化交给一个静态工厂来执行. 2. 使用频率 中 3. 模式结构 3.1 机构图 3.2 模式中的角色 Product:抽象类,把具体产品类公共的代码进行抽象和 ...

随机推荐

  1. Python迭代与递归方法实现斐波拉契数列

    首先是迭代的方法实现: def f(n): f1, f2, fn = 1, 1, 1 while n>2: fn = f1 + f2 f1 = f2 f2 = fn n = n - 1 retu ...

  2. TLD算法

    TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总结,感觉挺好的,收藏了! ...

  3. 10) 十分钟学会android--app数据保存三种方式

    虽然可以在onPause()时保存一些信息以免用户的使用进度被丢失,但大多数Android app仍然是需执行保存数据的动作.大多数较好的apps都需要保存用户的设置信息,而且有一些apps必须维护大 ...

  4. Windows2012R2 时间同步设置

    Windows2012R2里没有了internet时间,或者Internet时间无法同步成功,都可以尝试使用如下方法. 1.打开命令提示符, 输入:gpedit.msc,打开组策略管理器 2.执行上述 ...

  5. 分层、链式分析、url、联系的长度

    分层.链式分析.url.联系的长度. 分层结构符合软件处理的工具链性和步骤性: 分层的每一次都是一个节点或步骤: 链式结构普遍存在于自然界,比如食物链: 联系是普遍存在的,不只是两个事物间的联系,而且 ...

  6. 代码检查工具sonarqube介绍及使用

    亲测有效 环境:springboot+gradle+jdk1.8+sonarqube7.4 一.说明: SonarQube为静态代码检查工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速 ...

  7. Django 连接MySQL 通过pymysql 库

    ython3 如何安装pymysql 库,在此不再做多的讲解,如果有想知道如何安装的朋友,请求参考下面的连接地址: 第一步:应用setting.py 文件设置mysql 数据库连接相关属性.   DA ...

  8. MySQL SQL模式特点汇总

    前言 MySQL服务器可以在不同的SQL模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于sql_mode系统变量的值.DBA可以设置全局SQL模式以匹配站点服务器操作要求,并且 ...

  9. vue 2.0 购物车小球抛物线

    备注:此项目模仿 饿了吗.我用的是最新的Vue, 视频上的一些写法已经被废弃了. 布局代码 <div class="ball-container"> <trans ...

  10. Python-基础-day2

    Python环境的安装 安装Python: windows: 1.下载安装包     https://www.python.org/downloads/ 2.安装     默认安装路径:C:\pyth ...