标签:
一开始题目读错了,还以为可以从任意点为起点向上向左吃。这两个数组的作用跟并查集的实现有着异曲同工之妙。
还是不懂的话,看看代码很快就能明白了。
#include<map> #include<string> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> #include<queue> #include<vector> #include<iostream> #include<algorithm> #include<bitset> #include<climits> #include<list> #include<iomanip> #include<stack> #include<set> using namespace std; map<int,int>hash; int x[200010],y[200010]; int main() { int n,q; cin>>n>>q; hash[0]=hash[n+1]=q; while(q--) { char c; cin>>x[q]>>y[q]>>c; map<int,int>::iterator it=hash.lower_bound(x[q]); if(it->first==x[q]) { puts("0"); continue; } hash[x[q]]=q; if(c=='U') { printf("%d\n",y[q]-y[it->second]); y[q]=y[it->second]; } else { it--; it--; printf("%d\n",x[q]-x[it->second]); x[q]=x[it->second]; } } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
codeforces 555 C Case of Chocolate
标签:
原文地址:http://blog.csdn.net/stl112514/article/details/46958481