To do list

The Most Important 图论你妹妹 忽略了。。



A 动态维护凸包 / mutiset / 离线树状数组 / 平衡木

http://acm.nbut.cn/Problem/view.xhtml?id=1348

http://blog.csdn.net/c3568/article/details/8549325

From Ac:

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<set>
#include<vector>
#include<map>
using namespace std;
typedef long long LL;

const int MAXN = 22222;
const int MAXM = 50001;

#define mp make_pair
#define pb push_back
int X[ MAXM ];
map< int, int > st_x ;
vector< int > dv;

int n;

int main(){
	int T;
	cin >> T;
	for(int cas = 1; cas <= T; ++ cas) {
		if(cas != 1) puts("");
		printf("Case #%d:\n", cas );
		
		memset(X,0x3f,sizeof X);
		
		st_x.clear();
		
		scanf("%d", &n);
		int m=0;
		
		for(int i=0;i<n;++i) {
			int x,y; scanf("%d%d", &x, &y);
			map< int, int >::iterator ps = st_x.lower_bound(x);
			int pre = X[x];
			X[x]=min(X[x],y);
			dv.clear();

			if(st_x.size() && ps!=st_x.begin()) {
				--ps;
				if(y<X[ps->first]) {
					for(++ ps; ps != st_x.end();++ps) {
						if(x<ps->first) {
							if(X[ps->first]>= X[x])
								dv.pb(ps->first); //to delete
							else break;
						}
					}
					//delete
					for(int j=0;j<dv.size();++j) {
						m -= st_x[ dv[j ] ];
						st_x.erase( dv[j] );
					}
					m -= st_x[x];
					if(y == pre){
						st_x[x]++;
					}else {
						st_x[x] = 1;
					}
					m += st_x[x];
				}
			}else {
				for(; st_x.size() && ps != st_x.end();++ps) {
						if(x<ps->first) {
							if(X[ps->first]>= X[x])
								dv.pb(ps->first); //to delete
							else break;
						}
					}
					//delete
				for(int j=0;j<dv.size();++j) {
						m -= st_x[ dv[j ] ];
						st_x.erase( dv[j] );
				}
				m -= st_x[x];
				if(y == pre){
					st_x[x]++;
				}else {
					st_x[x] = 1;
				}
				m += st_x[x];
			}
			printf("%d\n", m);
		}
	}
    return 0;
}


B SAM & SA 找时间补补。。。



C AC 自动机 DONE

http://blog.csdn.net/dslovemz/article/details/8708308


D Treap  算了吧。。。



E Splay   算了吧。。。



F 插头dp    ing


G dp优化

H 动态树    算了吧。。。

https://quartergeek.com/summary-of-link-cut-tree/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值