Codeforces Round #218 (Div. 2) D:http://codeforces.com/problemset/problem/371/D

题意:就是有一些盘子,盘子里可以装水,这些盘子是从上到下一次排开的,然后会有一些操作1,p ,x,表示在第p个盘子里加入水x,如果这个盘子装不下,水就会流向下一个盘子。2 p,表示查询第p个盘子里有多少水。

题解:这一题用到并查集是真的没有想到,也很难想到。水向下流的过程,就相当于儿子找父亲的过程,然后用并查集直接模拟出来,就可以了。具体可以看看代码。一开始,往线段树和树状数组上想,总是想不到解决办法。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2e5+;
int f[N],val[N],a[N];
int n,m,t1,t2,t3;
void init(){
memset(val,,sizeof(val));
memset(a,,sizeof(a));
for(int i=;i<=n;i++)
f[i]=i;
}
int Find(int x){
int s;
for(s=x;s!=f[s];s=f[s]);
while(s!=x){
int temp=f[x];
f[x]=s;
x=temp;
}
return s;
}
int main(){
while(~scanf("%d",&n)){
init();
for(int i=;i<=n;i++){
scanf("%d",&val[i]);
a[i]=val[i];
}
scanf("%d",&m);
for(int i=;i<=m;i++){
scanf("%d%d",&t1,&t2);
if(t1==){
scanf("%d",&t3);
int r=Find(t2);
while(t3>){
if(val[r]>=t3){
val[r]-=t3;
break;
}
else{
t3-=val[r];
val[r]=;
int temp=r++;
if(r>n)break;
else r=Find(r);
f[temp]=r;
}
}
}
else
printf("%d\n",a[t2]-val[t2]);
}
}
}

Vessels的更多相关文章

  1. Codeforces Round #218 (Div. 2) D. Vessels

    D. Vessels time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  2. CodeForces 371D. Vessels

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

  3. Codeforces 371D Vessels (模拟)

    题目链接 Vessels 这道题我做得有点稀里糊涂啊==TLE了几发之后改了一行就A了. 具体思路就是记fi为若第i个容器已经盛不下水了,那么接下来盛水的那个容器. hi为若现在要给i号容器加水,当前 ...

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

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

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

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

  6. cf D. Vessels

    http://codeforces.com/contest/371/problem/D 第一遍写的超时了,然后看了别人的代码,思路都是找一个点的根,在往里面加水的时候碗中的水满的时候建立联系.查询的时 ...

  7. words

    conscious[英][ˈkɒnʃəs][美][ˈkɑnʃəs]consensus[英][kənˈsensəs][美][kənˈsɛnsəs] scious sensuswaterflood; de ...

  8. Mango DS Traning #49 ---线段树3 解题手记

    Training address: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=38994#overview B.Xenia and B ...

  9. SPOJ Pouring Water

    传送门 POUR1 - Pouring water #gcd #recursion Given two vessels, one of which can accommodate a litres o ...

随机推荐

  1. Android Canvas drawText实现中文垂直居中

    目标: 把中文字符绘制到目标矩形的居中位置. 问题: Android的Canvas绘图,drawText里的origin是以baseline为基准的,直接以目标矩形的bottom传进drawText, ...

  2. ARC和非ARC文件混编

    在编程过程中,我们会用到很多各种各样的他人封装的第三方代码,但是有很多第三方都是在非ARC情况下运行的,当你使用第三方编译时出现和下图类似的错误,就说明该第三方是非ARC的,需要进行一些配置. 解决方 ...

  3. FaceBook要在视频领域打败YouTube?

    据<纽约时报>报道,FaceBook正在探索一项新的策略来直接把音乐视频嵌入到用户的News Feeds中.目前,具有代表性的视频网站有YouTube和Vimeo,它们可以在社交网络上分享 ...

  4. oracle左右连接 完全连接 有效连接 心得总结

    左链接 A表  Left  join  B表  on  条件 示例 A表 B表 SELECT * FROM A  left JOIN B ON A.AID = B.BID; 结果: 左链接查询出来的数 ...

  5. linux下vi命令笔记

    vim 编辑器 全屏编辑器 模式化编辑器 vi:Visual Interfacevim:VI iMproved vi增强版vi模式:    编辑模式(命令模式)(默认处于编辑模式)        Ct ...

  6. Activity Threa创建Window和View分析

    http://blog.csdn.net/ljsbuct/article/details/7094580 1. 入口. 以前一直都说Activity的人口是onCreate方法.其实android上一 ...

  7. JAVA除去制定字符的方法

    只需调用replaceAll()方法: public class Test { public static void main(String[] args) { String s= "abc ...

  8. StudioStyle 使用 厌倦了默认的Visutal Studio样式了,到这里找一个酷的试试

    厌倦了默认的Visutal Studio样式了,到这里找一个酷的试试 http://studiostyl.es/ 去下载个自己喜欢的编码样式吧 如果你有想法 有能力 可以自己去做一个自己喜欢的  OK ...

  9. 项目中常用SQL语句总结

    1.项目中常常需要修改字段长度,但需要保留数据--增加业务受理 项目名称 字段长度alter table t_ywsl add aa varchar2(200);update t_ywsl set a ...

  10. Cocos2dx开发(1)——Win8.1下 NDK r10 环境搭建

    内容简要:仅讲述NDK在Windows环境下搭建方法,至于NDK何物一概不属于本文内容,老鸟或已有环境的跳过. 笔者已安装的环境: vs2013企业版.谷歌官网adt 22.3.0(推荐)省得自己ec ...