艺术

              ★★   输入文件:art.in   输出文件:art.out   简单对比
                 时间限制:1 s   内存限制:256 MB

【题目描述】

Marvolo正看着刚刚入手的北京市地图,路痴的他表示一脸懵逼。刚刚开完会的两人如释负重,决定在帝都游玩一下放松心情,但是就去哪一直拿不定主意。”接下来去哪?”Marvolo问道。”不如去798吧,那里听说挺好玩的”,Mike满脸向往。”怎么,你也想去那里买一个仿真枪,然后在安检处被查水表吗?”Marvolo戏虐道。”假使这些完全无中生有的东西,你再说一遍,你等于..你也有责任吧……”Mike无语的说。

到达798的两人在广场上发现了N件艺术品,两人决定欣赏一番。每个艺术品都有其审美价值Pi。但是这些艺术品要被安排到新的地方,每隔一段时间就会有员工搬走其中剩余的一件艺术品。二人对此很无奈,他们决定每次欣赏的时候都要从剩余的艺术品中挑出连续一段艺术品来欣赏,获得的美感为这一段艺术品的审美价值之和。我们认为一个位置上的艺术品如果被搬走后,其审美价值为负无穷大。现在两人想知道,每次搬走一件艺术品后,他们能获得的美感最大是多少。

【输入格式】

第一行一个数N,表示有N个艺术品。

第二行有N个整数,表示每个艺术品的审美价值。

第三行有N个整数,表示每次搬走的艺术品编号。

【输出格式】

一共N行,表示每一次搬走后获得的美感最大值。

【样例输入】

4

1 3 2 5

3 4 1 2

【样例输出】

5

4

3

0

【提示】

搬走第三件艺术品后,剩余审美价值的序列为1,3,-∞,5。则获得美感最大为5。搬走第四见后,为1,3,-∞,-∞。最大美感为1+3=4。由此类推,在最后搬完所有艺术品后,可以选择不看,美感为0。

Solution:

  倒序并查集,每次去掉一个相当于到这来每次合并,用并查集维护一下就好,但我不会告诉你这题考试数据卡常卡到丧心病狂。

  

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 #define N 100005
 7 char buf[N*30], *ptr=buf-1;
 8 inline int read(){
 9     register int x=0,f=1,c=*++ptr;
10     while (c<48) c=='-'&&(f=-1),c=*++ptr;
11     while (c>47) x=x*10+c-48,c=*++ptr;
12     return x * f;
13 }
14 bool dead[N];
15 int Fa[N],Time[N],n;
16 long long val[N],ans,Ans[N];
17 int find(int x) {return Fa[x]==x?x:Fa[x]=find(Fa[x]);}
18 int Main() {
19     freopen("art.in","r",stdin);
20     freopen("art.out","w",stdout);
21     fread(buf,1,sizeof(buf),stdin);
22     n=read();
23     for(int i=1; i<=n; ++i) Fa[i]=i,val[i]=read();
24     for(int i=1; i<=n; ++i) Time[i]=read();
25     Fa[0]=0,Fa[n+1]=n+1;
26     memset(dead,false,sizeof(dead));
27     for(int i=n; i; --i) {
28         Ans[++Ans[0]]=ans;
29         dead[Time[i]]=true;
30         ans=max(ans,val[Time[i]]);
31         int pre=find(Time[i]-1),nxt=find(Time[i]+1);
32         Time[i]=find(Time[i]);
33         if(dead[pre]) {
34             if(pre!=Time[i]) {
35                 Fa[pre]=Time[i];
36                 val[Time[i]]+=val[pre];
37                 ans=max(ans,val[Time[i]]);
38             }
39         }
40         if(dead[nxt]) {
41             if(nxt!=Time[i]) {
42                 Fa[nxt]=Time[i];
43                 val[Time[i]]+=val[nxt];
44                 ans=max(ans,val[Time[i]]);
45             }
46         }
47     } for(int i=n; i; --i) printf("%lld\n",Ans[i]);
48     return 0;
49 }
50 int hehe=Main();
51 int main(){;}

转载于:https://www.cnblogs.com/forevergoodboy/p/7703577.html

