http://poj.org/problem?id=2947

血泪史:

CE:poj的string类型要加string库,swap不能直接交换数组

WA:

x[m-1]也有可能<3啊O(≧口≦)O

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5.  
  6. using namespace std;
  7.  
  8. const int mod=;
  9.  
  10. int n,m;
  11. char ch[][] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
  12.  
  13. int a[][];
  14. int x[];
  15.  
  16. int inv[];
  17.  
  18. void read(int &x)
  19. {
  20. x=; char c=getchar();
  21. while(!isdigit(c)) c=getchar();
  22. while(isdigit(c)) { x=x*+c-''; c=getchar(); }
  23. }
  24.  
  25. int getgcd(int a,int b) { return !b ? a : getgcd(b,a%b); }
  26.  
  27. int getlcm(int a,int b) { return a*b/getgcd(a,b); }
  28.  
  29. void preinv()
  30. {
  31. inv[]=;
  32. for(int i=;i<=;++i) inv[i]=(-mod/i*inv[mod%i]%mod+mod)%mod;
  33. }
  34.  
  35. int gauss()
  36. {
  37. int equ=n,var=m;
  38. int i,j,k;
  39. int max_r,col;
  40. int ta,tb,lcm;
  41. int tmp;
  42. for(k=,col=;k<equ && col<var;++k,++col)
  43. {
  44. max_r=k;
  45. for(i=k+;i<equ;++i)
  46. if(abs(a[i][col])>abs(a[max_r][col])) max_r=i;
  47. if(!a[max_r][col]) { --k; continue; }
  48. if(k!=max_r)
  49. for(j=col;j<var+;++j) swap(a[k][j],a[max_r][j]);
  50. for(i=k+;i<equ;++i)
  51. if(a[i][col])
  52. {
  53. lcm=getlcm(abs(a[i][col]),abs(a[k][col]));
  54. ta=lcm/abs(a[i][col]);
  55. tb=lcm/abs(a[k][col]);
  56. if(a[i][col]*a[k][col]<) tb=-tb;
  57. for(j=col;j<var+;++j) a[i][j]=((a[i][j]*ta-a[k][j]*tb)%mod+mod)%mod;
  58. }
  59. }
  60. for(int i=k;i<equ;++i)
  61. if(a[i][var]) return -;
  62. if(k<var) return -;
  63. for(int i=var-;i>=;--i)
  64. {
  65. tmp=a[i][var];
  66. for(j=i+;j<var;++j)
  67. if(a[i][j])
  68. {
  69. tmp-=a[i][j]*x[j];
  70. tmp=(tmp%mod+mod)%mod;
  71. }
  72. x[i]=tmp*inv[a[i][i]]%mod;
  73. }
  74. return ;
  75. }
  76.  
  77. int turn(char *c)
  78. {
  79. for(int i=;i<;++i)
  80. if(!strcmp(c,ch[i])) return i+;
  81. }
  82.  
  83. int main()
  84. {
  85. int k,xi;
  86. char c[];
  87. int s,t;
  88. preinv();
  89. while(scanf("%d%d",&m,&n)!=EOF)
  90. {
  91. if(!m) return ;
  92. memset(a,,sizeof(a));
  93. for(int i=;i<n;++i)
  94. {
  95. read(k);
  96. scanf("%s",c);
  97. s=turn(c);
  98. scanf("%s",c);
  99. t=turn(c);
  100. a[i][m]=(t-s++)%;
  101. while(k--)
  102. {
  103. read(xi);
  104. a[i][xi-]++;
  105. }
  106. }
  107. for(int i=;i<n;++i)
  108. for(int j=;j<m;++j)
  109. a[i][j]%=mod;
  110. int ans=gauss();
  111. if(ans==-) puts("Inconsistent data.");
  112. else if(ans==-) puts("Multiple solutions.");
  113. else
  114. {
  115. for(int i=;i<m;++i)
  116. {
  117. if(x[i]<) x[i]+=;
  118. printf("%d%c",x[i],i==m- ? '\n' : ' ');
  119. }
  120. }
  121. }
  122. }

