任务调度的合理性 pta

该博客讨论了一个任务调度问题的解决方案,其中任务通过担保机制互相影响。思路是使用担保任务主动消除涉及的子任务,模拟过程通过不断更新怀疑值来判断任务是否已完成。在每轮中,百姓上场并减少其他人的怀疑值,直至所有任务变为死忠状态或存在未解决的任务。代码展示了判断任务调度合理性的算法,并通过循环检查是否存在环或任务已完成。
摘要由CSDN通过智能技术生成
//https://pintia.cn/problem-sets/15/problems/861
//任务调度的合理性
//思路:与其从下往上搜索母节点,不如使用母节点主动去消灭子节点中牵扯到的子节点
//征北军的铁蹄踏上了远东的领土……
//为了清除敌方残余力量,他们挑选出自己信任的当地百姓
//给予他们以下一项决定生死的权利:担保——信任的力量
//这些百姓在使用这项权利之前,他们的怀疑值f[x][0]已经变成了0.
//行使这项权利(或者说完成这项任务)之后,他们被征北军视作死忠
//他们的怀疑值f[x][0]将会变成-1——以后你就不用再来做这种容易引发选择困难症的苦差事了^-^
//回归正题:
//在每一轮过程中,这些拥有权利的百姓会依次上场
//此时,在场其他的被怀疑百姓如果正好拥有当前担保百姓的信物,那么他们的怀疑值就会减1
//每轮结束后:那些新成为怀疑值为0的百姓就会在下一轮履行担保任务的职责
//如果一轮中没有新的良善人士——
//要么已经排除异己结束,要么就是敌对分子的怀疑值没有被完全消除
//看看是否全部变成死忠(只要上过场就可以),若是,输出1;若否,输出0.
#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
#define MAX 105
int f[MAX][MAX];
//f[x][0]用来记录动态的剩余未被确认可行元素个数
//f[x][y>0]用来记录先行任务编号
int n;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值