cogs2514 艺术相关推荐

  1. 完整的Blender三维课程:素描到三维艺术的初学者

    使用Blender创建3D艺术.初级课程 你会学到什么 使用Blender并理解它的界面 创建3D模型 创建您自己的材料 布料仿真.纹理和雕刻 第三种解释的相机法则 照相机景深 灯光设置 渲染 如何使 ...

  2. 艺术站-卡通和风格化的HDRI天空

    卡通和风格化游戏的新HDRI天空纹理.大小解压后:576M 目前,pack拥有28个独特的HDRI天空+变体.每个天空的分辨率为4096×2048像素. 格式纹理:png,HDR 素材获取:艺术站-卡 ...

  3. Blender+SP+UE5游戏艺术工作流程学习

    Blender到虚幻引擎5 Blender游戏艺术 Blender for Game Art 你会学到: 如何在Blender中创建三维模型 UV如何展开和布局 如何在Substance Painte ...

  4. 概念艺术绘画学习教程 Schoolism – Foolproof Concept Painting with Airi Pan

    Schoolism--万无一失的概念绘画潘 大小解压后:3.19G 含课程素材文件 1920X1080 .mp4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 信息: 万无一失的概念绘画潘 本课 ...

  5. c4d+ps打造抽象NFT加密艺术 Create Abstract NFT Crypto Art with Cinema 4D + Photoshop

    c4d+ps打造抽象NFT加密艺术 Create Abstract NFT Crypto Art with C4D + PS c4d+ps打造抽象NFT加密艺术 Create Abstract NFT ...

  6. 软件调试的艺术笔记:GDB

    很久之前,在https://blog.csdn.net/fengbingchun/article/details/41413381中简单整理过gdb中常用的一些命令,不齐全,这里按照<软件调试的 ...

  7. 当代艺术遇上虚拟现实:幻境视界打造基业VR美术馆

    VR展览也许并不少,但专业的艺术展却难得一见.幻境世界周志强希望能借助VR技术,实现"一地办展.全球同展.永不闭馆",更好地传播当代艺术. 从米开朗琪罗到库尔贝,再到雷诺阿,大师们 ...

  8. 软件框架设计的艺术----读书总结

    总结 软件开发的艺术 理想主义,经验主义和无绪 文艺复兴时期,现代科学产生了两个重量级理论: 理性主义和经验主义. 理性主义认为理智是信息的首要来源.给出一个假设,只要通过思考就能理解和描述这个世界, ...

  9. [转]优秀编程的“艺术”

    优秀的代码是一件艺术品?或者软件工艺宣言言过其实了?成为一名"优秀"的程序员,有什么要求? 设想你雇佣了一名水管工,让他更换地下室的旧管道.这个家伙在工作之前.之中.之后,他就没有 ...

  10. 算法鼻祖高德纳,82 岁仍在写《计算机程序设计的艺术》

    作者 | 年素清 编辑 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 高德纳(Donald Ervin Knuth)被誉为现代计算机科学的鼻祖,毕生致力于编译程序.属性文法和运算法则等领域 ...

最新文章

  1. PHP 数组函数分类和整理
  2. VS2010 发布网站时文件丢失解决办法
  3. StereoRectify()函数定义及用法畸变矫正与立体校正
  4. 通过js引用外部脚本(嘿嘿,方便直接在浏览器上调试抓取代码)
  5. 关于升级Vmware ESXI6.7 主机挂在ISCSI共享存储的方法
  6. Lucene.Net 3.0.3如何从TokenStream中获取token对象
  7. localForage Web 离线存储
  8. wcdma系统随机接入过程的流程图_随机接入过程
  9. 技术分享 | 如何在无人机设计中运用拓补优化技术?
  10. 第15.9节 PyQt学习入门:使用Qt Designer进行GUI设计的步骤
  11. 【矩阵论】6. 正规方程与矩阵方程求解
  12. CTF解题思路:图片隐写
  13. 共享文件夹无法打开——服务器存储空间不足,无法处理此命令
  14. svnserve配置
  15. 商品条码三大编码原则,您知道吗?
  16. linux远程windows无法输入,XRDP在Windows下用远程桌面连接,键盘失效有关问题
  17. 计算机仿真模拟软件心得,【仿真软件在计算机组装课中的应用】 计算机组装总结及心得...
  18. 数据挖掘—数据预处理
  19. WIZnet W5500 芯片科技新突破
  20. 统计学习方法|决策树原理剖析及实现

热门文章

  1. 指数有限的子群存在一个右陪集代表元系,同时也是左陪集代表元系
  2. 在PPT设计中如何制作有效的图表?
  3. 订阅个人Blog最新评论的方法
  4. Ubuntu使用零碎记录
  5. 2015(4)软件工程,软件运行与维护,新旧系统转换策略,遗留系统的演化策略,数据转换与数据迁移...
  6. python argparse(参数解析)模块学习(二)
  7. 与你邂逅——软件工程
  8. JavaScript算法 之 选择排序
  9. iframe 自适应内容高度
  10. mysql grant权限分配(转)。