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. IIS反向代理解决Web前端跨域

    1.1 IIS7反向代理解决跨域问题IIS的版本必须是IIS7及其以上,否则没有反向代理功能:按照以下步骤来配置IIS,以实现反向代理: 1.2 配置步骤1. 下载安装ARR(Application ...

  2. 拾遗:『rhel6系列的开、关机脚本』

    一.系统脚本位置及含义 /etc/inittab./etc/init/* 存放开关机配置文件 /etc/init.d/* 服务脚本,是一个到/etc/rc.d/init.d/的软链接 /etc/rc. ...

  3. Python匹马行天下之_循环

    一.while循环 如果条件成立(true),重复执行相同操作,条件不符合,跳出循环 while   循环条件: 循环操作 (1)while循环示例 例:输入王晓明5门课程的考试成绩,计算平均成绩 1 ...

  4. USACO2005 Cow Acrobats /// 前缀和 oj23402

    题目大意: N (1 ≤ N ≤ 50,000)头牛叠罗汉 找到最优排序使所有牛的风险值总和最小 每头牛重量 (1 ≤ Wi ≤ 10,000) 力量 (1 ≤ Si ≤ 1,000,000,000) ...

  5. 更改idea启动内存信息

    1.到idea的安装目录的bin下,找idea64.exe.vmoptions 文件 2.更改参数 对应的参数解释: -Xms1024m    设置IDEA初时的内存大小,提高Java程序的启动速度. ...

  6. 002-Java数据类型

    Java数据类型 基本数据类型 和 引用数据类型 基本数据类型 整型:byte - 8bit / short - 2字节 / int - 4字节 / long - 8字节 浮点型:float doub ...

  7. 将数据写到kafka的topic

    package test05 import java.util.Propertiesimport org.apache.kafka.clients.producer.{KafkaProducer, P ...

  8. C puts,gets

    1.  char *gets(char *s); 从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间 注意事项:空间不检查合理:要使用功能必须准备足够大的空间: #include ...

  9. MySql General error:2006

    当启用模块时发生Mysql数据库错误,错误信息见附件,实际是“General error: 2006 MySQL server has gone away......”错误. 解决方法:找到my.in ...

  10. case in

    #!/bin/bash source /etc/profilesource ~/.bashrc #自己定义$version_number case $version_number in3.0.17) ...