Widget Factory

有N种零件,生产所需天数都为3~9天,有M条记录,记录开工星期几,和停工星期几,并告诉你这条记录所加工的零件,求每种零件的生产时间,\(1≤N,M≤300\)。

显然可以对于一条记录列出关于x的方程(设t为从开工到停工的最短时间,\(\{a_i\}\)表示每个零件的生产时间,\(\{b_i\}\)表示每个零件加工的多少)

\[b_1a_1+...+b_na_n=7x+t
\]

自然对于每个方程都有x这个未知数,没办法解,但是x前的系数都是7,考虑同余高斯消元,于是有

\[b_1a_1+...+b_na_n=t(mod\ 7)
\]

对于每条记录,列出这样的方程,你可以根据lcm来消元,也可以通过逆元来消元,最好选择以已解方程个数作为高斯消元的主体,剩下的与套路无疑。

参考代码:

#include <iostream>
#include <cstdio>
#include <map>
#include <cstring>
#define il inline
#define ri register
#define swap(x,y) x^=y^=x^=y
using namespace std;
int inv[8],jz[301][301],dis[8][8];
map<string,int>day;
il void mod(int&);
int main(){
inv[1]=1,day["MON"]=1,day["TUE"]=2,day["WED"]=3;
day["THU"]=4,day["FRI"]=5,day["SAT"]=6,day["SUN"]=7;
int n,m,i,j,k;
for(i=2;i<7;++i)inv[i]=-inv[7%i]*(7/i)%7,mod(inv[i]);
for(i=1;i<=7;++i){
dis[i][i]=1;
for(j=i+1;j<=7;++j)
dis[i][j]=j-i+1,dis[j][i]=9-dis[i][j];
}
while(scanf("%d%d",&n,&m),n&&m){
memset(jz,0,sizeof(jz));
for(i=1;i<=m;++i){
char s[4],t[4];
scanf("%d%s%s",&k,s,t);
jz[i][0]=dis[day[s]][day[t]];
while(k--)scanf("%d",&j),++jz[i][j];
for(j=0;j<=n;++j)jz[i][j]%=7;
}int w(0);
for(i=1;i<=n;++i){
for(j=w+1;j<=m;++j)
if(jz[j][i])break;if(j>m)continue;++w;
if(j!=w)for(k=0;k<=n;++k)swap(jz[w][k],jz[j][k]);
(jz[w][0]*=inv[jz[w][i]])%=7;
for(j=n;j>=i;--j)(jz[w][j]*=inv[jz[w][i]])%=7;
for(j=1;j<=m;++j){
if(!jz[j][i]||w==j)continue;
mod(jz[j][0]-=jz[w][0]*jz[j][i]);
for(k=n;k>=i;--k)
mod(jz[j][k]-=jz[j][i]*jz[w][k]);
}
}
for(i=w+1;i<=m;++i)
if(jz[i][0]){puts("Inconsistent data.");break;}
if(i<=m)continue;
if(w<n)puts("Multiple solutions.");
else{
mod(jz[i][0]),mod(jz[i][i]);
for(i=1;i<=n;++i)
if(jz[i][0]<3)printf("%d ",jz[i][0]+7);
else printf("%d ",jz[i][0]);putchar('\n');
}
}
return 0;
}
il void mod(int &x){
((x%=7)+=7)%=7;
}

