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; ...
随机推荐
- NSURLSession简介
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...
- JavaScript中闭包的理解
1.什么是闭包 我个人理解闭包就是函数中嵌套函数,但是嵌套的那个函数必须是返回值,才构成闭包: <!DOCTYPE html> <html> <head> < ...
- iOS11中navigationBar上 按钮图片设置frame无效 不受约束 产生错位问题 解决
问题描述: 正常样式: 在iOS 11 iPhone X上显示效果: 观察顶部navBar上的左侧按钮 在ios 11 上 这个按钮的图片不受设置的尺寸约束,按其真实大小展示,造成图片错位,影响界 ...
- SecurityManager USE
import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io. ...
- hdu 3572 Task Schedule【 最大流 】
求出最大流,再判断是否满流 先不理解为什么要这样建图 后来看了这一篇题解 http://blog.csdn.net/u012350533/article/details/12361003 把0看做源点 ...
- Python中int,bool,str,格式化,少量is,已经for循环练习
1.整数 十进制转化为二进制 xxx.bit_length(). #求十进制数转化成二进制时所占用的位数 2.布尔值 bool # 布尔值 - - 用于条件使用 True 真 Fa ...
- JS怎样计算过关分数
一个游戏,前20关是每一关自身的分数,//21-30关每一关是10分//31-40关,每一关是20分//41-49关,每一关是30分//50关,是100分 <!DOCTYPE html> ...
- Java实现18位身份证校验代码
import java.util.Scanner; /** * 18位身份证校验 * @author [J.H] * */ public class Test { // 身份证校验 public st ...
- 命令行导入导出Mysql数据库
MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录,如我输入的命令行:cd C:\Program Files\MySQL\MySQL Serve ...
- 小白都能看懂的Linux系统下安装配置Zabbix
实验环境: 操作系统:Centos 7.6 服务器ip:192.168.10.100 运行用户:root 网络环境:Internet Zabbix是一个基于web界面的提供分布式系统监控及网络功能的企 ...