首页 > 其他分享 >2024省选联测10

2024省选联测10

时间:2024-01-13 14:55:10浏览次数:26  
标签:10 底边 省选 相交 2024 int 联测 三角形

A. 小幸运

题目描述

给出平面上 \(n\) 个点的坐标,以及整数 \(W,H\)。以每个点为底边中点构造底边长度相等且底边与一坐标轴平行的等腰直角三角形,满足三角形在 \((0,0),(W,0),(W,H),(0,H)\) 四点构成的矩形内部且三角形内部区域互不重叠。求每个三角形底边长度的最大值。

把所有坐标扩大两倍后答案只可能是整数。二分答案。每个点拆成 \(4\) 个小三角形,需要选择两个相邻的三角形。判断这 \(4n\) 个三角形是否相交,做 2-SAT。

如果两个三角形有边相交,那么这两个三角形相交。

#define id(x, y) x + y * n
#define fid(x, y) x + y * n + 4 * n

/*
t(): 是否在边界内。
f(): 是否相交
*/

bool check(int d)
{
    tot = top = cnt = pos = 0;
    for(int i = 1; i <= 8 * n; ++ i) dfn[i] = low[i] = head[i] = 0;

    for(int i = 1; i <= n; ++ i)
    {
        add(id(i, 0), fid(i, 3)); add(fid(i, 0), id(i, 3));
        add(id(i, 3), fid(i, 0)); add(fid(i, 3), id(i, 0));
        add(id(i, 1), fid(i, 2)); add(fid(i, 1), id(i, 2));
        add(id(i, 2), fid(i, 1)); add(fid(i, 2), id(i, 1));
        for(int j = 0; j <= 3; ++ j) if(!t(i, j, d)) add(id(i, j), fid(i, j));
    }

    for(int i = 1; i < n; ++ i)
        for(int a = 0; a <= 3; ++ a)
            for(int j = i + 1; j <= n; ++ j)
                for(int b = 0; b <= 3; ++ b)
                    if(f(i, a, j, b, d)) add(id(i, a), fid(j, b)), add(id(j, b), fid(i, a));
    
    for(int i = 1; i <= n * 8; ++ i) if(!dfn[i]) tarjan(i);
    for(int i = 1; i <= n * 4; ++ i) if(sd[i] == sd[i + n * 4]) return 0;
    return 1;
}

B. 山河入梦来

题目描述

给定一个 \(n\times n\) 的矩阵,第 \(i\) 行的第 \(L_i\) 到 \(R_i\) 列为 \(1\),其余为 \(0\)。求行列式。\(n\le 10^5\)

求行列式可以转换成上三角矩阵。

对于 \(L_i\) 相同的一些值,我们会保留 \(R_i\) 最小的行。使用可并堆维护。

void work()
{
    scanf("%d", &n); ans = 1;
    for(int i = 1; i <= n; ++ i) rt[i] = 0, p[i] = r[i] = i;

    for(int i = 1, l, r; i <= n; ++ i)
        scanf("%d%d", &l, &r), t[i] = {r, 1, 0, 0}, rt[l] = merge(rt[l], i);

    // p[i] 右端点为 i 的行数
    // r[i] 第 i 行的右端点
    for(int i = 1; i <= n; ++ i)
    {
        if(!rt[i]) {ans = 0; break;}
        
        int x = rt[i], w = t[rt[i]].x, y;
        if(p[x] != i)
            p[y = r[i]] = p[x], r[p[x] = i] = x, r[p[y]] = y, ans *= -1;
        rt[i] = merge(t[rt[i]].ls, t[rt[i]].rs);
        if(rt[i] && t[rt[i]].x == w) {ans = 0; break;}
        rt[w + 1] = merge(rt[w + 1], rt[i]);
    }

    if(ans == 0) printf("tie\n");
    if(ans > 0) printf("pp\n");
    if(ans < 0) printf("xx\n");
}

C. 遇见

放假了,先咕。

