首页 > 其他分享 >洛谷P10693

洛谷P10693

时间:2024-07-22 13:09:02浏览次数:14  
标签:11 心仪 le 洛谷 P10693 位置 部分

洛谷P10693

好奇怪的题目编号

题面

\(n\)个人,\(2n\)个座位,每个人都有心仪的座位,如\(i\)心仪的座位为\(a_i\)(可重复),设计师设计让他们坐在自己编号的位置上,即\(i\)做到\(i\),每个人只可以做\(a_i\)或\(i\),最多多少个人坐到心仪的座位。

思路提取

input
11
2 13 4 5 3 7 9 9 11 11 12
output
9


以人造数据为例。
首先我们让\(i\)\(\to\)\(a_i\)连边,整个分三种情况(对应图中三部分)。

  • 第一部分:\(i\)坐到了\(a_i\)(\(a_i\)\(\le\)\(n\))这个位置,那么\(a_i\)就没有地方坐了,他只能坐到他心仪的位置,也就是\(a_{a_i}\)(\(a_{a_i}\)\(\le\)\(n\)),以此类推,如果最后一个人\(k\)心仪的位置是\(i\),也就是\(a_k=i,\)也就是他坐回了\(i\)这个位置,也就是他又连向了\(i\),也就是形成了一个环,那么环上的所有人都可以做到心仪的位置上去,且最终把环上所有人原来的位置(即设计师设计的位置)都占满了,不会影响到环外的人,所有环都是如此,环的大小均可加入答案中。

  • 第二部分:注意到第一部分有两个细节\(a_i\)\(\le\)\(n\)和\(a_{a_i}\)\(\le\)\(n\),那么如果大于了呢?那就连不下去了,就会出现链的情况,链中的所有人也都可以坐到心仪的位置,链的长度也都可加入。

  • 第三部分:前两部分其实都有一个潜在的前提,就是所有人心仪的位置都不重复,那如果重复了呢?就会变成第三部分——有向树,其中这个“向”都是冲着根节点的。因为每个人只有一个心仪的位置,所以出度只能为\(1\),如果不是统一方向,就会有点出度为\(2\)不符合要求,而如果都冲子节点,根节点就有可能不符合要求。第三部分就注定有人坐不到心仪的位置,那么要取最大的,想到第二部分,我们发现最大的其实就是最长链,因为一条链上的点一定是可以都满足的(让他们顺着坐即可,最后一定是连到了\(>n\)的位置才停的)。可以发现第二部分其实是第三部分的特殊情况。

代码思路

标签:11,心仪,le,洛谷,P10693,位置,部分
From: https://www.cnblogs.com/wmmdbk/p/18315807

相关文章

  • 洛谷算法题
    目录数字反转迪杰斯特拉算法背包问题字符串排序P1192台阶问题P1111修复公路炸铁路问题计数问题......
  • 洛谷P1331 海战
    一、题目题目背景在峰会期间,武装部队得处于高度戒备。警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机。此外,巡洋船只和舰队将被派去保护海岸线。不幸的是,因为种种原因,国防海军部仅有很少的几位军官能指挥大型海战。因此,他们培养了一些新海军指挥官。军官们......
  • 2024 洛谷月赛(柒)
    月赛GGrun%%%T1在相思树下I签到题QWQ,找规律易得。证明未知每次一定会删掉一半的数,所以第\(i\)次操作都会提供一个\(1<<i-1\)的贡献。这个贡献就是下一次会往后跳多少个位置。假如一开始确定留下的是第一个,那删偶数不会有影响,而删奇数需要往后跳。code#include<bit......
  • 洛谷 求m区间内的最小值
    原题p1440题目描述一个含有 ......
  • 洛谷 P1162 填涂颜色题解
    题目链接填涂颜色题目描述由数字\(0\)组成的方阵中,有一任意形状的由数字\(1\)构成的闭合圈。现要求把闭合圈内的所有空间都填写成\(2\)。例如:\(6\times6\)的方阵(\(n=6\)),涂色前和涂色后的方阵如下:如果从某个\(0\)出发,只向上下左右\(4\)个方向移动且仅经过其他\(0\)......
  • 洛谷B3626(跳跃机器人)解析
     这道题的网址洛谷B3626请速览一遍原题当然,咱们来进行题面关键信息提取 1.机器人从第1个格子出发;2.设机器人目前所在格子的编号为x,则它能够跳到格子的编号可能是x,x+1或2x,也就是说,新跳到格子的编号,可能是比原来格子编号少1或多1,或是其2倍;3.不允许跳出界,举个简单的例子......
  • 洛谷 T480715 true
    的真实值是,的真是值是,那么的真是值便是。ACCODE:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;intmain(){ inta,b; cin>>a>>b; inttrue_a=a/10,true_b=b*10; inttrue_c=10000-true_a-true_b; cout<<true_a<<''&......
  • 洛谷P1012 拼数 C语言
    这个题可以用字符串去做,接受字符来去计算大小,这里可以用到strcmp函数str1="123"str2="124"strcmp(str1,str2)如果说str1比str2大就会返回大于0的数,一般是1;如果相等返回0,小于返回-1.它是比较这两个字符串的ascll值来比较的,比方说3的ascll值就比4小,那么前面的都相同,那......
  • 洛谷 P5736 【深基7.例2】质数筛 纯代码
    题目描述输入 ......
  • 洛谷 P10716 【MX-X1-T4】「KDOI-05」简单的字符串问题
    洛谷传送门一个\(A\)合法的充要条件为:\(A\)为\(S_{1\simi}\)的一个border;\(A\)在\(S_{1\simi}\)中不重叠地出现\(\gek\)次。建出失配树后,发现合法的\(A\)在树上组成一条某个点\(u\)到根的链,且\(u\)为\(i\)的祖先。因此我们若知道\(u\),答案就是\(d......