LINK:小B的棋盘



考试的时候没有认真的思考 导致没做出来.

容易发现 当k>=n的时候存在无限解 其余都存在有限解

对于30分 容易想到暴力枚举 对称中心 然后 n^2判断.

对于前者 容易发现 对称中心为某个点或某两个点的中点 对于后者 可以发现排序过后双指针可以做。

双指针做的时候还是存在一些小细节的(爆零警告 两种属性 不可以随便判断就跳指针 得根据自己排序的顺序来判断是否跳指针.

拿到30之后还是考虑 对称中心的问题.

对于 一些点对的中点或者一些点当对称中心 显然是不合法的 如 以某个点为对称中心的时候的四个象限画出来 然后 很容易发现端倪。

且 最后最多只有k个点可以不匹配 且匹配的时候的点对也有相对顺序的关系.

如 左下方的点一定是和右上方的点尽可能匹配的 类似等等...

特殊的 考虑 最靠下且尽可能靠左的k+1个点 一定和 相对的 最靠上且尽可能靠右的k+1个点之间存在匹配关系。

如果没有一对存在 那么显然不存在合法解 存在的话我们直接进行判定 这样就把刚才n^2的点集变成了 k^2的点集。

带上双指针就是nk^2的了.

由此推测 这道题的60分做法是希望我们写一个hash来判断重复而不是sort 这样做的话 点集被缩小为k^2.

值得一提的是 这样还是存在一个比较常见的check 虽然两点的中点坐标公式需要/2 但是可以都乘以2 来更好的避免小数误差.

const int MAXN=100010,G=3;
int n,k,cnt,ans;
struct wy{int x,y;}t[MAXN],w[MAXN];
inline int cmp(wy a,wy b){return a.y==b.y?a.x<b.x:a.y<b.y;}
inline int pd(wy a,wy b){return a.x==b.x&&a.y==b.y;}
inline int calc(int x,int y)
{
int l=1,r=n,cnt=0;
while(l<=r)
{
if(l==r)
{
if(t[l].x*2!=x||t[r].y*2!=y)++cnt;
break;
}
if(t[l].x+t[r].x==x&&t[r].y+t[l].y==y)++l,--r;
else
{
++cnt;
if(t[r].y>y-t[l].y)--r;
else
{
if(t[r].y==y-t[l].y)
{
if(t[r].x>x-t[l].x)--r;
else ++l;
}
else ++l;
}
}
}
return cnt<=k;
}
int main()
{
freopen("1.in","r",stdin);
//freopen("a.out","w",stdout);
get(n);get(k);
if(k>=n){puts("-1");return 0;}
rep(1,n,i)
{
int get(x),get(y);
t[i]=(wy){x,y};
}
sort(t+1,t+1+n,cmp);
rep(1,k+1,i)rep(n-k,n,j)w[++cnt]=(wy){t[i].x+t[j].x,t[i].y+t[j].y};
sort(w+1,w+1+cnt,cmp);
rep(1,cnt,i)
{
if(i!=1&&pd(w[i],w[i-1]))continue;
ans+=calc(w[i].x,w[i].y);
}
put(ans);
return 0;
}

5.19 省选模拟赛 T1 小B的棋盘 双指针 性质的更多相关文章

  1. 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解

    今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...

  2. 5.19 省选模拟赛 小B的夏令营 概率 dp 前缀和优化dp

    LINK:小B的夏令营 这道题是以前从没见过的优化dp的方法 不过也在情理之中. 注意读题 千万不要像我这个sb一样 考完连题意都不知道是啥. 一个长方形 要求从上到下联通的概率. 容易发现 K天只是 ...

  3. 5.19 省选模拟赛 小B的图 最小生成树 LCT

    LINK:小B的图 这道题就比较容易了. 容易想到将询问离线 然后 从小到大排序 那么显然是优先放正图(x+k)的边. 考虑随着x的增大 那么负图上的边会逐渐加进来 一条边被加进来当且仅当 其权值小于 ...

  4. 「HGOI#2019.4.19省选模拟赛」赛后总结

    t1-Painting 这道题目比较简单,但是我比较弱就只是写了一个链表合并和区间DP. 别人的贪心吊打我的DP,嘤嘤嘤. #include <bits/stdc++.h> #define ...

  5. 5.20 省选模拟赛 T1 图 启发式合并 线段树合并 染色计数问题

    LINK:图 在说这道题之前吐槽一下今天的日子 520 = 1+1+4+514. /cy 这道题今天做的非常失败 一点分都没拿到手 关键是今天的T3 把我整个人给搞崩了. 先考虑 如果得到了这么一张图 ...

  6. 5.15 省选模拟赛 T1 点分治 FFT

    LINK:5.15 T1 对于60分的暴力 都很水 就不一一赘述了. 由于是询问所有点的这种信息 确实不太会. 想了一下 如果只是询问子树内的话 dsu on tree还是可以做的. 可以自己思考一下 ...

  7. NOI 2019 省选模拟赛 T1【JZOJ6082】 染色问题(color) (多项式,数论优化)

    题面 一根长为 n 的无色纸条,每个位置依次编号为 1,2,3,-,n ,m 次操作,第 i 次操作把纸条的一段区间 [l,r] (l <= r , l,r ∈ {1,2,3,-,n})涂成颜色 ...

  8. 洛谷[LnOI2019]长脖子鹿省选模拟赛t1 -> 快速多项式变换

    快速多项式 做法:刚拿到此题有点蒙,一开始真没想出来怎么做,于是试着去自己写几个例子. 自己枚举几种情况之后就基本看出来了,其实本题中 n 就是f(m)在m进制下的位数,每项的系数就是f(m)在m进制 ...

  9. 【20170920校内模拟赛】小Z爱学习

    所有题目开启-O2优化,开大栈空间,评测机效率为4亿左右. T1 小 Z 学数学(math) Description ​ 要说小 Z 最不擅长的学科,那一定就是数学了.这不,他最近正在学习加法运算.老 ...

随机推荐

  1. 转载--gulp入门

    关于gulp的入门文章,先转载了 http://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/

  2. 题解:2018级算法第六次上机 C6-不Nan的过河

    题目描述: 样例: 实现解释: 一道因为没排序做了一个小时没做出来的二分答案模板题(手动呲牙) 知识点: 二分答案,最大值最小化 坑点: 排序,judge(mid)函数内计数的实现 其实从最长一步的最 ...

  3. python PEP8开发规范

    为了使得代码更美观,方便阅读,建议遵循下PEP8规范 每行长度最大不要超过79. 换行可以使用反斜杠,换行点要在操作符的后面敲回车. 类个top-level函数定义之间空两行:类中的方法定义之间空一行 ...

  4. SQL字符串拼接FOR XML PATH

    在工作中难免会遇到数据库中数据要进行拼接的问题,字符串拼接可以是用SQL的拼接也可以使用C#的拼接,本次说的是使用SQL进行拼接. 首先插入测试语句: --测试语句,准备创建表的语句:如下 CREAT ...

  5. python numpy 保留满足指定条件的行

    #arr_old 原来数组 #arr_new 保留后的数组 #>=mean+std 指定条件 arr_new = arr_old[arr_old[:,4]>=(mean+std),:]#筛 ...

  6. shell专题(三):Shell脚本入门

    1.脚本格式 脚本以#!/bin/bash开头(指定解析器) 2.第一个Shell脚本:helloworld (1)需求:创建一个Shell脚本,输出helloworld (2)案例实操: [atgu ...

  7. java 基本语法(十八)Lambda (五)Stream API

    1.Stream API的理解:1.1 Stream关注的是对数据的运算,与CPU打交道集合关注的是数据的存储,与内存打交道 1.2 java8提供了一套api,使用这套api可以对内存中的数据进行过 ...

  8. 数据可视化之powerBI基础(十九)学会使用Power BI的参数,轻松搞定动态分析

    https://zhuanlan.zhihu.com/p/55295072 静态的分析经常不能满足实际分析的需要,还需要引入动态分析,通过调节某个维度的增减变化来观察对分析结果的影响.在PowerBI ...

  9. Jmeter系列(45)- 详解 Jmeter 跨线程组取参数值的方法,免代码!

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 用过 Jmeter 的同学应该都 ...

  10. 用maven打包java项目的pom文件配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...