标签:10,底边,省选,相交,2024,int,联测,三角形
From: https://www.cnblogs.com/Estelle-N/p/17962353

相关文章

  • 2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示
    2024-01-03:用go语言,给你两个长度为n下标从0开始的整数数组cost和time,分别表示给n堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠,一位需要付费的油漆匠,刷第i堵墙需要花费time[i]单位的时间,开销为cost[i]单位的钱。一位免费的油漆匠,刷任意一堵墙的时间为1......
  • 2023-2024年人工智能最佳工具(3)
    随着人工智能领域的迅速进展,我们目睹了越来越多令人惊叹和新奇的应用程序的诞生。这些应用程序在商业和个人领域都具有广泛的应用范围。我们使用这些人工智能工具的主要原因可以概括为一个共同点:人工智能已经发展到能够帮助人类完成繁重的、重复的任务,并减少人为错误,从而节约运营......
  • 迈向2024:医疗机器人的市场前景与技术革新
    原创|文BFT机器人医疗机器人技术正以前所未有的速度在主流医学领域取得卓越进展,新应用、新技术不断涌现,使得该领域在过去一年中取得了令人惊叹的增长。然而,这仅仅是冰山一角,未来的发展空间仍然广阔无垠。展望2024年,医疗机器人领域将有几个潜力巨大的机会正在等待发掘。PART1医......
  • 2024-01-13 antd的tabel组件业务问题之勾选了table中的一项,然后弹出弹窗,接着关闭弹窗,
    如图:问题:table显示的勾选状态的数据无法被改变。原因:你没有改变到勾选数据,你只是在勾选时把选中的值赋值给了一个变量,然后以为自己清空了变量,以为自然而然地就取消勾选状态了,实际上就是你代码没写全!解决方案:原来写法:rowSelection:{onChange:handleChange,},你写......
  • 2024.1.7做题纪要
    P4093[HEOI2016/TJOI2016]序列不会写,褐的题解。设\(dp_i\)表示以\(i\)结尾的最长子序列,维护就行了。教员#include<bits/stdc++.h>intN,M;intnumber[110000],min[110000],max[110000];classBinary_Indexed_Tree{#definelowbit(x)(x&(-x))publ......
  • QT开发 2024最新版本优雅的使用vscode开发QT
     ⚔️▬▬▬▬▬▶VS开发QT◀▬▬▬▬▬⚔️ ⚔️先看效果    ⚔️编辑环境变量如图添加环境变量!!!东西全在QT的安装目录!!!找不到的按照我下面的教程再装一次!!! https://blog.csdn.net/lllmeimei/article/details/135502781?spm=1001.2014.3001.5501  ⚔️vscode插件下......
  • 2024-01-13 Can't perform a React state update on an unmounted component. This i
    react+antd业务代码报错: Can'tperformaReactstateupdateonanunmountedcomponent.Thisisano-op,butitindicatesamemoryleakinyourapplication.Tofix,cancelallsubscriptionsandasynchronoustasksinauseEffectcleanupfunction.无法对未安装的......
  • 2024-01-12 训练总结
    孤注一掷没成功。T1宝藏[NOIP2017提高组]宝藏题目背景NOIP2017D2T2题目描述参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了\(n\)个深埋在地下的宝藏屋,也给出了这\(n\)个宝藏屋之间可供开发的\(m\)条道路和它们的长度。小明决心亲自前往挖掘所有宝藏屋中的......
  • 【愚公系列】2024年01月 WPF控件专题 Calendar控件详解
    ......
  • 2024.1 做题记录
    P2423[HEOI2012]朋友圈考虑\(a\oplusb\bmod2=1\)的限制实际上转化为不同左侧点最多选择两个,因为奇偶性需要不同。暴力枚举左侧的点集,考虑B侧的点,首先需要跟左侧点集任意有边,之后内部还需要是完全图。B侧选定点的最大团这个东西是不好做的,但是我们可以借助边的性质......