zoukankan      html  css  js  c++  java
  • NKOJ3751 扫雷游戏

    问题描述

    有一款有趣的手机游戏。棋盘上有n颗地雷,玩家需要至少扫掉其中的k颗雷。
    每一步,玩家可以用手指在手机屏幕上划一条直线,该直线经过的地雷都会被扫除掉。
    问,最少需要划几次就能扫除k颗以上的地雷?

    输入格式

    有两组测试数据,对于每组数据:
    第一行,一个整数n,表示地雷的总数
    第二含,一个整数k,表示至少需要扫掉的雷数
    接下来n行,每行两个整数x和y,表示一颗地雷的坐标。

    输出格式

    两行,每行一个整数,表示对应数据的答案

    样例输入


    4
    1 1
    1 2
    2 1
    2 2

    7
    1 1
    2 2
    1 3
    3 1
    3 3
    4 1
    4 2
    4 3
    4 5

    样例输出

    2
    2

    提示

    对于30%的数据, 1<=n<=8 ,  1<=k<=n , -10000<=x,y<=10000
    对于100%的数据,1<=n<=16 , 1<=k<=n , -10000<=x,y<=10000

    【题目分析】
    观察题目,n最大为16,两点确定一条直线,最多可画出162条直线。
    我们暴力枚举所有直线,统计出每条直线穿过的点数。
    每条直线最多穿过16个点,我们用二进制来实现状态压缩。
    我们把n个点编号0到n - 1,用Line[i][j]记录编号i和j的点对应直线穿过的节点集合。
     
     用结构体存下每一个点的坐标, 
    for(
    叉乘−
    背包DP
    【传送门】http://oi.nks.edu.cn/zh/Problem/Details?id=3751
  • 相关阅读:
    .NET Core自定义TagHelper和使用Serilog
    .NET Core CSRF
    jq 获取表单全部数据
    Webuploader 简单图片上传 支持多图上传
    CF-1451 E Bitwise Queries 异或 交互题
    CF-1440C2 Binary Table (Hard Version) (构造,模拟)
    CF-1445 C
    ACM模板_axiomofchoice_extra
    Codeforces Round #678 (Div. 2) 题解 (A-E)
    Oracle数据同步
  • 原文地址:https://www.cnblogs.com/Limbo-To-Heaven/p/11060523.html
Copyright © 2011-2022 走看看