题目描述 Description

神犇YJQ有n个不同的妹子和m种食物,每一天每一种食物只供应一个妹子吃的份量。在接下来的t天内,YJQ准备包养所有的妹子。 对于每个妹子,她在t天内都只会吃某些特定的食物,并且总共有q种特殊要求,每种要求是在Ti天Ai号妹子会由于特殊原因不能吃第Fi种食物。 有些时候,为了满足妹子的要求,必须改变所有妹子的喂食方案。在每一天重新分配食物会有不同的代价,YJQ不愿意付那么多钱,所以他希望改变妹子喂食方案的代价尽量少。 现在,YJQ拜托你给他的妹子制定食物分配计划,他希望在保证每个妹子每天都有食物吃的前提下,使得改变分配方案付出的代价尽量少。请求出这个最少代价。 如果YJQ无论怎么分配都无法在天内包养所有妹子(包养所有妹子即是使所有妹子在∀i(1<=i<=t)天都有食物),请输出“-1”。

注:第一天初始分配食物并不需要花费

输入描述 Input Description

第一行4个整数n,m,t,q表示YJQ的妹子个数,食物种类数,天数,和特殊要求数; 接下来一行有t个整数表示每一天修改食物方案的代价; 接下来n行,每行m个数,第i行第j列表示第i个妹子是否可以吃第j种食物(1表示可以,0表示不行); 接下来q行,每行3个整数Ti,Ai,Fi表示第Ti天Ai号妹子不能吃食物Fi

输出描述 Output Description

一个整数表示YJQ的最小花费,如果无论如何都不能包养所有妹子,输出-1

样例输入 Sample Input

3 3 3 2 2 3 3 1 1 0 0 1 1 1 0 1 1 1 1 2 2 3

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

对于30%的数据,n,m,t,q<4 ;

对于50%的数据,t<20 ;

对于100%的数据,n,m<100,t<500,q<10^4,所有给出的数据都是非负整数(友情提示,YJQ可能没有妹子)

对于每个i 向后找最远的j 满足i~j天数中的不能满足的边都删掉后做二分图匹配,可以全部点都匹配 记r[i]=j

且r[i]具有单调性,一定>=r[i-]+

如果r[i]=i不能满足 就无解

r[i]=j即,在i天更换方案后,到j天都不用再更换,

