codeforces527D
Clique Problem
所谓图的极大团是指在一个无向图中找到最多的点,使得这些点构成的图(即导出子图)是一个完全图,然而这个问题至今没有有效的多项式解法,当然在某些特殊条件下,这个问题具备多项式解法。
Input
Output
输出一个整数,为极大团的点数。
Sample Input
Sample Output
3
Hint
样例如图:
sol:这题咋一看似乎Div2的D,其实也就Div2的A题的难度
令Xi>Xj,则当Xi-Xj >= Wi+Wj时有连边,移项以后就是 Xi-Wi >= Xj+Wj
然后就得到一个序列,每个元素有两个变量F1,F2,答案就是让你求一个最长不下降子序列满足每一项的F1>前一项的F2,因为是1e9,所以离散以下,套上树状数组模板即可
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{
ll s=;
bool f=;
char ch=' ';
while(!isdigit(ch))
{
f|=(ch=='-'); ch=getchar();
}
while(isdigit(ch))
{
s=(s<<)+(s<<)+(ch^); ch=getchar();
}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<)
{
putchar('-'); x=-x;
}
if(x<)
{
putchar(x+''); return;
}
write(x/);
putchar((x%)+'');
return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const int N=;
int n,dp[N];
int Hash[N<<];
struct Point
{
int X,W,F1,F2;
}P[N];
inline bool cmp_X(Point p,Point q)
{
return p.X<q.X;
}
struct BIT
{
int Max[N<<];
#define lowbit(x) ((x)&(-x))
inline void Ins(int x,int Val)
{
while(x<=*Hash)
{
Max[x]=max(Max[x],Val);
x+=lowbit(x);
}
}
inline int Que(int x)
{
int ans=;
while(x)
{
ans=max(ans,Max[x]);
x-=lowbit(x);
}
return ans;
}
}T;
int main()
{
int i,ans=;
R(n);
for(i=;i<=n;i++)
{
R(P[i].X); R(P[i].W);
P[i].F1=P[i].X-P[i].W;
P[i].F2=P[i].X+P[i].W;
Hash[++*Hash]=P[i].F1;
Hash[++*Hash]=P[i].F2;
}
sort(P+,P+n+,cmp_X);
sort(Hash+,Hash+*Hash+);
*Hash=unique(Hash+,Hash+*Hash+)-Hash-;
for(i=;i<=n;i++)
{
P[i].F1=lower_bound(Hash+,Hash+*Hash+,P[i].F1)-Hash;
P[i].F2=lower_bound(Hash+,Hash+*Hash+,P[i].F2)-Hash;
}
for(i=;i<=n;i++)
{
dp[i]=T.Que(P[i].F1)+;
T.Ins(P[i].F2,dp[i]);
ans=max(ans,dp[i]);
}
Wl(ans);
return ;
}
/*
Input
4
2 3
3 1
6 1
0 2
Output
3
*/
codeforces527D的更多相关文章
- CodeForces527D. Fuzzy Search
time limit per test:3 seconds memory limit per test:256 megabytes input:standard input output:standa ...
- Codeforces 刷水记录
Codeforces-566F 题目大意:给出一个有序数列a,这个数列中每两个数,如果满足一个数能整除另一个数,则这两个数中间是有一条边的,现在有这样的图,求最大联通子图. 题解:并不需要把图搞出来, ...
随机推荐
- Python实现分发数据块到多台服务器上
代码如下: # coding: utf-8 import paramiko import re import os from time import sleep # 定义一个类,表示一台远端linux ...
- orleans发送广播消息
一个client发送消息给orleans, 就只需要掉用Grain的函数就行了. 但是有时候Grain需要发送消息给client, 在orleans里面, 就只能通过Observer来实现. publ ...
- flask使用基础
1.安装 pip install Flask 基本依赖库: jinja2:实现对模板的处理 werkzeug:本质是socket服务器,用于接收http请求,并对请求进行预处理,然后触发Flaks框架 ...
- H5 video标签的属性
35-video标签 video标签的属性 src: 用于告诉video标签需要播放的视频地址 autoplay: 用于告诉video标签是否需要自动播放视频 controls: 用于告诉video标 ...
- 小程序wxRequest封装
//const host = 'http://114.215.00.00:8005';// 测试地址 const host = 'https://xx.xxxxxxxx.net'; // 正式地址 c ...
- urllib库
python内置的最基本的HTTP请求库,有以下四个模块: urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模块 urllib.ro ...
- 网站之.htaccess文件
Apache系统中的.htaccess文件(分布式配置文件)提供了针对目录改变配置的方法,也就是在一个特定的文件目录中放置一个包含指令的文件,以作用于此目录以及所有子目录.直白的说,.htaccess ...
- [转帖]Linux:cut命令详解
Linux:cut命令详解 https://www.cnblogs.com/Spiro-K/p/6361646.html cut -f cut -f -d cut -c1- 这三个命令好像最常见, 记 ...
- Effective C++目录
条款1:视C++为一个语言联邦 条款2:尽量以const.enum.inline替换#define 条款3:尽可能使用const 条款4:确定对象使用前已先被初始化 条款5:了解C++默认编写并调用哪 ...
- Day 4-2 random模块
import random random.randint(1,100) # 从1到100中随机取出一个数.包含100 random.randrange(1,100) #功能和上面一样.只是不包含100 ...