AcWing 227. 小部件厂 (高斯消元)打卡
题目:https://www.acwing.com/problem/content/description/229/
题意:有很多个零件,每个零件的生产时间都在3-9天之间,现在只知道每个工人的生产部件有哪些,还有生产日期的星期几和完成日期的星期几,求每个部件的具体生产日期
思路:首先我们根据两个星期,我们实际上可以计算出具体时间,然后我们到每个工人生产零件的数目还有时间,相当于我们可以建立这么多个方程组,然后我们就可以消元得出答案
注意处理3-9天范围的细节即可
#include<bits/stdc++.h>
using namespace std;
#define N 305
char day[][]={"","MON","TUE","WED","THU","FRI","SAT","SUN"};
int n,m,k,mat[N][N],ans[N]; int gcd(int a,int b)
{
if(b==)
return a;
else return gcd(b,a%b);
}
bool mul_solu;
bool gauss(int mat[N][N],int m,int n)
{
mul_solu=false;
int row,col;
for(row=,col=;row<m && col<n;++row,++col)
{
int p=row;
for(int j=row+;j<m;++j)
if(abs(mat[j][col])>abs(mat[p][col]))
p=j;
if(p!=row)
{
for(int j=;j<=n;++j)
swap(mat[row][j],mat[p][j]);
}
if(mat[row][col]==) // 最大的都为0,说明这一列以下全是0
{
row--;
continue;
}
for(int j=row+;j<m;++j)
{
int gg=gcd(mat[row][col],mat[j][col]);
int muli=mat[j][col]/gg%;
int mulj=mat[row][col]/gg%;
for(int k=col;k<=n;++k)
{
mat[j][k]=mat[j][k]*mulj-mat[row][k]*muli;
mat[j][k]=(mat[j][k]%+)%;
}
}
}
for(int i=row;i<m;++i) // inconsistent必须先与multiple判断
if(mat[i][n])
return false;
if(row<n) // free variable 少
{
mul_solu=true;
return true;
} for(int i=n-;i>=;--i)
{
bool flag=false;
for(int j=;j<=;++j)
{
int rr=;
for(int k=i+;k<n;++k)
rr+=mat[k][n]*mat[i][k]%,rr%=;
rr+=j*mat[i][i];
if(rr%==mat[i][n])
{
mat[i][n]=j;
flag=true;
break;
}
}
if(!flag)
return false;
} return true;
} int get_time(char *t1,char *t2)
{
int st,ed;
for(int i=;i<=;++i)
{
if(strcmp(t1,day[i])==)
st=i;
if(strcmp(t2,day[i])==)
ed=i;
}
if(ed-st>=)
return ed-st+;
else return ed+-st;
}
char t1[],t2[];
int tt;
int main ()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n== && m==) break;
memset(mat,,sizeof(mat));
for(int i=;i<m;++i)
{
scanf("%d%s%s",&k,t1,t2);
mat[i][n]=get_time(t1,t2)%;
for(int j=;j<=k;++j)
{
scanf("%d",&tt);
mat[i][tt-]++;
mat[i][tt-]%=;
}
}
if(gauss(mat,m,n))
{
if(mul_solu)
{
printf("Multiple solutions.\n");
}
else
{
for(int i=;i<n-;++i)
printf("%d ",mat[i][n]);
printf("%d\n",mat[n-][n]);
}
}
else printf("Inconsistent data.\n");
}
return ;
}
AcWing 227. 小部件厂 (高斯消元)打卡的更多相关文章
- AcWing    209. 装备购买  (高斯消元线性空间)打卡
		脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量z[i]=(ai,1,ai,2,..,ai,m)z[i]=(ai,1,ai,2,..,ai,m) 表示,每个装备需要 ... 
- CDOJ 1330 柱爷与远古法阵【高斯消元,卡精度】
		柱爷与远古法阵 Time Limit: 125/125MS (Java/Others) Memory Limit: 240000/240000KB (Java/Others) Submit S ... 
- AcWing   208. 开关问题     (高斯消元+状压)打卡
		有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关,如果为关就变为开. 你的目 ... 
