POJ_2947

将M条信息翻译成同余方程组后用高斯消元求解就可以了。

#include<stdio.h>
#include<string.h>
#include<iostream>
#define MAXD 310
using namespace std;
int N, M, mat[MAXD][MAXD], ans[MAXD], h[MAXD];
char a[5], b[5], day[][5] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
int getday(char *b)
{int i;for(i = 0; i < 7; i ++)if(strcmp(b, day[i]) == 0)break;return i;
}
void init()
{int i, j, k, n;for(i = 0; i < M; i ++){scanf("%d", &n);scanf("%s%s", a, b);mat[i][N] = (getday(b) - getday(a) + 8) % 7;memset(h, 0, sizeof(h));for(j = 0; j < n; j ++){scanf("%d", &k);++ h[k - 1];}for(j = 0; j < N; j ++)mat[i][j] = h[j] % 7;}
}
int gauss()
{int i, j, k, x, y, a, b;for(i = j = 0; i < M && j < N; i ++, j ++){if(mat[i][j] == 0){for(k = i + 1; k < M; k ++)if(mat[k][j])break;if(k == M){-- i;continue;}for(y = j; y <= N; y ++)swap(mat[i][y], mat[k][y]);}for(x = i + 1; x < M; x ++)if(mat[x][j]){a = mat[i][j], b = mat[x][j];for(y = j; y <= N; y ++)mat[x][y] = ((mat[x][y] * a - mat[i][y] * b) % 7 + 7) % 7;}}for(k = i; k < M; k ++)if(mat[k][N])return -1;if(i < N)return -2;for(i = N - 1; i >= 0; i --){b = mat[i][N];for(j = i + 1; j < N; j ++)b -= mat[i][j] * ans[j];b = (b % 7 + 7) % 7;for(a = 3; a <= 9; a ++)if(((a * mat[i][i] % 7 + 7) % 7) == b)break;ans[i] = a;}return 0;
}
void solve()
{int i, k = gauss();if(k == -2)printf("Multiple solutions.\n");else if(k == -1)printf("Inconsistent data.\n");else{printf("%d", ans[0]);for(i = 1; i < N; i ++)printf(" %d", ans[i]);printf("\n");}
}
int main()
{for(;;){scanf("%d%d", &N, &M);if(!N && !M)break;init();solve();}return 0;
}

转载于:https://www.cnblogs.com/staginner/archive/2012/05/11/2496788.html

POJ 2847 Widget Factory相关推荐

  1. POJ 2947 Widget Factory (高斯消元解同余方程组)

    题意:N种物品,M条记录,接写来M行,每行有K,str1,str2,表示第i个记录从星期str1到星期str2,做了K件物品,接下来的K个数为物品的编号.求做每个物品所需的时间,并且最后结果在3-9之 ...

  2. poj 2947 Widget Factory

    这几把题意我感觉很变态啊,题意:https://blog.csdn.net/qingshui23/article/details/52511894 #include <iostream>/ ...

  3. 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins)

    使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins) 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful ...

  4. POJ 2393 Yogurt factory(贪心)

    总时间限制: 1000ms 内存限制: 65536kB 描述 The cows have purchased a yogurt factory that makes world-famous Yuck ...

  5. 林大陈宇老师的原创高斯

    最后1 行,有x4=b4; 第3 行: x4+x3=b3,已经求出x4=b4 了,带入第3 行,可求出x3;同理,把x4 x3 带入 第2 行,还可求出x2;把x4 x3 x2 带入到第1 行,可求出 ...

  6. 高斯消元法java语言设计_高斯消元法(Gauss Elimination)【超详解模板】

    高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵. 高斯消元法的原理是: 若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程 ...

  7. hdu与poj题目分类

    POJ 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(po ...

  8. 编写jQueryUI插件(widget)

    使用jQueryUI的widget来写插件,相比于基本的jquery插件有一些好处: * 方便实现继承,代码重用 * 默认是单例 * widget已经给你实现好的一些常用方法,例如destroy 带来 ...

  9. jQuery ui widget和jQuery plugin的实现原理简单比较

    一.创建 1.  jQuery plugin (function($){ $.fn.MyPlugin=function(){ //js代码 } })(jQuery) 为了与页面上其他代码友好相处,将p ...

最新文章

  1. SQL Server DBA工作内容详解
  2. 互联网思维-NO.1思维(2)
  3. Tomcat - 源码分析Tomcat是如何处理一个Servlet请求的
  4. Android踩坑日记:android7.0动态相机权限
  5. python完全背包最优_python 完全背包问题_遗传算法Python实战 009.背包问题
  6. 学习office add-in
  7. IntelliJ IDEA for Mac 如何将普通 Java 项目变为 Web 项目
  8. 13-12-X-Pack的配置与检查
  9. python的reduce()函数
  10. IAR EWARM 破解方法
  11. 人工智能是在数学计算机科学控制论信息论,ai人工智能需要学什么 人工智能对数学有何要求...
  12. Pr入门系列之二:导入与管理素材
  13. selenium操作firefox
  14. 数据结构 创建结构体学生表 c语言
  15. Webtoos 仿Q+云桌面框架
  16. 硬件电路设计原理图设计
  17. Android+H5开发
  18. 背单词-项目设计文档
  19. linux用户登录身份验证错误,启动 WLS 时的身份验证错误(解决linux下问题)
  20. WinForm PictureBox加载图片方法

热门文章

  1. CVPR 2021 论文开放下载了!
  2. 初学者学python,列表推导到zip()函数,必须会的五种技巧
  3. CVPR2019 oral 目标跟踪算法之SiamRPN++
  4. 【项目实践】:KNN实现手写数字识别(附Python详细代码及注释)
  5. 带你自学Python系列(三):列表遍历(for循环)
  6. VTK模块学习(一)
  7. C++ vector类型要点总结(以及各种algorithm算法函数)
  8. java调用app接口代码_java servlet手机app访问接口(二)短信验证
  9. JAVA里面pressed的反义词_pressed是什么意思_pressed怎么读_pressed翻译_用法_发音_词组_同反义词_紧缺的-新东方在线英语词典...
  10. python测速程序_Python大数据分析学习.测试程序执行速度