首页 > 其他分享 >B - Make Many Triangles

B - Make Many Triangles

时间:2024-03-23 15:55:05浏览次数:27  
标签:直线 Many Make long poi y2 ll Triangles

原题链接

题解

1.我们可以用若干条直线把所有点串起来,串起来的要求是不同直线不共点,这样以每条直线上的两点为底,直线外另一点为顶点配对
令最大的直线上的点数为k,如果n-k>=k/2+k%2,那么这条直线上的点一定可以被消除。否则不行

就变成了若干集合彼此相消,当最大集合大小超过剩余集合总和时无法消除干净?

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct
{
    ll x,y;
}poi[304];

ll cal(ll a,ll b,ll c)
{
    ll x1=poi[a].x-poi[c].x,y1=poi[a].y-poi[c].y,x2=poi[b].x-poi[c].x,y2=poi[b].y-poi[c].y;
    return x1*y2-x2*y1;
}

int main()
{
    ll n;
    cin>>n;
    for(ll i=1;i<=n;i++) cin>>poi[i].x>>poi[i].y;


    ll maxline=0;
    for(ll i=1;i<n;i++)
    {
        for(ll j=i+1;j<=n;j++)
        {
            ll cnt=0;
            for(ll k=1;k<=n;k++)
            {
                if(cal(i,j,k)==0) cnt++;
            }
            maxline=max(maxline,cnt);
        }
    }

    cout<<min(n/3,n-maxline)<<endl;
    return 0;
}

标签:直线,Many,Make,long,poi,y2,ll,Triangles
From: https://www.cnblogs.com/pure4knowledge/p/18091218

相关文章

  • QMake和CMake
     区别和相同点       qmake和cmake两者都用来构建系统,都生成一个Makefile,该文件由make读取以构建项目,告诉编译器和链接器该做什么,以创建可执行文件(或动态或静态库)。       qmake专注于使用Qt的项目,QtCreator可以轻松生成项目文件(适合初学者),并由QtCreator支......
  • MakeFile学习
    Makefile学习Makefile的规则基本规则target...:prerequisites...<tab缩进>command<tab缩进>...<tab缩进>...target是一个目标文件,可以使ObjectFile,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续‘“伪目标”中会有叙述。prerequisites就是要生成t......
  • Uboot Makefile分析(一)
    学习资料来源:https://www.bilibili.com/video/BV12E411h71h?p=11&vd_source=432ba293ecfc949a4174ab91ccc526d6 VERSION=2016PATCHLEVEL=03SUBLEVEL=EXTRAVERSION=NAME=版本信息 MAKEFLAGS+=-rR--include-dir=$(CURDIR)+=表示追加,-rR表示禁止......
  • did you register the component correctly? For recursive components, make sure to
    创建了一个vue2的项目,在运行npmrunserve的时候报错,检查了拼写也完全没有问题最后找到的解决方案将原来的<script>import{Person}from'./components/Person.vue'exportdefault{name:'App',components:{Person}}</script>修改为<script>//impo......
  • [ABC345F] Many Lamps 题解
    题意:给定一个\(n\)个点\(m\)条边的无向图,每个点的初始颜色为\(0\)。一次操作是将一条边的两个端点的颜色翻转。求是否能通过若干次操作使得最终有\(k\)个颜色为\(1\)的点。首先考虑什么情况下无解。会发现每一次操作,颜色为\(1\)的点的数量变化一定是\([0,+2,-2]\)......
  • CMakeLists.txt基本语法及使用
    1、cmake的说明cmake是一种高级编译配置工具当多个人用不同的语言或者编译器开发一个项目,最终要输出一个可执行文件或者共享库(dll,so等等)这时候便需要用到cmake。CMakeList.txt中指令不区分大小写。CMakeList.txt中的参数和变量是区分大小写,名称只能用字母,数字,下划线,破折号。......
  • 编译器有关的Makefile语法
    在Makefile中,与编译器相关的语法通常用于定义编译规则和链接规则,以及设置编译器选项等。编译器相关的Makefile语法定义变量CFLAGS=-Wall-O2编译规则%.o:%.c$(CC)$(CFLAGS)-c$<-o$@链接规则program:file1.ofile2.o$(CC)$^-o$@......
  • Makefile学习(二)
    参看文档:《跟我一起写Makefile》Makefile中常用的自动化变量:$@:表示规则中的目标文件名。$<:表示规则中的第一个依赖文件名。$^:表示规则中的所有依赖文件列表,以空格分隔并去重。$?:表示规则中所有比目标文件更新的依赖文件列表。$*:表示不包括扩展名的目标文件名。$(@D):表示......
  • Makefile学习(一)
    参看文档:《跟我一起写Makefile》Makefile的基本规则:target...:prerequisites...command......target也就是一个目标文件,可以是ObjectFile,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。prerequisites......
  • vim,gcc,gdb与Makefile的使用
    一、Linux编辑器-vim使用1.vim的基本概念vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下(1)正常/普通/命令模式(Normalmode)控制屏幕光标的移动,字符、字或行的删除,移动复制......