- 【BZOJ3640】JC的小苹果 概率DP+高斯消元
		[BZOJ3640]JC的小苹果 Description 让我们继续JC和DZY的故事. “你是我的小丫小苹果,怎么爱你都不嫌多!” “点亮我生命的火,火火火火火!” 话说JC历经艰辛来到了城市B,但 ... 
- CDOJ 1330 柱爷与远古法阵(高斯消元)
		CDOJ 1330 柱爷与远古法阵(高斯消元) 柱爷与远古法阵 Time Limit: 125/125MS (Java/Others) Memory Limit: 240000/240000K ... 
- 单(single):换根dp,表达式分析,高斯消元
		虽说这题看大家都改得好快啊,但是为什么我感觉这题挺难.(我好菜啊) 所以不管怎么说那群切掉这题的大佬是不会看这篇博客的所以我要开始自嗨了. 这题,明显是树dp啊.只不过出题人想看你发疯,询问二合一了而 ... 
- BZOJ 4031: [HEOI2015]小Z的房间 高斯消元 MartixTree定理 辗转相除法
		4031: [HEOI2015]小Z的房间 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4031 Description 你突然有了一个 ... 
- 【bzoj4031】[HEOI2015]小Z的房间 Matrix-Tree定理+高斯消元
		[bzoj4031][HEOI2015]小Z的房间 2015年4月30日3,0302 Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的 ... 
- POJ SETI  高斯消元 + 费马小定理
		http://poj.org/problem?id=2065 题目是要求 如果str[i] = '*'那就是等于0 求这n条方程在%p下的解. 我看了网上的题解说是高斯消元 + 扩展欧几里德. 然后我 ... 
随机推荐
- C#生成一个按时间排序的DUID
			/// <summary> /// 创建一个按时间排序的Guid /// </summary> /// <returns></returns> publ ... 
- [CSP-S模拟测试]:公园(BFS+剪枝)
			题目传送门(内部题31) 输入格式 第一行,五个整数$V,M,N,E,L$.接下来$M$行,每行两个正整数$s_i,a_i$.保证$s_i$互不相等.接下来$N$行,每行两个正整数$t_j,b_j$. ... 
- 20175203 2018-2019-2 实验一《Java开发环境的熟悉》实验报告
			20175203 2018-2019-2 实验一<Java开发环境的熟悉> 实验内容及步骤 使用JDK编译.运行简单的Java程序 此代码较为基础,主要是为了让我们熟悉JDK编程环境及如何 ... 
- php面试专题---5、流程控制考点
			php面试专题---5.流程控制考点 一.总结 一句话总结: 看代码不要先看函数里面的内容,要用的时候再去看:注意静态,注意变量作用域,php中的内置函数需要去归类总结,就是太容易忘记了 1.写出如下 ... 
- phpredis报错信息:protocol error, got 'o' as reply type byte解决方案
			今天在前端调用PHP的接口时,有报错信息为:protocol error, got 'o' as reply type byte另外此错误有几率会重现,并不是必现的.十分疑惑,遂百度一下,发现是red ... 
- (60)c#  com com+ dcom
			一.创建COM组件 1.创建项目 2.设置使程序集可见 AssemblyInfo.cs中flase改为ture 或者 项目属性 设置可见 3.Guid生成器 在开始程序下能够找到Guid生成器 每次都 ... 
- 用 Flask 来写个轻博客 (27) — 使用 Flask-Cache 实现网页缓存加速
			目录 目录 前文列表 扩展阅读 Flask-Cache 应用 Flask-Cache 实现视图函数缓存 缓存无参数的普通函数 缓存带参数的普通函数 缓存无动态参数的视图函数 缓存带动态参数的视图函数 ... 
- 关于之前提到的python开发restful风格的接口
			此处不做详细说明. https://gitee.com/alin2017/my-i-demo.git 附上git地址,有兴趣的可以去clone一下. 里面针对代码都有相应的注释, 对于每一个文件也有r ... 
- node_exporter + grafana
			监控服务器CPU.内存.磁盘.I/O等信息,首先需要安装node_exporter.node_exporter的作用是用于机器系统数据收集. 下载安装: https://github.com/prom ... 
- selenium,webdriver 执行js语句 对象是百度
			代码要多敲 注释要清晰 最后的两种方法,没有实现我想要的结果 有知道的朋友,给我留言吧 #执行js语句 from selenium import webdriver import time #生成浏览 ... 
