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 ...
随机推荐
- Python 多线程、进程、协程上手体验
浅谈 Python 多线程.进程.协程上手体验 前言:浅谈 Python 很多人都认为 Python 的多线程是垃圾(GIL 说这锅甩不掉啊~):本章节主要给你体验下 Python 的两个库 Thre ...
- 洪水!(Flooded! ACM/ICPC World Final 1999,UVa815)
题目描述:竞赛入门经典的习题4-10 解题思路:1.把各个网格想象成一个数组 2.排序 3.雨水总体积去铺满 //太懒了只写了求海拔 #include <stdio.h> #define ...
- mysql数据库常用操作
目前最流行的数据库: oracle.mysql.sqlserver.db2.sqline --:单行注释 #:也是单行注释 /* 注释内容*/:多行注释 mysql -uroot -p密码:登录mys ...
- 01背包问题:DP
题目描述: 有 N 件物品和一个容量是 V 的背包.每件物品只能使用一次. 第 i 件物品的体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大.输出 ...
- 面试中要注意的 3 个 JavaScript 问题
JavaScript 是 所有现代浏览器 的官方语言.因此,各种语言的开发者面试中都会遇到 JavaScript 问题. 本文不讲最新的 JavaScript 库,通用开发实践,或任何新的 ES6 函 ...
- ViewPager的简单使用说明
前提:工程中使用ViewPager,需要导入google提供的jar包(android-support-v4.jar). 要学习ViewPager的使用,建议直接看官方文档 Creating Swip ...
- 《剑指Offer》题二十一~题三十
二十一.调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 测试用例: 功能测试:输入数组中的奇 ...
- Notes of the scrum meeting(12.12)
meeting time:19:30~20:30p.m.,December 12th,2013 meeting place:3号公寓一层 attendees: 顾育豪 ...
- object-oriented 第二次作业(2)
面向对象程序设计自学计划 由于我的英文实在是很差,所以我就没有去考虑看英文的课程视频.网络上的课程有很多,什么学校的也有,一开始我不知道该如何开始选择课程.感觉每个都还可以.后来在群里的看到别人推荐的 ...
- C#中委托的发展与匿名函数
匿名函数(C# 编程指南) 匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用. 可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数. 共有两种匿名函数 ...