首页 > 其他分享 >P7860 [COCI2015-2016#2] ARTUR

P7860 [COCI2015-2016#2] ARTUR

时间:2024-06-05 16:49:26浏览次数:13  
标签:node x1 P7860 int COCI2015 sk y1 x2 2016

原题链接

教训

1.计算几何,能用乘法就不用除法
2.计算几何,开longlong
3.计算几何,注意直线的特殊性

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node
{
    ll x1,y1,x2,y2;
}sk[5005];
int check(node a,node b)
{
    if(a.x2<b.x1||a.x1>b.x2) return 0;

    if(a.x1==a.x2)
    {
        ll x=a.x1;
        if(b.x1==b.x2)
        {
            if(min(a.y1,a.y2)<b.y1) return 1;
            else return 2;
        }
        ll ya=min(a.y1,a.y2);

        if(ya*(b.x2-b.x1)<(b.y1*b.x2-b.y2*b.x1+b.y2*x-b.y1*x)) return 1;
        else return 2;
    }
    else if(b.x1==b.x2)
    {
        ll x=b.x1;
        ll yb=min(b.y1,b.y2);

        if(yb*(a.x2-a.x1)<(a.y1*a.x2-a.y2*a.x1+a.y2*x-a.y1*x)) return 2;
        else return 1;
    }

    ll x;
    if(a.x1<b.x1)x=b.x1;
    else x=a.x1;

    ll ya=((a.y1-a.y2)*x-a.y1*a.x2+a.x1*a.y2)*(b.x1-b.x2),yb=((b.y1-b.y2)*x-b.y1*b.x2+b.x1*b.y2)*(a.x1-a.x2);

    if(ya<yb) return 1;
    return 2;
}

vector<int> G[250005];
int in[250005]={0};
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>sk[i].x1>>sk[i].y1>>sk[i].x2>>sk[i].y2;
        if(sk[i].x2<sk[i].x1)
        {
            swap(sk[i].x1,sk[i].x2);
            swap(sk[i].y1,sk[i].y2);
        }
    }

    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            int res=check(sk[i],sk[j]);
            if(res==1)
            {
                G[i].push_back(j);
                in[j]++;
            }
            else if(res==2)
            {
                G[j].push_back(i);
                in[i]++;
            }
        }
    }

    queue<int> q;
    int cnt=0;
    for(int i=1;i<=n;i++) if(!in[i]) q.push(i);
    while(q.size())
    {
        int now=q.front();
        q.pop();
        cout<<now<<" ";
        cnt++;
        for(auto next:G[now])
        {
            in[next]--;
            if(!in[next]) q.push(next);
        }
    }
    return 0;
}

标签:node,x1,P7860,int,COCI2015,sk,y1,x2,2016
From: https://www.cnblogs.com/pure4knowledge/p/18233289

相关文章

  • 南昌航空大学大一下学期java题目集4-6总结性Blog-苏礼顺23201608
    一、前言——总结三次题目集的知识点、题量、难度等情况 关于知识点  这次的三次题目集更加进一步体现了面向对象程序设计的思想方法。主要是之前的三次题目集就只是利用了面向对象三大基础特性中的封装特性,而这三次的题目集增加了继承与多态,这正是面向对象设计的精髓所......
  • Excel 2016数据处理与分析应用教程微课版苏林萍课后习题答案解析
    Excel2016数据处理与分析应用教程(微课版)主 编: 苏林萍ISBN: 9787115510204出版社: 人民邮电出版社上传者: .Twinkle《Excel2016数据处理与分析应用教程(微课版)》是一本非常适合大学生学习Excel2016的教材。书中内容详实,讲解透彻,对于初学者来说非常友好。通过学习这本......
  • P3349 [ZJOI2016] 小星星
    P3349[ZJOI2016]小星星树形dp+子集反演有一张图和一棵树,点数都为\(n\),给树上的每个点一个映射\(a_i\),每个\(a_i\)不同,\(a_i\in[1,n]\)。要求对于树上所有\((u,v)\),都有\((a_u,a_v)\)在图上。求映射方案数。看到\(n\)的范围,可以想到树形状压dp。设\(F_{i,j,S}\)......
  • WooYun-2016-199433
    PhpmyadminScripts/setup.phpDeserializationVulnerability(WooYun-2016-199433)Affectedversion:2.xSetupcdvulhub/phpmyadmin/WooYun-2016-199433docker-composeup-dVisithttp://10.10.10.8:8080andyouwillseethephpmyadminhomepage.Becausetherei......
  • ACCESS2016 所有人的成绩增加2分
    打开Access2016,然后打开包含成绩数据的数据库。找到包含成绩数据的表。通常,这个表会有一个字段用来存储学生的分数。打开“查询”视图。你可以通过点击“创建”选项卡,然后选择“查询设计”来创建一个新的查询。在查询设计视图中,将成绩表添加到查询中。可以通过点击“......
  • P3270 [JLOI2016] 成绩比较
    记\(a_i=N-R_i,n=N-1\)。先不考虑有多少人被碾压,计算出符合排名限制的方案数。枚举每门课和B神在每门课中的得分,选出\(a_i\)个人得分小于等于他,即:\[\prod\limits_{i=1}^m\dbinom{n}{a_i}\sum\limits_{j=1}^{U_i}j^{a_i}(U_i-j)^{n-a_i}\]设\(s(x)=\sum\limits_{j=1}^{......
  • ECMA 2016(ES7)新特性
    本章内容:Array.prototype.includes():判断一个数组是否包含一个指定的值,如果包含则返回true,否则返回false。幂运算符**:a**b指数运算符,它与Math.pow(a,b)相同。Array.prototype.includes()includes()函数用来判断一个数组是否包含一个指定的值,如果包含则返回true,否......
  • CVE-2016-3088
    ActiveMQ任意文件写入漏洞(CVE-2016-3088)环境搭建cdvulhub/activemq/CVE-2016-3088docker-composebuilddocker-composeup-d环境监听61616端口和8161端口,其中8161为web控制台端口,本漏洞就出现在web控制台中。访问http://10.10.10.8:8161/看到web页面,说明环境已成功运行。......
  • P5999 [CEOI2016] kangaroo
    题目大意求出有多少种排列\(p\)满足对于任意\(i\in(1,n)\)有\(p_i\)两侧的值同时大于或小于\(p_i\)。规定\(p_1=s,p_n=t\)。\(2\leqn\leq2\times10^3,1\leqs,t\leqn\)思路首先能看出是动态规划。但是如果纯区间动规的话不太好转移,因为无法使得两个区间拼接的部分......
  • [SDOI2016] 数字配对 题解
    发现题目中描述的配对条件可以理解为:\(pc_i-pc_j=1\)且\(a_i\bmoda_j=0\),其中\(pc_i\)表示\(a_i\)的质因数个数。自然想到以\(pc\)奇偶性建立二分图,可以配对的点间连一条边。先不考虑费用,三种边为:\((s,i,b_i)\),其中\(pc_i\bmod2=1\)。\((i,t,b_i)\),其中\(pc_i\bm......