博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pku 1275 Cashier Employment 差分约束
阅读量:4611 次
发布时间:2019-06-09

本文共 2288 字,大约阅读时间需要 7 分钟。

题意: 这个解题报告描述的相当详细了。就不多说了;

差分约束关键是找出约束条件,然后建图。最后就是套spfa或者bellman_ford的模板就是了;

#include 
#include
#include
#include
#define maxn 25using namespace std;struct node{ int v,w; int next;}g[10*maxn];int cnt,pre[maxn],ind[maxn],dis[maxn];bool inq[maxn];int R[maxn],num[26];const int inf = 9999999;void init(){ cnt = 0; memset(pre,-1,sizeof(pre)); memset(ind,0,sizeof(ind)); memset(inq,false,sizeof(inq));}void add(int u,int v,int w){ g[cnt].v = v; g[cnt].w = w; g[cnt].next = pre[u]; pre[u] = cnt++;}bool spfa(int s){ int i; queue
q; for (i = 0; i < maxn; ++i) dis[i] = -inf; dis[s] = 0; q.push(s); inq[s] = true; while (!q.empty()) { int u = q.front(); q.pop(); if (++ind[u] > 24) return false; inq[u] = false; for (i = pre[u]; i != -1; i = g[i].next) { int v = g[i].v, w = g[i].w; if (dis[v] < dis[u] + w) { dis[v] = dis[u] + w; if (!inq[v]) { inq[v] = true; q.push(v); } } } } return true;}int main(){ int i,t,pos,n; scanf("%d",&t); while (t--) { memset(num,0,sizeof(num)); for (i = 1; i <= 24; ++i) scanf("%d",&R[i]); scanf("%d",&n); for (i = 0; i < n; ++i) { scanf("%d",&pos); num[pos + 1]++; } int l = 0, r = n; bool flag = false; while (l < r) { init(); int mid = (l + r)>>1; for (i = 1; i <= 24; ++i) { add(i - 1,i,0); add(i,i - 1,-num[i]); } for (i = 8; i <= 24; ++i) add(i - 8,i,R[i]); for (i = 1; i <= 7; ++i) add(i + 16,i,R[i] - mid); add(0,24,mid); if (spfa(0)) { r = mid; flag = true; } else { l = mid + 1; } } if (flag) printf("%d\n",r); else printf("No Solution\n"); } return 0;}

  

转载于:https://www.cnblogs.com/E-star/archive/2012/06/24/2560145.html

你可能感兴趣的文章
你必知必会的SQL面试题
查看>>
html5 Canvas绘制时钟以及绘制运动的圆
查看>>
云推送注意(MSDN链接)
查看>>
OpenMobile's Application Compatibility Layer (ACL)
查看>>
竞价广告系统-广告检索
查看>>
Metro Style app :浏览器扩展
查看>>
linux的kernel是怎样工作的(TI_DM36X_ARM系统)(1)
查看>>
[luogu4310] 绝世好题 (递推)
查看>>
[luogu3203 HNOI2010] 弹飞绵羊 (分块)
查看>>
mui搜索框 搜索点击事件
查看>>
2016012003+陈琦+散列函数的应用及其安全性
查看>>
Android 状态栏通知Notification、NotificationManager详解
查看>>
UIApplicationDelegate协议
查看>>
Jmeter测试dubbo接口填坑
查看>>
[zz]GDB调试精粹及使用实例
查看>>
数据库的创建和删除
查看>>
最简单的三层实例【插入据
查看>>
设计模式学习笔记——Prototype原型模式
查看>>
pom.xml里有红叉报错的解决办法
查看>>
Perl last和next的用法区别
查看>>