POJ 1275 差分约束
一堆化不等式,,,,,,
懒得写了。。。
请看mars_ch的blog…..
还是她给我找的错……….
//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int first[25],next[666],v[666],w[666],tot,ans;
int n,cases,have[25],need[25],jy,inq[25],vis[25],dis[25];
void add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
bool spfa(){
queue<int>q;q.push(0);
while(!q.empty()){
int t=q.front();q.pop();
vis[t]++,inq[t]=0;
for(int i=first[t];~i;i=next[i])
if(dis[v[i]]<dis[t]+w[i]){
dis[v[i]]=dis[t]+w[i];
if(!inq[v[i]])inq[v[i]]=1,q.push(v[i]);
if(vis[v[i]]>24)return 0;
}
}
if(dis[24]==ans)return 1;return 0;
}
int main(){
// freopen("data.txt","r",stdin);
scanf("%d",&cases);
while(cases--){
memset(have,0,sizeof(have));
for(int i=1;i<=24;i++)scanf("%d",&need[i]);
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&jy),have[jy+1]++;
for(ans=0;ans<=n;ans++){
memset(dis,0xcf,sizeof(dis));memset(vis,0,sizeof(vis));
tot=0,memset(first,-1,sizeof(first)),memset(inq,0,sizeof(inq));
dis[0]=0;
for(int i=1;i<=24;i++)add(i-1,i,0),add(i,i-1,-have[i]);
for(int i=9;i<=24;i++)add(i-8,i,need[i]);
add(0,24,ans);
for(int i=1;i<=8;i++)add(i+16,i,need[i]-ans);
if(spfa()){printf("%d\n",ans);goto end;}
}
puts("No Solution");
end:;
}
}
POJ 1275 差分约束的更多相关文章
- poj 3159(差分约束经典题)
题目链接:http://poj.org/problem?id=3159思路:题目意思很简单,都与给定的条件dist[b]-dist[a]<=c,求dist[n]-dist[1]的最大值,显然这是 ...
- poj Layout 差分约束+SPFA
题目链接:http://poj.org/problem?id=3169 很好的差分约束入门题目,自己刚看时学呢 代码: #include<iostream> #include<cst ...
- poj 1201 差分约束
http://www.cnblogs.com/wangfang20/p/3196858.html 题意: 求集合Z中至少要包含多少个元素才能是每个区间[ai,bi]中的元素与Z中的元素重合个数为ci. ...
- POJ - 3169 差分约束
题意:n头牛,按照编号从左到右排列,两头牛可能在一起,接着有一些关系表示第a头牛与第b头牛相隔最多与最少的距离,最后求出第一头牛与最后一头牛的最大距离是多少,如 果最大距离无限大则输出 ...
- POJ 1201 差分约束+SPFA
思路: 差分约束,难在建图.(我是不会告诉你我刚学会SPFA的...) 把每个区间的ai–>bi连一条长度为ci的边. k–>k+1连一条长度为0的边. k+1–>k连一条长度为-1 ...
- POJ 1201 差分约束(集合最小元素个数)
题意: 给你一个集合,然后有如下输入,a ,b ,c表示在范围[a,b]里面有至少有c个元素,最后问你整个集合最少多少个元素. 思路: 和HDU1384一模一样,首先这个题目可 ...
- poj 1716 差分约束
水水的. 给几个不等式:dis[b]-dis[a]>=2; 0<=dis[i+1]-dis[i]<=1; #include<iostream> #include< ...
- poj 3159 差分约束
思路:班长的糖果要比snoopy的多.并且要用手写堆栈,且堆栈的大小要开到20000000. #include<iostream> #include<cstdio> #incl ...
- poj 1364 差分约束
思路:设dis[i]为从0点到第i点的序列总和.那么对于A B gt k 来讲意思是dis[B+A]-dis[A]>k; 对于A B lt k来讲就是dis[B+A]-dis[A]<k; ...
随机推荐
- Java类的根Object
一.Object类介绍 Object全名java.lang.Object,java.lang包在使用的时候无需显示导入,编译时由编译器自动导入.Object类是类层次结构的根,Java中所有的类从根本 ...
- DNS配置外网
dnssec开启,部分dns请求为不信任链导致解析延迟或者解析失败(error显示为不信任)解决方法: vi /etc/named.conf dnssec-enable no; dnssec-vali ...
- Spring学习笔记(二) 初探Spring
版权声明 笔记出自<Spring 开发指南>一书. Spring 初探 前面我们简单介绍了 Spring 的基本组件和功能,现在我们来看一个简单示例: Person接口Person接口定义 ...
- MVC bundle配置文件模板
bundle文件放在应用根目录,命名为 bundle.config 内容模板 <?xml version="1.0" encoding="utf-8"? ...
- .NET MVC Dropzone 上传图片
在nuget控制台输入:Install-Package dropzone @{ Layout = null; } <!DOCTYPE html> <html> <head ...
- 学习篇之SVG
学习篇之SVG 一.use重用 与 g组合 xmlns变量实际上指示浏览器如何解释称为SVG的XML方言 <g></g> 组合 <use /> 重用 <ell ...
- Unity5.0 状态机新增的entry/exit
相关官方日志 https://blogs.unity3d.com/cn/2014/06/26/shiny-new-animation-features-in-unity-5-0/
- Xcode7 下导入第三方库 图文介绍
网上没有很好的图文介绍,干脆我自己写一个好了,方便新手入门. 这里以导入著名的第三方网络库AFNetWorking v3.0.4和数据库FMDB v2.6.2为例进行说明. 好,下面开始. 下载源文件 ...
- 路飞学城Python-Day22
- Pyhton学习——Day61
class Pagination(object): def __init__(self,totalCount,currentPage,perPageItemNum=10,maxPageNum=7): ...