A - Vessels

CodeForces - 371D

题意:
进行两种操作:1代表向x容器中倒入y升水
2代表  查询x容器中 的水为多少
将所有容器从下往上开始标号 1到  n,当要倒水的时候,只需要找到当前容器的祖先,所谓祖先就是最上面有水的容器,在往上就没有了
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn = 2e5+10;
int a[maxn];
int sum[maxn];
int f[maxn];
int getf(int x)
{int r = x;while(r != f[r])r = f[r];int i = x,j;while(f[i] != r){j = f[i];f[i] = r;i = j;}return r;
}
void mix(int x,int y)
{int t1 = getf(x);int t2 = getf(y);if(t1 > t2)f[t2] = t1;else f[t1] = t2;
}
int main()
{int n;while(~scanf("%d",&n)){memset(a,0,sizeof(a));memset(sum,0,sizeof(sum));for(int i = 1;i <= n;i++){scanf("%d",&a[i]);f[i] = i;}f[n+1] = n+1;int q;scanf("%d",&q);while(q--){int op;scanf("%d",&op);if(op == 1){int x,have;scanf("%d%d",&x,&have);while(have > 0){int F = getf(x);if(F == n+1) break;if(a[F] - sum[F] >= have){sum[F] += have;have = 0;}else{have -= a[F] - sum[F];sum[F] = a[F];mix(F,F+1);}x = F;}}else{int x;scanf("%d",&x);printf("%d\n",sum[x]);}}}return 0;
}

Vessels CodeForces - 371D相关推荐

  1. CodeForces - 371D. Vessels(并查集)

    题目链接:http://codeforces.com/problemset/problem/371/D点击打开链接 D. Vessels time limit per test 2 seconds m ...

  2. 【CodeForces - 371D】Vessels(思维,元素合并,并查集)

    题干: There is a system of n vessels arranged one above the other as shown in the figure below. Assume ...

  3. CodeForces 371D. Vessels

    暴力+胡乱优化就过了..tags给的东西似乎什么都没用到.....CF的数据是不是有点水啊.....果然是没有营养的题目..... D. Vessels time limit per test 2 s ...

  4. CodeForces - 371D Vessels 【并查集】

    Vessels 题意: 自上而下的n个碗,向某个碗中倒水,如果溢出,则会流向它之下的下一个未满的碗.有两种操作:1 p x表示往第p个碗中导入x的水,2 p表示询问此时第p个碗中的水量. 题解: 未经 ...

  5. Codeforces 371D. Vessels【并查集】

    题目大意: 给出一堆从上到下叠起来的容器,有两种操作:第一种是在编号为i的容器中加入x的水(保证水溢出之后会流到下一个最近的容器(如果存在)中):第二种是查询编号为i的容器中有多少水. 做法: 首先, ...

  6. CodeForces 371D Vessels(树状数组)

    树状数组,一个想法是当往p注水时,认为是其容量变小了,更新时二分枚举,注意一些优化. #include<cstdio> #include<iostream> #include& ...

  7. Codeforces I. Vessels(跳转标记)

    题目描述: Vessels time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  8. CF 371D Vessels 【并查集】

    给出一个竖着的n个容器每个容器的容积,从上到下分别是1,2,3,4,,n,从某点开始浇水,保证该层满了后水能流向下一层,一层一层,直到不再溢出或者最底下都装满了留到地上去了为之. 给出n个操作/询问 ...

  9. codeforces:D. Vessels【py的栈太浅了】

    分析 这个的话,水流到下面的就要并查集起来 满了的话,就指向下面 不停地更换pa ac code import sys input = sys.stdin.readlinedef solve():n ...

最新文章

  1. 由于没有远程桌面授权服务器可以提供许可证,远程回话被中断
  2. $http中文乱码|param乱码|angular提交后台乱码|
  3. 图像PSNR值及MSE值的计算
  4. 程序员常犯的5个非技术性错误
  5. 滴滴人脸识别申诉照片怎么拍_涅槃乐队Nevermind封面照片是怎么拍出来的?
  6. C# 对话框使用整理
  7. Spring读取xml配置文件的原理与实现
  8. python查找第k大的数_Python实现查找二叉搜索树第k大的节点功能示例
  9. “七”待已久,“夕”望是你,“快”来学习,“乐”在其中!
  10. 2021-06-28操作表单
  11. WAP 非443端口的ADFS如何配置Web应用程序代理
  12. soul群聊派对显示服务器异常,soul群聊派对在哪?功能、查找步骤有这些
  13. java之调用七牛云接口完成视频加水印
  14. 辩证的看待IDE工具(Java与Python学习通法)
  15. 计算机试图启动宏,打开电子表格时,将提示禁用或启用宏的解决方案
  16. c语言编程中句柄无效怎么解决,句柄无效,小编教你句柄无效怎么解决
  17. 学习 Java8 函数式编程 (二)
  18. 耳机四根线的图解_type c数据线拆解及接线图文详解
  19. 智能匹配 — 百度SEM
  20. 【已解决】adb connect x.x.x.x:5555报错由于 目标计算机积极拒绝,无法连接

热门文章

  1. 亚马逊运营必备实用工具
  2. JAVA编程思想笔记 : 并发 [ 一 ]
  3. 海量数据:判断一棵树是否为另一棵树的子树
  4. 二叉树 判断一棵树是否是另一棵树的子树
  5. Facebook打开,跳转个人首页、动态方式
  6. asp.net学生选课系统_网上选课系统_教师管理系统_ 学生管理系统_教务管理系统
  7. Oracle的SYS.AUD$占满系统表空间了怎么办
  8. 银星能源计提减值准备应对光伏产品价格下滑
  9. 实例004:计算正方形的周长
  10. Object.assign()