CodeForces
来源:互联网 发布:淘宝品牌代理加盟 编辑:程序博客网 时间:2024/06/07 03:33
题目链接:http://codeforces.com/problemset/problem/371/D点击打开链接
每个位置满了之后跳转到下一个不满的位置 用pre储存 这样就不用一次遍历而t
#include <iostream>#include <stdio.h>#include <limits.h>#include <stack>#include <algorithm>#include <queue>#include <string.h>#include <set>using namespace std;int n=0;struct xjy{ int t; int v;}a[222222];int pre[222222];int findx(int x){ int r=x; while(pre[r]!=r) { r=pre[r]; } int i=x;int j; while(pre[i]!=r) { j=pre[i]; pre[i]=r; i=j; } return r;}void join (int x,int y){ int p1=findx(x); int p2=findx(y); if(p1!=p2) { if(p1>p2) pre[p2]=p1; else pre[p1]=p2; }}void add(int num,int addv){ int r=findx(num); while(addv>0&&r<=n) { if((a[r].v-a[r].t)>=addv) { a[r].t+=addv; addv=0; } else { addv-=(a[r].v-a[r].t); a[r].t=a[r].v; join(r,r+1); } r=findx(r); }}int main(){ for(int i=0;i<=200001;i++) pre[i]=i; scanf("%d",&n); xjy mid; for(int i=1;i<=n;i++) { scanf("%d",&mid.v); mid.t=0; a[i]=mid; } int nn=0; scanf("%d",&nn); for(int i=0;i<nn;i++) { int midmid; scanf("%d",&midmid); if(midmid==1) { int num;int addv; scanf("%d%d",&num,&addv); add(num,addv); } else { int num; scanf("%d",&num); printf("%d\n",a[num].t); } } }
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- linux实时系统阵营
- Attempted relative import in non-package
- 笔记1:函数的概述与递归函数
- mybaits 更新choose标签条件Y加了单引号报错
- zoj-1094Matrix Chain Multiplication(栈来实现矩阵相乘)
- CodeForces
- Android应用层View绘制流程与源码分析
- 暑期集训之最小公倍数
- MySQL入门之创建、修改、删除、查看数据库
- python实现linux下的简单进程监控
- HDU2089:不要62(数位DP)
- 如何在Windows 10中安装XGBoost
- mysql统计每分钟增删改查语句次数
- linux下如何安装redis