Widget Factory
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;
}
转载于:https://www.cnblogs.com/a1b3c7d9/p/10887443.html
Widget Factory相关推荐
- 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins)
使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins) 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful ...
- POJ 2947 Widget Factory (高斯消元解同余方程组)
题意:N种物品,M条记录,接写来M行,每行有K,str1,str2,表示第i个记录从星期str1到星期str2,做了K件物品,接下来的K个数为物品的编号.求做每个物品所需的时间,并且最后结果在3-9之 ...
- poj 2947 Widget Factory
这几把题意我感觉很变态啊,题意:https://blog.csdn.net/qingshui23/article/details/52511894 #include <iostream>/ ...
- POJ 2847 Widget Factory
POJ_2947 将M条信息翻译成同余方程组后用高斯消元求解就可以了. #include<stdio.h> #include<string.h> #include<ios ...
- 编写jQueryUI插件(widget)
使用jQueryUI的widget来写插件,相比于基本的jquery插件有一些好处: * 方便实现继承,代码重用 * 默认是单例 * widget已经给你实现好的一些常用方法,例如destroy 带来 ...
- jQuery ui widget和jQuery plugin的实现原理简单比较
一.创建 1. jQuery plugin (function($){ $.fn.MyPlugin=function(){ //js代码 } })(jQuery) 为了与页面上其他代码友好相处,将p ...
- widget jquery 理解
jquery ui 的所有 组件都是基于一个简单,可重用的widget. 这个widget是jquery ui的核心部分,实用它能实现一致的API,创建有状态的插件,而无需关心插件的内部转换. $.w ...
- android调服务不更新,android – OnUpdate()不调用小部件服务
我正在为我的应用程序开发一个小部件.窗口小部件名称是历史记录,当用户浏览任何URL时,我将其存储在本地数据库中,从中列出该窗口小部件. 当我打开小部件时,它从本地数据库中获取所有细节并在小部件的列表视 ...
- java泛型的泛型_Java 泛型总结(一):基本用法与类型擦除
简介 Java 在 1.5 引入了泛型机制,泛型本质是参数化类型,也就是说变量的类型是一个参数,在使用时再指定为具体类型.泛型可以用于类.接口.方法,通过使用泛型可以使代码更简单.安全.然而 Java ...
- jQuery UI Autocomplete示例(一)
今天看到这么个教程,分享给新手学习 AutoComplete 在获取焦点后,随着用户键入的内容,可以在预订的数据源中查找和已输入的内容相匹配的内容列表供用户选择. 这可以用作之前输入过的内容也可以用作 ...
最新文章
- ExecutorService 的理解与使用
- 8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句
- matlab p-tite分割图像,P'tite fourmi
- 《大话数据结构》读书笔记-查找
- 启明云端分享| sigmastar SSD201/ SSD202D _OTA升级使用参考
- linux下的$0-n作用
- 树莓派B+使用入门RPI库安装wringPi库安装
- 英伟达老黄又来送大礼,全新Titan V CEO限量版GPU火力全开
- JS常用函数(方法)
- 南银法巴消费金融拟设线下直营中心,与南京银行CFC联动
- quartus仿真11:74138译码
- 大学计算机培训策划书,大学计划书的范文
- 图像各向异性平滑滤波
- android专业拍照软件,安卓最专业的拍照软件排行榜 优质滤镜相机软件推荐
- Electron代码内部签名流程
- 《自控力》——[美]Kelly McGonigal
- 淘宝抢券python代码,能够对实时抢券和清空购物车。
- 项目(百万并发网络通信架构)10.3---send()函数的极限测试
- FPGA集成开发环境
- 关于 NB-IoT NM1 模组 - FAQ
热门文章
- JavaSE学习--内部类
- 6 个实用的 Code Review 实践技巧
- Android MediaCodec实现多段音视频的截取与拼接
- php post提交函数,PHP curl get post 提交函数
- python的pandas行数和索引_python – 使用索引值访问Pandas Data Frame行
- pb 执行insert 后return是否会自动提交_一条MySQL更新语句是怎么执行的?
- java 动态转换器_非常简单的Java动态转换
- 初二生态系统思维导图_鑫讲堂:初二年级十一月微讲座汇报(二)
- 安卓日记本设计内容介绍_天一 | 教你捷径,使用VB开发安卓程序!
- ace缓存扩展接口_并不是只有 Redis 才可以做缓存