线段端点Codeforces Round #180 (Div. 1)

改章节是一篇关于线段端点的帖子

    标题链接

    ps:这场的题解非常nice啊,还供给了各种插图,在解理的中程过感受了出题人维思的大强啊

    官方题解

    

    

    非常非常非常非常非常难的竞赛,正反还是由于我太弱了。。。

 A

    B

    C : 结构题,看到上面这张图片就懂了。。。。

    

    深蓝色的部份是unique的,大红色的部份也是unique的,各据占了三分之二。。。。。

    D:结构题,临时不会

    E: 官方题解 

    计数题,突破口在于三条线的订交式方只有五种,然后我们要盘算其中的两种的总数,但是由于直接算比较难,于是可以反过来求

    fiveways

    即求C(n,3)减去川字型,减去XD状形的,再减去H状形的,要主就是要算两个东东。

    1:一条直线内有几条线段,这个可以用树状组数来求,每次遍历到一个线段的右端点就把左端点插进来(先和求再插),整齐划就白明了。

    2:求一条线与几条线订交,这个可以根据面上的来求,因为减去在内部的线段*2以后的点都是在这条线内的立孤的点的个数,,,自然是订交的

    其他的看看码代就可以想白明了。

    每日一道理
共和国迎来了她五十诞辰。五十年像一条长河,有急流也有缓流;五十年像一幅长卷,有冷色也有暖色;五十年像一首乐曲,有低音也有高音;五十年像一部史诗,有痛苦也有欢乐。长河永远奔流,画卷刚刚展开,乐曲渐趋高潮,史诗还在续写。我们的共和国正迈着坚定的步伐,跨入新时代。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAX_N = 222222;
int c[MAX_N];
void update(int x)
{
	for(;x<MAX_N;x+=x&-x) c[x]++;
}
int sum(int x)
{
	int ans = 0;
	for(;x;x-=x&-x) ans += c[x];
	return ans;
}
int a[MAX_N] , b[MAX_N] , p[MAX_N] , in[MAX_N] , id[MAX_N] ,inter[MAX_N];
int main()
{
	int n;
	cin >> n;
	for(int i = 1; i <= n; i++) 
	{
		cin >> a[i] >> b[i];
		if(a[i] > b[i]) swap(a[i],b[i]);
		id[a[i]] = id[b[i]] = i;
		p[a[i]] = b[i];
		p[b[i]] = a[i];
	}
	int m = 2 * n;
	for(int i = 1; i <= m; i++)
	{
		if(p[i] < i)
		{
			in[id[i]] = sum(i) - sum(p[i]-1);
			update(p[i]);
		}
	}
	for(int i = 1; i <= n; i++)
	{
		inter[i] = b[i] - a[i] - 1 - 2 * in[i];
	}
//	for(int i = 1; i <= n; i++) printf("%d ",inter[i]);
	long long ans = (long long)n*(n-1)*(n-2) / 6;
	long long chuang = 0 , cha = 0;
	for(int i = 1; i <= n; i++)
	{
		cha   += (long long)inter[i] * (n-1-inter[i]);
		chuang+= (long long)in[i] * (n-1-in[i]-inter[i]);
	}
	cout<<ans-cha/2-chuang<<endl;
	return 0;
}

    

    summary : 好大强的一场标题啊,种这题是怎么被想出来的,我这么挫该如何解救!!!!

文章结束给大家分享下程序员的一些笑话语录: 神灯新篇
一个程序员在海滩上发现了一盏神灯。他在灯上擦了几下,一个妖怪就从灯里跳出来说:“我是世界上法术最强的妖怪。我可以实现你的任何梦想,但现在,我只能满足你一个愿望。”程序员摊开了一幅中东地图说:“我想让中东得到永久的和平。”妖怪答道:“哦,我没办法。自打创世纪以来,那里的战火就没有停息过。这世上几乎没有我办不到的事,但这件事除外。”程序员于是说:“好吧,我是一个程序员,为许多用户编写过程序。你能让他们把需求表述得更清楚些,并且让我们的软件项目有那么一两次按进度按成本完成吗?”妖怪说:“唔,我们还是来看中东地图吧。”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值