ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

P2827 蚯蚓

2019-09-22 13:03:13  阅读:212  来源: 互联网

标签:P2827 d% long del ans include 蚯蚓


嘿嘿题目链接

首先我们给蚯蚓从大到小排序。然后可以发现,每次切出来的蚯蚓中,长的那写按切的顺序形成非上升序列,短的那些也如此。那么我们维护3个单调队列即可(原始蚯蚓也算一个单调队列),每次找三个队列队首元素最大的那个,把这个蚯蚓切掉,然后分别插入两个单调队列中。最后也按照这样每次找出最大的,按要求把该输出的输出即可。由于最后有n+m只蚯蚓,所以这样的时间复杂度O(n+m)。

 1 #include<set>
 2 #include<map>
 3 #include<list>
 4 #include<queue>
 5 #include<stack>
 6 #include<string>
 7 #include<cmath>
 8 #include<ctime>
 9 #include<vector>
10 #include<bitset>
11 #include<memory>
12 #include<utility>
13 #include<cstdio>
14 #include<sstream>
15 #include<iostream>
16 #include<cstdlib>
17 #include<cstring>
18 #include<algorithm>
19 using namespace std;
20 
21 int n,m,q,u,v,g,del;
22 long long a[1000005],b[4][7000005],h[5],t[5];
23 
24 int main(){
25     scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&g);
26     for(int i=1;i<=n;i++){
27         scanf("%lld",a+i);
28     }
29     sort(a+1,a+1+n);
30     for(int i=1;i<=n;i++){
31         b[1][n-i+1]=a[i];
32     }
33     h[1]=h[2]=h[3]=1;
34     t[1]=n;
35     t[2]=t[3]=0;
36     del=0;
37     for(int i=1;i<=m;i++){
38         long long ans=-1<<30,num=0;
39         for(int j=1;j<=3;j++){
40             if(h[j]<=t[j]&&b[j][h[j]]>ans){
41                 ans=b[j][h[j]];
42                 num=j;
43             }
44         }
45         if(i%g==0){
46             printf("%lld ",ans+del);
47         }
48         h[num]++;
49         b[2][++t[2]]=(long long)(ans+del)*u/v-del-q;
50         b[3][++t[3]]=ans+del-(long long)(ans+del)*u/v-del-q;
51         del+=q;
52     }
53     printf("\n");
54     for(int i=1;i<=m+n;i++){
55         long long ans=-1<<30,num=0;
56         for(int j=1;j<=3;j++){
57             if(h[j]<=t[j]&&b[j][h[j]]>ans){
58                 ans=b[j][h[j]];
59                 num=j;
60             }
61         }
62         if(i%g==0){
63             printf("%lld ",ans+del);
64         }
65         h[num]++;
66     }
67     return 0;
68 }

 

标签:P2827,d%,long,del,ans,include,蚯蚓
来源: https://www.cnblogs.com/hahaha2124652975/p/11538246.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有