NOIP系列(续)
马上就要告别noip了呢。

这道题大家都说dfs可过。
但是数据范围一眼状压啊。
首先假设点是有序的(选取有先后顺序),其实这并不影响什么,但是却省下大量的时间和代码长度。
然后状压,dp[i]表示状态为i最少需要再用几条抛物线。
注意在枚举每一个点的抛物线的时候考虑在这个抛物线上会不会有其它点与它重合。
#include<bits/stdc++.h>
using namespace std;
#define eps 1e-10
inline double abs1(double a){return max(a, -a);}
int dp[(<<)];
double x[],y[];
int n;
double a,b;
void calc(int i,int j){
if(x[i]==x[j]){
a=;return ;
}
b=(y[i]*x[j]*x[j]-y[j]*x[i]*x[i])/(x[i]*x[j]*(x[j]-x[i]));
a=(y[i]-x[i]*b)/(x[i]*x[i]);
} int dfs(int i,int st){
if(dp[st])return dp[st];
if(!st)return ;
if(!((<<(i-))&st))return dp[st]=dfs(i+,st);
int ret=+dfs(i+,st^(<<(i-)));//自己一条抛物线
int sta=st;
for(int j=i+;j<=n;j++){//两点确定一条抛物线,所以只要枚举下一个点就害了
if((<<(j-))&sta){
sta|=(<<(j-));
calc(i,j);
if(a>-eps)continue;//判断能否在同一条抛物线上
int tmp=st^(<<(j-))^(<<(i-));
for(int k=i+;k<=n;k++){
if(!(tmp&(<<(k-))))continue;
double yy=a*x[k]*x[k]+b*x[k];
if(abs1(yy-y[k])<eps){
tmp^=(<<(k-));sta|=(<<(k-));}
}
ret=min(ret,+dfs(i+,tmp));
}
}
return dp[st]=ret;
}
int T;
int main(){
scanf("%d",&T);
while(T--){
memset(dp,,sizeof(dp));
int m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)dp[<<(i-)]=;
for(int i=;i<=n;i++)scanf("%lf%lf",&x[i],&y[i]);
dfs(,(<<n)-);
printf("%d\n",dp[(<<n)-]);
}
return ;
}
NOIP系列(续)的更多相关文章
- HBase之CF持久化系列(续3——完结篇)
相信大家在看了该系列的前两篇文章就已经对其中的持久化有比较深入的了解.相对而言,本节内容只是对前两节的一个巩固.与持久化相对应的是打开文件并将其内容读入到内存变量中.而在本节,我就来介绍这一点. 本节 ...
- HBase之CF持久化系列(续2)
正如上篇博文所说,在本节我将为大家带来StoreFlusher.finalizeWriter..如果大家没有看过我的上篇博文<HBase之CF持久化系列(续1)>,那我希望大家还是回去看一 ...
- NOIP系列复习及题目集合
首先是我的酱油记了啦~: Xs的NOIP2014酱油记,持续更新中 知识点方面: noip知识点总结之--贪心 noip知识点总结之--线性筛法及其拓展 noip知识点总结之--欧几里得算法和扩展欧几 ...
- HBase之CF持久化系列(续1)
这一节本来打算讲解HRegion的初始化过程中一些比较复杂的流程.不过,考虑前面的博文做的铺垫并不够,因此,在这一节,我还是特意来介绍HBase的CF持久化.关于这个话题的整体流程性分析在博文< ...
- NOIP系列
NOIP2015运输计划 唉 真是 这题 卡死我了 tarjan离线lca复杂度O(n) 最后各种卡常,多交几遍才A(洛谷104ms) %%%zk学长609ms 注意二分的时候左边界要定成0 根据题意 ...
- 汉若塔系列续:汉诺塔VIII、汉诺塔IX、汉诺塔X。
汉诺塔VIII,在经典汉若塔问题上,问n个盘子的情况下,移动m次以后,是什么状态.(与第七代互为逆命题) 我的思路:本质还是dfs,但是用m的值来指引方向,每搜一层确定第i个盘子在哪个塔,o(n)的算 ...
- 圣魔大战3(Castle Fantisia)艾伦希亚战记完美攻略
作为城堡幻想曲系列续作,艾伦希亚战记继承了前作的战棋+养成模式进行游戏. (城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列,艾伦西亚战记==艾伦希亚战记,一 ...
- c++stl应用入门
在这篇中,我会讲几个简单易懂且比较常用的stl函数,这些函数在noip系列考试中往往被允许使用(既然让用我们自然不用手码了...) (末尾有惊喜!) 1.sort 绝大部分刚入门的oier第一个接触的 ...
- 用Mochiweb打造百万级Comet应用,第一部分
http://www.iteye.com/topic/267028 原文:A Million-user Comet Application with Mochiweb, Part 1 参考资料:Com ...
随机推荐
- MySQL☞having子句
having子句:是跟group by结合使用,对分组以后的数据再次进行过滤,经常跟聚合函数结合使用 格式: select 列名/聚合函数 from 表名 where 条件 group by ...
- mysql新手进阶02
云想衣裳花想容,春风拂槛露华浓. 若非群玉山头见,会向瑶台月下逢. 现在有一教学管理系统,具体的关系模式如下: Student (no, name, sex, birthday, class) Tea ...
- 《Git学习指南》学习笔记(三)
多次提交 提交一般分未两步:add和commit. add将修改存入到索引(index)或叫暂存区(staging area)中. status命令 status命令会出现三种可能的状态: chang ...
- CSP201503-2:数字排序
引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...
- 使用flume抓取tomcat的日志文件下沉到kafka消费
Tomcat生产日志 Flume抓取日志下沉到kafka中 将写好的web项目打包成war包,eclise直接导出export,IDEA 在artifact中添加新的artifact-achieve项 ...
- MarkDown编辑器使用
有几款好用的MarkDown编辑器,参考: https://blog.csdn.net/bat67/article/details/72804251 我就下载的是 MarkDown 2来使用. 现用现 ...
- 【第一章】Shell 概述
一.什么是Shell? shell是一个命令解释器,它不仅包含大量的命令以实现操作系统的对话,还可以实现定义变量.条件判断.循环控制.函数调用等功能. 作用:解释执行用户输入的命令及程序等. 从键盘输 ...
- NMAP-服务扫描
1.版本探测 2.扫描强度 共分1-9级,默认是7级,等级越高强度越高 同-sV一同使用 3.轻量扫描 等价于–version-intensity 2 4重量扫描 等价于–version-intens ...
- 关闭Tomcat进程 一条语句(必看)
写在开始 MAC系统下进行JAVA研发,经常遇到的一个问题就是杀死异常Tomcat 通常都是用两条指令,先查询出Tomcat占用的进程,再kill掉该进程, 其实有一种联合语句的方式可以一条语句直接关 ...
- [C++] OOP - Base and Derived Classes
There is a base class at the root of the hierarchy, from which the other class inherit, directly or ...