[openjudge] 数据包的调度机制(dp好题)
来源:互联网 发布:清除注册表的软件 编辑:程序博客网 时间:2024/05/26 02:55
- 描述
随着 Internet的迅猛发展,多媒体技术和电子商务应用日益广泛,Internet上的服务质量
(QoS,Qualityof Service)问题已越来越受到重视。网络中采用的数据包调度机制与网络的服务质量 QoS 有着密切的关系。研究表明传统的基于队列的调度机制已不能满足网络服务质量QoS 的需求。服务质量 QoS 取决于数据包的延迟。每一个数据包都有一个延迟惩罚值。由于数据包承载的数据不同,不同数据包的延迟惩罚值也可能不同。此外,数据包的延迟也和它的发送顺序有关。如果一个数据包被第K个发送,假设它的延迟惩罚值是D,则这个数据包的最终延迟是 (K - 1) * D。北京大学2012 级信息学院的同学在程序设计课堂上,设计了一种新的基于栈的数据包的调度算法。同学们通过栈的先进后出(Last in First out)的原理,改变数据包的发送顺序,以减小数据包的延迟总值。给定N 个等待调度的数据包,起始这N 个数据包排成一个队列等待发送。接着,这些数据包按序进栈,调度算法可以控制数据包的出栈顺序。因此通过栈,可以将后面的数据包先于前面的数据包发送出去。请你实现一个调度算法使N 个数据包的延迟总值最小。
- 输入
- 标准的输入包含若干组测试数据。输入第一行是整数T(1 <= T <= 1000),表明有T组测试数据。紧接着有T组连续的测试。每一组测试数据的第1行是 N(N <= 100),表述数据包的个数。接着的 N 行,每一行是一个整数,第i 行表示数据包i的延迟惩罚值( <=50 )。
- 输出
- 对于每组测试数据,输出最小的延迟总值。
- 样例输入
1554322
- 样例输出
24
分析:在区间(i , j)中,如果元素k最后一个发送,那么由于是要按照顺序入栈的,一定是[ l , k )的元素先发送,然后( k , r ]的元素再发送,最后将k发送。
f[i][j]表示区间(i,j)的在原队列中相对最小延迟值
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define N 105const int inf=1<<30;int T,n;int d[N],s[N],f[N][N];int main(){ scanf("%d",&T); while (T--) { scanf("%d",&n); for (int i=1;i<=n;++i) scanf("%d",&d[i]); for (int i=1;i<=n;++i) s[i]=s[i-1]+d[i];//前缀和预处理 memset(f,0,sizeof(f)); for (int len=2;len<=n;len++) for (int i=1;i<=n-len+1;i++) { int j=l+len-1;f[i][j]=inf;//!!!atention for (int k=i;k<=j;k++) f[i][j]=min(f[i][j],d[k]*(len-1)+f[l][k-1]+f[k+1][r]+(s[r]-s[k])*(k-l));//s[r]-s[k]是第二段(k,r]对于k的延迟值偏移量 } printf("%d\n",f[1][n]); }}
0 0
- [openjudge] 数据包的调度机制(dp好题)
- [openjudge]数据包的调度机制(dp)
- [DP] OpenJudge 2755 神奇的口袋
- openjudge 7627 鸡蛋的硬度 DP
- 多径数据流的数据包调度
- lte的调度机制
- 【正解】Openjudge 至少有多少只恼人的大青蛙 (dfs 剪枝 好题)
- 数据包的分类和调度-Linux TC的另一种解释
- 数据包的分类和调度-Linux TC的另一种解释
- [openjudge]带通配符的字符串匹配(dp)
- CF401-D dp的好题
- linux内核的调度机制
- hadoop的任务调度机制
- Windows的任务调度机制
- Windows的任务调度机制
- linux内核的调度机制
- Windows的任务调度机制
- Linux的任务调度机制
- Java中启动线程start和run方法
- 【vijos】【生成树】最小生成树的最小完全图
- 反射机制
- 使用AngularJS修改、删除表格数据
- 通用的增删改查方法(反射)附带MySQL数据库连接
- [openjudge] 数据包的调度机制(dp好题)
- NOIP 2004 虫食算
- windows2008 服务器基本设置
- mysql
- [hard]57. Insert Interval
- Python编码问题2
- 洛谷 P3386【模板】二分图匹配
- Java中的选择排序和冒泡排序的代码
- Could not read JSON: Can not deserialize instance of java.lang.String out of START_OBJECT token