Widget Factory的更多相关文章

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

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

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

    使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins) Note 这一章节的内容是基于 Scott Gonzalez 一篇博客 Building ...

  3. poj 2947 Widget Factory

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

  4. Widget Factory (高斯消元解线性方程组)

    The widget factory produces several different kinds of widgets. Each widget is carefully built by a ...

  5. 软件公司的两种管理方式 总体来说,这个世界上存在两种不同的软件公司的组织结构。我把他们叫做 Widget Factory(小商品工厂) 和 Film Crews(电影工作组

    软件公司的两种管理方式 一个简单的回答应该是——“因为在我们的社会里,我们总是会认为薪水和会和职位的层次绑在一起”.但是,这个答案同时也折射出一个事实——我们的薪资是基于我们的所理解的价值,但这并没有 ...

  6. 通过扩展jQuery UI Widget Factory实现手动调整Accordion高度

    □ 实现Accordion高度一致 <head> <meta name="viewport" content="width=device-width&q ...

  7. 【POJ】2947 Widget Factory(高斯消元)

    http://poj.org/problem?id=2947 各种逗啊..还好1a了.. 题意我就不说了,百度一大把. 转换为mod的方程组,即 (x[1,1]*a[1])+(x[1,2]*a[2]) ...

  8. POJ Widget Factory 【求解模线性方程】

    传送门:http://poj.org/problem?id=2947 Widget Factory Time Limit: 7000MS   Memory Limit: 65536K Total Su ...

  9. UVA 1564 - Widget Factory(高斯消元)

    UVA 1564 - Widget Factory 题目链接 题意:n种零件, 给定m个制作时间.每段时间制作k个零件,每种零件有一个制作时间,每段时间用Mon到Sun表示,求每一个零件的制作时间.还 ...

  10. Extending Widgets with the Widget Factory

    https://learn.jquery.com/jquery-ui/widget-factory/extending-widgets/ 实例 https://github.com/tkvw/jQue ...

随机推荐

  1. 编译器报错: error LNK2001: unresolved external symbol "struct _ServiceDescriptorTable * KeServiceDescript

    转自VC错误:http://www.vcerror.com/?p=10 问题描述: 编译器报错: error LNK2001: unresolved external symbol "str ...

  2. k8s 映射 外部服务

    把外部的服务,通过创建service和endpoint,把它映射到k8s内部来使用. 操作步骤: 在10.0.0.13上安装数据库 yum install mariadb-server -y syst ...

  3. 19-Ubuntu-文件和目录命令-删除文件和目录-rm

    rm 删除文件或目录 注:使用rm命令要小心,因为文件删除后不能恢复.不会放在垃圾箱里,直接从磁盘删除. 选项 含义 -f 强制删除文件,无需提示.不能删除目录! -r 递归的删除目录下的内容,删除文 ...

  4. 如何读懂Web服务的系统架构图

    Web服务的一个重要特点就是流量大.数据多,仅靠一台服务器肯定难以支撑大规模的服务. 所以我们经常会看到诸如以下的一些术语,教人好生不懂: *:系统架构.物理架构.Web服务基础设施 *:应用服务器 ...

  5. 2019-8-27-静默命令行安装-Visual-C++-发行包

    title author date CreateTime categories 静默命令行安装 Visual C++ 发行包 lindexi 2019-8-27 15:39:3 +0800 2019- ...

  6. LINUX centos 7.2/7.3 搭建LAMP环境

    首先我们先查看下centos的版本信息 #适用于所有的linux lsb_release -a #或者 cat /etc/redhat-release #又或者 rpm -q centos-relea ...

  7. JS鼠标经过

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟 ...

  8. openwrt MySQL移植

    1 选择包 选择两个包,拷贝配置文件 cp products/mt7621/config_6080 .config 编译固件 openwrt 百万数据的优化, 执行脚本: mysql -u root ...

  9. CF 540D Bad Luck Island

    一看就是DP题(很水的一道紫题) 设\(dp[i][j][k]\)为留下\(i\)个\(r\)族的人,死去\(j\)个\(s\)族的人,死去\(k\)个\(p\)族的人的概率(跟其他的题解有点差别,但 ...

  10. Java 多线程 - 原子操作AtomicInteger & CAS(Compare-and-Swap)

    原子类简介:https://www.cnblogs.com/stephen0923/p/4505902.html AtomicInteger 介绍: https://yuwenlin.iteye.co ...