题意:戳这里

思路:很容易发现对于一个车能否移动到最终的位置只要判断路径中得最大高度与自身高端之和是否>w即可。

那么就可以转化为逆序对得最大数问题。。即对于每一辆车,判断有那些最初在他前面,而最终却在他后面的            车的与他的高度和是否>w即可。。树状数组维护。。

code:

 #include <bits/stdc++.h>
using namespace std;
#define M0(a) memset(a, 0, sizeof(a))
#define repf(i, a, b) for (int i = (a); i <= (b); ++i)
const int maxn = ;
struct trangle{
int x1, y1, x2, y2, p, h;
void input(int p){
this->p = p;
scanf("%d%d%d%d", &x1, &x2, &y1, &y2);
if (x1 > x2) swap(x1, x2);
if (y1 > y2) swap(y1, y2);
h = y2 - y1;
}
bool operator<(const trangle& p) const{
return x1 == p.x1 ? x2 < p.x2 : x1 < p.x1;
}
} f[maxn], s[maxn];
int v[maxn], n, pos[maxn], w;
inline int lowbit(const int& x){
return x & (-x);
} void update(int x,const int& val){
for (;x <= n; x += lowbit(x))
v[x] = max(v[x], val);
} int query(int x){
int res = ;
for (;x>; x-= lowbit(x))
res = max(res, v[x]);
return res;
} void solve(){
scanf("%d%d", &n, &w);
// cout << w << endl;
repf(i, , n) f[i].input(i);
repf(i, , n) s[i].input(i);
sort(f + , f + + n);
sort(s + , s + + n);
M0(pos), M0(v);
repf(i, , n) pos[f[i].p] = i;
bool ok = ;
for (int i = n; i >= ; --i){
if (!ok) break;
if (query(pos[s[i].p]) + s[i].h > w) ok = ;
update(pos[s[i].p], s[i].h);
}
puts(ok ? "TAK" : "NIE"); } int main(){
// freopen("a.in", "r", stdin);
int _;
scanf("%d", &_);
while (_--){
solve();
}
}

bzoj 3718的更多相关文章

  1. bzoj 3718: [PA2014]Parking

    Description 你的老板命令你将停车场里的车移动成他想要的样子. 停车场是一个长条矩形,宽度为w.我们以其左下角顶点为原点,坐标轴平行于矩形的边,建立直角坐标系.停车场很长,我们可以认为它一直 ...

  2. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  3. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  4. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  5. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

  6. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

  7. 【sdoi2013】森林 BZOJ 3123

    Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...

  8. 【清华集训】楼房重建 BZOJ 2957

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...

  9. 【splay】文艺平衡树 BZOJ 3223

    Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3  ...

随机推荐

  1. JSON Object(如NSDictionary,NSArray)转化为JSON格式的NSString #iOS开发

    NSString *string = [self jsonObjectToJSONString:inputDataDic]; -(NSString*)jsonObjectToJSONString:(i ...

  2. 常用的PHP框架

    ThinkPHP  http://www.thinkphp.cn Yii            http://www.yiichina.com laravel      https://laravel ...

  3. 防止多次领取红包进行ID锁

    //controller里面使用锁 ActivityRedPacket ap = customerService.getActivityRedPacket(params);    if (synchr ...

  4. C#获得客户端IP

    代码: /// <summary> /// 获得当前页面客户端的IP /// </summary> /// <returns>当前页面客户端的IP</retu ...

  5. 使用JS脚本获取url中的参数

    第一种方式:使用分隔符及循环查找function getQueryString(name) { // 如果链接没有参数,或者链接中不存在我们要获取的参数,直接返回空 if(location.href. ...

  6. OpenSource.organization-in-github

    1. gosquared https://github.com/gosquared 2. slack https://github.com/slackhq 3. The New York Times ...

  7. 2016年iOS技术圈回顾

    2016年同2015年一样,在我还没有做好心理准备的时候,一晃神就到了年底.年关将近,不知诸君心情如何,年初的规划实现了多少,来年的计划又是否已有了眉目.年过三十的Peak君感觉年关是越来越难过了,越 ...

  8. proc文件系统

    在shell终端里不带任何参数,直接运行mount命令可以显示正在挂载的文件系统.其中有这么一行 none on /proc type proc (rw) 这就是/proc文件系统.第一个域显示non ...

  9. c# dotfuscator 混淆后无法使用

    在实体类中忘记给字段加上 get ;set ;导致编译后程序无法使用. 下面这个(A代码)是可以正常混淆的.     public class PhoneUsedStatus     {        ...

  10. IOS 代码提示有问题

    Window(menu) -> Organizer(menu) -> Projects(tab) 删除 Derived Data ,立刻关闭xcode 然后重启xcode然后重新打开项目.