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. <Java编程思想>读书笔记(1)-对象导论、一切都是对象

    1.面向对象编程:OOP (Object-oriented Programming) 2.Alan Kay 总结的面向对象语言5个基本特性: 1) 万物皆为对象 2) 程序是对象的集合,他们通过发送消 ...

  2. nginx按日分割日志

    #!/bin/bash #按日切割nginx日志并压缩,加入crontab每天0:00切割 #作者:fafu_li #时间: source /etc/profile #加载系统环境变量 source ...

  3. Spring源码由浅入深系列三 refresh

    spring中的refresh是一个相当重要的方法.它完成IOC的第一个阶段,将xml中的bean转化为beanDefinition.详细说明如上图所示. 在上图中,创建obtainFreshBean ...

  4. 2019 牛客多校第三场 H Magic Line

    题目链接:https://ac.nowcoder.com/acm/contest/883/H 题目大意 给定 N 个不同的整数点,N 为偶数,求一条直线,这条直线能把这 N 个点对半分开,输出这条直线 ...

  5. 了解Metasploit中的Payloads(有效载荷)

    什么是payload? payload又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回shell,也可以进行程序注入等.也有人把payloads称 为shellcode. Shellco ...

  6. sails中创建和使用services

    从sails官方在线文档查知 // EmailService.js - in api/services module.exports = { sendInviteEmail: function(opt ...

  7. USACO2008 Cow Cars /// oj23323

    题目大意: N (1 ≤ N ≤ 50,000)头牛被编号为1-N,牛i可以在M(1 ≤ M ≤ N)条不同的高速路上以Si (1 ≤ Si ≤ 1,000,000) km/h的速度飞驰 为了避免相撞 ...

  8. 面试39 MySQL读写分离

    (1)如何实现mysql的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. (2)MySQL主从复制原 ...

  9. linux格式化磁盘

    linux格式化磁盘 查看系统磁盘情况 [root@db02 ~]# fdisk -l #查看当前系统上所有存储设备(包括挂在和没挂载的)  注:如果没有管理员权限是看不见磁盘的,因为fdisk默认读 ...

  10. python_django_models模块中的查询

    查询集:表示从数据库获取的对象集合,查询集可以有多个过滤器,过滤器就是一个函数(方法),基于所给参数限制查询集结果 从sql角度来说,查询集和select等价,过滤器和where等价 查询集特点: 惰 ...