【CSDN周赛15期】

求并集

求两个有序链表的并集

O(n)做法是双指针扫一遍,比赛时可以排序+去重O(nlogn)写起来简单一些

sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());

小T找糖豆

给n个数,求[1,1e18]区间去掉这些数后,[X,1e18]这个区间最小值

等价于求这n个数最大值,答案是最大值+1


争风吃醋的豚鼠

N个节点两两建边。
不存在3个节点相互之前全部相连。(3个节点连接成环)
最多能建立多少条边?

不成环看作二分图即可,最多情况就是两边各n/2个点,然后依次连边,
所以答案为(n+1)/2*n/2


选择客栈

题目来源:NOIP2011提高组

统计前缀客栈每种装修风格的数量,然后枚举右边一个人住店的位置,不断更新答案即可

	cin>>n>>_>>p;//颜色数没有用
	int col,price;
	int pos=0;
	for(int i=1;i<=n;i++)
	{
		cin>>col>>price;
		if(price<=p) 
			pos=i;//pos表示最近的一个满足条件的咖啡店
		if(pos>=lst[col])//更新与col风格相同的可选住店位置数
			sum[col]=cnt[col];
		ans+=sum[col];
		lst[col]=i;//上一次col这种风格的位置更新为i
		cnt[col]++;
	}
	cout<<ans;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值