uva 1203 - Argus

/*
uva  1203 - Argus
题意:统计每次出队列的序号————实际就是一个优先队列优先级为:
当时间小的优先级高或者时间相同,序号小的优先级高(见重载<)
因为时间前进时间累加 在结构体里设三个变量num\time\sum
核心:弄清优先级到底是什么。
开始我当成“横坐标排序 再纵坐标排序”的思想 wa  了改又wa 英语还得继续学习呀!!!
*///AC

复制代码
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 #include<queue>
 5 using namespace std;
 6 const int M=10010;//防止runtime error
 7 int s[M][M];
 8 struct Node
 9 {
10     int num;// 序号
11     int time; //单位时间
12     int  sum;//每次在单元时间基础上的累加
13    Node(int x , int y,int z):num(x),time(y),sum(z){}
14    bool operator <(const Node &e)const//重载<
15    {
16        // if(time==e.time)return num>e.num;
17        // return sum>e.sum;
18         return (sum>e.sum || (sum==e.sum && num>e.num));
19         //返回时间少的或者当时间相同时返回序号小的
20    }
21 };
22 priority_queue <Node> q;
23 /////
24 void  f(int n)
25 {
26     int a ,b,c;
27     while(n--)//循环优先队列
28     {
29         Node node =q.top();//去优先级最高的变量
30         q.pop();//该高的优先级元素出队列
31         printf("%d\n",node.num);//输出
32         node.sum+=node.time;//时间累加
33         q.push(Node(node.num,node.time,node.sum));//循环入队列
34     }
35 }
36 int main()
37 {
38     int i,n;
39     char a[10];
40     i=0;
41     while(scanf("%s",&a)!=EOF)
42     {
43         if(a[0]=='#')break;
44         scanf("%d%d",&s[i][0],&s[i][1]);
45         q.push(Node(s[i][0],s[i][1],s[i][1]));//元素入队列
46         i++;
47     }
48     scanf("%d",&n);
49     f(n);
50     return 0;
51 }
52 /*
53 1  4 56
54 1  5  4
55 1  4  56
56 1   5  5
57 1  6  3
58 1  7  56
59 1  4  20
60 #
61 10
62 */
复制代码

 

posted on   ACM_Someone like you  阅读(334)  评论(0编辑  收藏  举报

编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)

导航

< 2013年2月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 1 2
3 4 5 6 7 8 9
点击右上角即可分享
微信分享提示