poj 2947 Widget Factory (高斯消元解同余方程组+判断无解、多解)
http://poj.org/problem?id=2947
血泪史:
CE:poj的string类型要加string库,swap不能直接交换数组
WA:
x[m-1]也有可能<3啊O(≧口≦)O
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- const int mod=;
- int n,m;
- char ch[][] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
- int a[][];
- int x[];
- int inv[];
- void read(int &x)
- {
- x=; char c=getchar();
- while(!isdigit(c)) c=getchar();
- while(isdigit(c)) { x=x*+c-''; c=getchar(); }
- }
- int getgcd(int a,int b) { return !b ? a : getgcd(b,a%b); }
- int getlcm(int a,int b) { return a*b/getgcd(a,b); }
- void preinv()
- {
- inv[]=;
- for(int i=;i<=;++i) inv[i]=(-mod/i*inv[mod%i]%mod+mod)%mod;
- }
- int gauss()
- {
- int equ=n,var=m;
- int i,j,k;
- int max_r,col;
- int ta,tb,lcm;
- int tmp;
- for(k=,col=;k<equ && col<var;++k,++col)
- {
- max_r=k;
- for(i=k+;i<equ;++i)
- if(abs(a[i][col])>abs(a[max_r][col])) max_r=i;
- if(!a[max_r][col]) { --k; continue; }
- if(k!=max_r)
- for(j=col;j<var+;++j) swap(a[k][j],a[max_r][j]);
- for(i=k+;i<equ;++i)
- if(a[i][col])
- {
- lcm=getlcm(abs(a[i][col]),abs(a[k][col]));
- ta=lcm/abs(a[i][col]);
- tb=lcm/abs(a[k][col]);
- if(a[i][col]*a[k][col]<) tb=-tb;
- for(j=col;j<var+;++j) a[i][j]=((a[i][j]*ta-a[k][j]*tb)%mod+mod)%mod;
- }
- }
- for(int i=k;i<equ;++i)
- if(a[i][var]) return -;
- if(k<var) return -;
- for(int i=var-;i>=;--i)
- {
- tmp=a[i][var];
- for(j=i+;j<var;++j)
- if(a[i][j])
- {
- tmp-=a[i][j]*x[j];
- tmp=(tmp%mod+mod)%mod;
- }
- x[i]=tmp*inv[a[i][i]]%mod;
- }
- return ;
- }
- int turn(char *c)
- {
- for(int i=;i<;++i)
- if(!strcmp(c,ch[i])) return i+;
- }
- int main()
- {
- int k,xi;
- char c[];
- int s,t;
- preinv();
- while(scanf("%d%d",&m,&n)!=EOF)
- {
- if(!m) return ;
- memset(a,,sizeof(a));
- for(int i=;i<n;++i)
- {
- read(k);
- scanf("%s",c);
- s=turn(c);
- scanf("%s",c);
- t=turn(c);
- a[i][m]=(t-s++)%;
- while(k--)
- {
- read(xi);
- a[i][xi-]++;
- }
- }
- for(int i=;i<n;++i)
- for(int j=;j<m;++j)
- a[i][j]%=mod;
- int ans=gauss();
- if(ans==-) puts("Inconsistent data.");
- else if(ans==-) puts("Multiple solutions.");
- else
- {
- for(int i=;i<m;++i)
- {
- if(x[i]<) x[i]+=;
- printf("%d%c",x[i],i==m- ? '\n' : ' ');
- }
- }
- }
- }
poj 2947 Widget Factory (高斯消元解同余方程组+判断无解、多解)的更多相关文章
- Poj 2947 widget factory (高斯消元解同模方程)
题目连接: http://poj.org/problem?id=2947 题目大意: 有n种类型的零件,m个工人,每个零件的加工时间是[3,9],每个工人在一个特定的时间段内可以生产k个零件(可以相同 ...
- POJ 2947 2947 Widget Factory 高斯消元
给出组件的数量n,给出记录的数量m(n就是变元数量,m是方程数量).每一个记录代表一个方程,求每个组件的生产天数. 高斯消元即可 #include <cstdio> #include &l ...
- POJ 2947 Widget Factory(高斯消元)
Description The widget factory produces several different kinds of widgets. Each widget is carefully ...
- POJ 2947-Widget Factory(高斯消元解同余方程式)
题目地址:id=2947">POJ 2947 题意:N种物品.M条记录,接写来M行,每行有K.Start,End,表述从星期Start到星期End,做了K件物品.接下来的K个数为物品的 ...
- POJ2947Widget Factory(高斯消元解同模方程)
http://poj.org/problem?id=2947 题目大意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下:p start enda1,a2......ap (1<=ai&l ...
- poj 2947 Widget Factory
Widget Factory 题意:有n件装饰品,有m组信息.(1 <= n ,m<= 300)每组信息有开始的星期和结束的星期(是在mod 7范围内的)并且还包括num种装饰品的种类(1 ...
- POJ 1830 开关问题 高斯消元,自由变量个数
http://poj.org/problem?id=1830 如果开关s1操作一次,则会有s1(记住自己也会变).和s1连接的开关都会做一次操作. 那么设矩阵a[i][j]表示按下了开关j,开关i会被 ...
- A - The Water Bowls POJ - 3185 (bfs||高斯消元)
题目链接:https://vjudge.net/contest/276374#problem/A 题目大意:给你20个杯子,每一次操作,假设当前是对第i个位置进行操作,那么第i个位置,第i+1个位置, ...
- POJ 1166 The Clocks 高斯消元 + exgcd(纯属瞎搞)
依据题意可构造出方程组.方程组的每一个方程格式均为:C1*x1 + C2*x2 + ...... + C9*x9 = sum + 4*ki; 高斯消元构造上三角矩阵,以最后一个一行为例: C*x9 = ...
随机推荐
- 深入了解Kubernetes REST API的工作方式
关于Kubernetes REST API的工作方式: 在哪里以及如何定义从REST路径到处理REST调用的函数的映射? 与etcd的交互发生在哪里? 从客户端发出请求到保存在etcd中对象的端到端路 ...
- [ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile (scala-compile-first) on project spark-tags_2.11: Execution scala-compile-first of goal net.alchim31.maven:scala-mave
build/mvn -Pkubernetes -Phadoop-2.7 -Dhadoop.version=2.7.3 -Phive -Phive-thriftserver -DskipTests cl ...
- 七个要素帮你打造现象级手游!优化程度堪比《QQ飞车》
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由WeTest质量开放平台团队发表于云+社区专栏 作者:申江涛,腾讯互娱客户端工程师 商业转载请联系腾讯WeTest获得授权,非商业转载 ...
- Jenkins报表 代码 指标分析
Jenkins报表 这表现在前面的章节中,也有可用最简单的一种是适用于 JUnit 测试报告的许多报表插件. 在生成后动作进行任何工作,你可以定义要创建的报告. 该构建已经完成,测试结果选项将可进一步 ...
- 基于skip-gram做推荐系统的想法
一.人工智能之自然语言处理 自然语言处理(Natural Language Processing, NLP),是人工智能的分支科学,意图是使计算机具备处理人类语言的能力. “处理人类语言的能力”要达到 ...
- Arcengine效率探究之一——属性的读取(转载)
http://blog.csdn.net/lk103852503/article/details/6566652 在写一个对属性表的统计函数时,发现执行速度奇慢无比,百思不得其解,其实算法并不复杂,后 ...
- 如何在一个电脑上同时使用两个Git的账号
前言 又需要登录公司的账号,又想在电脑上使用自己的账号. 实现 首先是git config方面的设置,要取消掉原本对于git账号的全局设置. git config --global --unset u ...
- js分页实例
js分页实例 案例1 1.js_pageusers.html <!DOCTYPE html> <html> <head> <title>js_pageu ...
- Linux基础六(网络管理)
目录 一.网络配置 1. IP 地址配置 2. 网络配置文件 3. 虚拟机网络配置参数 二.网络命令 1. 网络环境查看命令 2. 网络测试命令 三.远程会话安全协议-SSH原理 1. SSH 原理 ...
- [Java]Object有哪些公用方法?
1.clone方法 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常. 主要是JAVA里除了8种基本类型传 ...