最后做dp得解(PS.第1天的代价为0

#include <cstdio><o:p></o:p>

#include <algorithm><o:p></o:p>

#define N 505<o:p></o:p>

const int INF=;<o:p></o:p>

struct fff{int t,a,f;}s[N*N];<o:p></o:p>

int n,m,d,qe;<o:p></o:p>

int c[N],f[N][N],vis[N],p[N],q[N][N],l[N],r[N],k[N],fir[N];<o:p></o:p>

bool cmp(const fff&x,const fff&y){return x.t<y.t;}<o:p></o:p>

int min(int x,int y){return x>y?y:x;}<o:p></o:p>

int <st1:place w:st="on"><st1:city w:st="on">gary</st1:city></st1:place>(int x)<o:p></o:p>

{<o:p></o:p>

       for(int i=;i<=m;i++)<o:p></o:p>

       if(f[x][i]>&&!vis[i]){<o:p></o:p>

              vis[i]=;<o:p></o:p>

              if(!p[i]||gary(p[i])){<o:p></o:p>

                     p[i]=x;<o:p></o:p>

                     return ;<o:p></o:p>

              }<o:p></o:p>

       }<o:p></o:p>

       return ;<o:p></o:p>

}<o:p></o:p>

int main()<o:p></o:p>

{

       scanf("%d%d%d%d",&n,&m,&d,&qe);<o:p></o:p>

       if(n==){printf("");return ;}<o:p></o:p>

       int le,i,j,h,t,ans;<o:p></o:p>

       for(i=;i<=d;i++)scanf("%d",&c[i]);<o:p></o:p>

       for(i=;i<=n;i++)<o:p></o:p>

              for(j=;j<=m;j++)scanf("%d",&f[i][j]);<o:p></o:p>

       for(i=;i<=qe;i++)scanf("%d%d%d",&s[i].t,&s[i].a,&s[i].f);<o:p></o:p>

       std::sort(s+,s++qe,cmp);<o:p></o:p>

       for(i=;i<=qe;i++)<o:p></o:p>

              if(s[i].t!=s[i-].t)fir[s[i].t]=i;<o:p></o:p>

       for(h=,le=;h<=d;h++){                    <o:p></o:p>

                     if(r[h-]==d){for(i=h;i<=d;i++)q[h][d]=;r[h]=d;continue;       }<o:p></o:p>

                     for(t=r[h-]+;;t++){<o:p></o:p>

                            if(t>d){t--;break;}<o:p></o:p>

                            for(i=fir[t];i&&i<=qe&&s[i].t==t;i++)f[s[i].a][s[i].f]--;//删边<o:p></o:p>

                            for(i=;i<=m;i++)p[i]=;<o:p></o:p>

                            for(i=,ans=;i<=n;i++){<o:p></o:p>

                                   for(j=;j<=m;j++)vis[j]=;<o:p></o:p>

                                   ans+=gary(i);<o:p></o:p>

                            }<o:p></o:p>

                            if(ans<n){<o:p></o:p>

                                   for(i=fir[t];i&&s[i].t==t&&i<=qe;i++)f[s[i].a][s[i].f]++;t--;break;}//复原图<o:p></o:p>

                     }<o:p></o:p>

                     if(t<h){printf("-1");return ;}<o:p></o:p>

                     for(i=h;i<=t;i++)q[h][i]=;r[h]=t;<o:p></o:p>

                     for(i=fir[h];i&&s[i].t==h&&i<=qe;i++)f[s[i].a][s[i].f]++;// 复原图<o:p></o:p>

       }<o:p></o:p>

       for(i=;i<=d;i++){l[i]=INF;q[i][i]=;}<o:p></o:p>

       c[]=l[]=;   <o:p></o:p>

       for(i=;i<=d;i++)<o:p></o:p>

       for(j=i;j<=d;j++)<o:p></o:p>

       if(q[i][j])l[j]=min(l[j],l[i-]+c[i]);<o:p></o:p>

       printf("%d",l[d]);<o:p></o:p>

       return ;<o:p></o:p>

}

codevs4439 YJQ Requires Food的更多相关文章

  1. Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead的解决办法

    今天在导入工程进Eclipse的时候竟然出错了,控制台输出的是: [2013-02-04 22:17:13 - takepicture] Android requires compiler compl ...

  2. Full exploitation of a cluster hardware configuration requires some enhancements to a single-system operating system.

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION Operating System Desi ...

  3. Error: Bootstrap's JavaScript requires jQuery错误

    引入bootstrap时会出现的问题:boostrap下拉菜单无效,浏览器报Uncaught Error: Bootstrap's JavaScript requires jQuery错误, 解决办法 ...

  4. SIP模块版本错误问题:the sip module implements API v??? but XXX module requires API v???

    系统安装了python 2.7,继续安装PyQt4,于是依次下载sip.pyqt4源码进行安装.用以下代码测试: import PyQt4.QtGui 显示出错.错误信息:the sip module ...

  5. Solving “Dynamic Web Module 3.0 requires Java 1.6 or newer” in Maven Projects

    不一定是在Maven Projects里才有这种情况,但解决方法是一样的. 转自:http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0 ...

  6. 升级到macos sierra xcode8 requires additional components to support runing and debugging choose Install to add required components

    升级到macos sierra xcode8 报提示:requires additional components to support runing and debugging choose Ins ...

  7. Call requires API level 21(Current min is 16)

    Call requires API level 21(Current min is 16) Android开发中,遇到类似这种问题,如何处理? 一种办法是提升sdk最低版本到21,在Android s ...

  8. Android开发学习---template requires a minimum SDK version of at least 7,build target API version of 14

    adt 22.6.3的bug 当adt更新到22.6.3,其编辑器中最低支持api7,即android 2.1,这里可能是google故意这么做的,也可能是其bug.其target sdk 和comp ...

  9. Android requires compiler compliance level 5.0 or 6.0. Found '1.8' instead. Please use Android Tools>Fix project Properties.

    重装操作系统之后,或者破坏了Android的开发环境之后,需要重新配置好Android的开发环境.但是配置好后,导入原有的项目时,报错: Android requires compiler compl ...

随机推荐

  1. 基于Ubuntu14.04下Suricata(一款高性能的网络IDS、IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐)

    为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物理机器环境实验室的大数 ...

  2. ABBYY Cup 3.0 - Finals (online version)

    A 开个数组记录一下 #include <iostream> #include<cstdio> #include<cstring> #include<algo ...

  3. jQuery Ajax使用实例

    <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.js"></script> <scr ...

  4. JDK集合框架--ArrayList

    ArrayList,从类名就可以看出来,这是由数组实现的List,即内部是用数组保存元素的有序集合.先看看主要的成员变量,比较简单: public class ArrayList<E> e ...

  5. Elasticsearch--集群管理_时光机&监控

    目录 Elasticsearch时光机 创建快照存储库 清理:删除旧的快照 监控集群状态和健康度 集群健康度API 索引统计API 状态API 节点信息API 节点统计API 集群状态API 挂起任务 ...

  6. 打包Scala jar 包的正确步骤

    实验目的:打包可运行的scala jar,上传到spark集群,提交执行 1.idea中编译运行代码,可成功运行 2.修改2处代码//只配置appName,其他配置项注释掉val conf=new S ...

  7. windows 安装绿色版mysql

    (1)到官网下载绿色版mysql:http://dev.mysql.com/downloads/mysql/ (2)下载好后,放在F:\mysql,解压出来 (3)进入到mysql-5.6.19-wi ...

  8. c#中out参数的作用

    给你个简单的解释说法吧.虽然不完全对.但是我可以让你理解OUT有什么作用.呵呵 举个例子.每个方法只能有一个返回值.但是你想有多个返回值,呵呵.OUT就起作用了啊.比如分页,不光返回数据,还要返回总记 ...

  9. java实现的单点登录

    摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO ...

  10. 番茄花园Ghost Win10系统X64位10041装机版2015年4月

    转载:系统妈,系统下载地址:http://www.xitongma.com/windows10/2015-04-01/6639.html 番茄花园Ghost Win10系统X64位10041装机版20 ...