poj 2947 Widget Factory (高斯消元解同余方程组+判断无解、多解)的更多相关文章

  1. Poj 2947 widget factory (高斯消元解同模方程)

    题目连接: http://poj.org/problem?id=2947 题目大意: 有n种类型的零件,m个工人,每个零件的加工时间是[3,9],每个工人在一个特定的时间段内可以生产k个零件(可以相同 ...

  2. POJ 2947 2947 Widget Factory 高斯消元

    给出组件的数量n,给出记录的数量m(n就是变元数量,m是方程数量).每一个记录代表一个方程,求每个组件的生产天数. 高斯消元即可 #include <cstdio> #include &l ...

  3. POJ 2947 Widget Factory(高斯消元)

    Description The widget factory produces several different kinds of widgets. Each widget is carefully ...

  4. POJ 2947-Widget Factory(高斯消元解同余方程式)

    题目地址:id=2947">POJ 2947 题意:N种物品.M条记录,接写来M行,每行有K.Start,End,表述从星期Start到星期End,做了K件物品.接下来的K个数为物品的 ...

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

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

  6. poj 2947 Widget Factory

    Widget Factory 题意:有n件装饰品,有m组信息.(1 <= n ,m<= 300)每组信息有开始的星期和结束的星期(是在mod 7范围内的)并且还包括num种装饰品的种类(1 ...

  7. POJ 1830 开关问题 高斯消元,自由变量个数

    http://poj.org/problem?id=1830 如果开关s1操作一次,则会有s1(记住自己也会变).和s1连接的开关都会做一次操作. 那么设矩阵a[i][j]表示按下了开关j,开关i会被 ...

  8. A - The Water Bowls POJ - 3185 (bfs||高斯消元)

    题目链接:https://vjudge.net/contest/276374#problem/A 题目大意:给你20个杯子,每一次操作,假设当前是对第i个位置进行操作,那么第i个位置,第i+1个位置, ...

  9. POJ 1166 The Clocks 高斯消元 + exgcd(纯属瞎搞)

    依据题意可构造出方程组.方程组的每一个方程格式均为:C1*x1 + C2*x2 + ...... + C9*x9 = sum + 4*ki; 高斯消元构造上三角矩阵,以最后一个一行为例: C*x9 = ...

随机推荐

  1. 深入了解Kubernetes REST API的工作方式

    关于Kubernetes REST API的工作方式: 在哪里以及如何定义从REST路径到处理REST调用的函数的映射? 与etcd的交互发生在哪里? 从客户端发出请求到保存在etcd中对象的端到端路 ...

  2. [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 ...

  3. 七个要素帮你打造现象级手游!优化程度堪比《QQ飞车》

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由WeTest质量开放平台团队发表于云+社区专栏 作者:申江涛,腾讯互娱客户端工程师 商业转载请联系腾讯WeTest获得授权,非商业转载 ...

  4. Jenkins报表 代码 指标分析

    Jenkins报表 这表现在前面的章节中,也有可用最简单的一种是适用于 JUnit 测试报告的许多报表插件. 在生成后动作进行任何工作,你可以定义要创建的报告. 该构建已经完成,测试结果选项将可进一步 ...

  5. 基于skip-gram做推荐系统的想法

    一.人工智能之自然语言处理 自然语言处理(Natural Language Processing, NLP),是人工智能的分支科学,意图是使计算机具备处理人类语言的能力. “处理人类语言的能力”要达到 ...

  6. Arcengine效率探究之一——属性的读取(转载)

    http://blog.csdn.net/lk103852503/article/details/6566652 在写一个对属性表的统计函数时,发现执行速度奇慢无比,百思不得其解,其实算法并不复杂,后 ...

  7. 如何在一个电脑上同时使用两个Git的账号

    前言 又需要登录公司的账号,又想在电脑上使用自己的账号. 实现 首先是git config方面的设置,要取消掉原本对于git账号的全局设置. git config --global --unset u ...

  8. js分页实例

    js分页实例 案例1 1.js_pageusers.html <!DOCTYPE html> <html> <head> <title>js_pageu ...

  9. Linux基础六(网络管理)

    目录 一.网络配置 1. IP 地址配置 2. 网络配置文件 3. 虚拟机网络配置参数 二.网络命令 1. 网络环境查看命令 2. 网络测试命令 三.远程会话安全协议-SSH原理 1. SSH 原理 ...

  10. [Java]Object有哪些公用方法?

    1.clone方法 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常. 主要是JAVA里除了8种基本类型传 ...