首页 > 其他分享 >2.17 闲话 & solution『登陆宇宙/带着你所幻想的所有/灵魂加速失控 』

2.17 闲话 & solution『登陆宇宙/带着你所幻想的所有/灵魂加速失控 』

时间:2024-02-17 22:11:34浏览次数:33  
标签:连通 text 城市 solution Alice 失控 2.17 Bob 分量

拜谢了,您别 Fake 了,您当年自愿退出国集我是极力反对的,我知道您从小学一年级开始打 NOI 并且直接获得了金牌分数线上的好成绩,肆意 AK 了好几年 NOI,直到近年才意识到自己太过强大只好肆意控分,NOIP2023 的题目您当时拿到的一瞬间用\(\frac{2}{3}s\)就全部想到了正解,并在\(\frac{3}{2}s\)内打了出来,为了控分只您好输出了大量不可见字符,拜谢了您如此强大

似乎最近歌词放的太多了,放个时崎狂三

\(\text T1\)

人们为了增加文档的美观度,通常会将文档中相邻的英文字母与阿拉伯数字之间以一个空格分离。

现有一份文档 \(S\) ,其中可能有字母与数字相邻。你需要给 \(S\) 中所有相邻的字母与数字之间添加一个空格。

保证 \(S\) 的第一个字符与最后一个字符均不为空格。

随便写都能过吧QWQ,是\(\text{getline}\)大胜利呢

一之弹($\text{Aleph}$)
string a;
getline(cin,a);
putchar(a[0]);
for(int i=1;i<a.size();i++){
    if(!isdigit(a[i-1])){
        if(a[i-1]!=' '&&isdigit(a[i])){
            putchar(' ');
        }
    }
    else if(isdigit(a[i-1])){
        if(a[i]!=' '&&!isdigit(a[i])){
            putchar(' ');
        }
    }
    putchar(a[i]);
}
return 0;

\(\text T2\)

Alice 与 Bob 希望玩一个游戏:他们首先在黑板上写下了 \(n\) 个整数 \(a_1, a_2, \cdots, a_n\) 。

然后 Alice 与 Bob 轮流行动,Alice 先手。

当轮到 Alice 行动时,Alice 需要选择黑板上的若干整数 (至少一个) ,并从黑板上擦除这些整数。

当轮到 Bob 行动时,Bob 需要选择黑板上的一个整数,并从黑板上擦除这个数。

当一名玩家行动后,若黑板上所有数均被擦除,游戏终止。

游戏的得分被定义为 Alice 每一轮行动中所有选择的数的和。Alice 希望最大化游戏的得分,Bob 希望最小化游戏的得分。

Alice 与 Bob 均绝顶聪明,他们会以最优的策略行动。你的任务是预测这个游戏的得分。

题解似乎很唐,题解复杂度是\(O(n^2+n \log n+n)\)无法通过此题但是它说复杂度是\(O(n)\)

直接对其排序,然后直接狂加不止即可,下面是我写的题解

二之弹($\text{Bet}$)

首先如果全是正数直接全取就行

如果全是负数就看奇偶性,如果是奇数 Alice 需要取前两个负数,反之需要取第一个负数

如果有正有负直接把正数全取了,然后就很好想了,如果负数个数是奇数就多取\(0\)个负数,反之还是取一个负数

\(\text T3\)

你是 \(\text B\) 学校的一名教师。你有 \(n\) 名学生,编号为 \(1, 2, \cdots, n\) 。在近期的一次测试中,编号为 \(i\) 的学生的得分为 \(a_i\) 。

你需要对学生们的得分抽样调查。一次抽样调查需要选出编号连续的若干名学生,我们称这一次抽样调查是准确的当且仅当选出的这些学生得分的平均数为整数。

你想知道在所有 \(\dfrac {n(n + 1)} 2\) 种选出编号连续的学生的抽样调查方案中,有多少种方案能使这一次抽样调查是准确的

直接枚举平均数,然后用前缀和维护\(∑^r_{i=l}a_i−t\),判断是否为\(0\),接下来用pb_ds自带的 hash 维护方案数即可

三之弹($\text{Gimel}$)
signed a[N],n,s[N],ans;
int Luo=INF,TianYi=-INF;
gp_hash_table<int,int> Hash;
signed main(){
    fire();
    int n;FastI>>n;
    for(int i=1;i<=n;i++){
        FastI>>a[i];
        Luo=min(Luo,a[i]);
        TianYi=max(TianYi,a[i]);
    }
    for(int i=Luo;i<=TianYi;i++){
        Hash.clear();
        for(int j=1;j<=n;j++)
            s[j]=s[j-1]+a[i]-i;
        Hash[0]++;
        for(int j=1;j<=n;j++)
            Hash[s[j]]++;
        for(auto x:Hash){
            int YueZheng=x.second;
            ans+=(YueZheng*(YueZheng-1))/2;
        }
    }
    FastO<<ans;
}

\(\text{T}4\)

B 国是一个拥有 \(n\) 个城市的国家,\(n\) 个城市依次编号为 \(1, 2, \cdots, n\) 。B 国的首脑计划在国内修建 \(m\) 条城市间的单向道路。

如果从一个城市 \(x\) 出发,经过若干条道路能够到达城市 \(y\) ,我们就称 \(x\) 可达 \(y\) 。特殊的,我们认为每个城市都可达它本身。注意:\(x\) 可达 \(y\) 并不一定意味着 \(y\) 可达 \(x\) 。

对于一个城市的集合 \(S\) ,如果 \(S\) 中任意两个城市 \(u, v\) 都满足 \(u\) 可达 \(v\) 且 \(v\) 可达 \(u\) ,那么我们称 \(S\) 是互通的。特殊的,大小为 \(1\) 的集合总是互通的。

如果一个互通的城市集合 \(A\) 满足不存在另一个互通的城市集合 \(B\) 使得 \(A\) 是 \(B\) 的真子集,那么我们称 \(A\) 是一个城市群

可以证明,对于任意的修建 \(m\) 条城市间的道路的方案,总能够将 \(n\) 个城市划分为若干个城市群,满足每个城市恰好属于一个城市群且每个城市群包含至少一个城市。

B 国的首脑要求这 \(n\) 个城市恰好被划分成 \(X\) 个城市群,他还有额外的 \(q\) 个限制 \((a_i, b_i)\) ,要求城市 \(a_i\) 与城市 \(b_i\) 属于同一个城市群。

你需要构造一种修建 \(m\) 条道路的方案满足首脑的要求,或者报告满足要求的方案不存在。

如果存在多种可能的方案,你可以输出任意一种。

注意:对于任意的两个城市 \(u, v\) ,从 \(u\) 到 \(v\) 的道路只能修建至多一条;你不能修建从一个城市到它本身的道路。

题面太长惹,不太想改,下面直接搬了题解呢

四之弹($\text{Gimel}$)

题目中的 “ 城市群 ” 的意思是有向图的强连通分量( 但是解决本题并不需要会求有向图的强连通分量 )

“ 属于同一个强连通分量 ” 是一个等价关系,可以用并查集合并等价类,求出合并完之后每个等价类的\(size\)

我们把这些 \(size\) 升序排序后的序列记作 \(s_1 , s_2 , ⋯ s_k\)

首先如果 \(k < X\) 那么无解


​否则我们把 \(s_X,s_{X+1} , ⋯ s_k\) 对应的等价类合并成一个

对于一个大小为 \(p\) 的强连通分量,如果 \(p = 1\) 那么它内部没有边

否则它内部至少有 \(p\) 条边,至多有 \(p(p−1)\) 条边

对于两个不同的强连通分量 \(A, B\) ,图中要么只有 \(A → B\) 的边,要么只有 \(B → A\) 的边( 否则这两个强连通分量会合并起来 )

于是这两个连通块之间至少有 \(0\) 条边,至多有 \(∣A∣ × ∣B∣\) 条边

把这些 “ 至少 ” 加起来得到边数的下界,把这些 “ 至多 ” 加起来得到上界

判断一下 \(m\) 是否在这个范围内

如果 \(m\) 不在这个范围内那么无解

否则我们就要输出一组对应的构造

构造的时候需要注意两点:

  • 首先是我们钦定需要处于同一强连通分量内的点,应当真的属于同一强连通分量,可以通过造一个环来满足强连通

  • 其次是我们钦定不属于同一强连通分量的点,不能属于同一强连通分量,这句话的意思是说强连通分量之间的边不能成环

    解决办法也很简单:给每个强连通分量任意定一个编号,只从编号小的分量往编号大的分量连边,就不会成环

    时间复杂度应当是亚线性的

    但是如果实现的不好 ( 比如没有及时 break ) 可能会变劣

image

标签:连通,text,城市,solution,Alice,失控,2.17,Bob,分量
From: https://www.cnblogs.com/Vsinger-LuoTianYi/p/18017699

相关文章

  • 2.17《读人月神话》有感
     《人月神话》是一本经典的软件工程著作,作者是弗雷德里克·布鲁克斯。这本书首次出版于1975年,至今仍然对软件开发领域产生深远影响。在阅读这本书之后,我对软件工程的挑战和解决方案有了更深入的理解,并获得了许多启发和思考。 首先,书中强调了软件开发的复杂性。布鲁克斯指出,软......
  • 2024.2.17模拟赛T1题解
    先考虑\(q=(1...n)\)的情况:发现如果设\(divcnt(p)\)表示将\(p\)划分为极小值域连续段的个数,那满足\(divcnt(p)\gem\)的排列都是合法的。那现在要求出有多少个排列符合条件可以先算出长度为\(i\),\(divnct\)为\(1\)的排列个数,这可以用dp解决然后再背包一下,就能求......
  • 2023.2.17 LGJ Round
    A一个字符串,你要选最多的区间出来,满足两两不交,且右边的区间必须是左边区间的严格子串。\(n\le5e5\).注意到答案是\(\sqrtn\)级别的。那么我们设计一个dp,设\(f_{i,j}\)表示\([j,j+i-1]\)这个区间以及右边是否能选出\(i\)个。转移只需要检查大区间减去左端点/右端点......
  • 2.17
    久违的更新Vue2跳转传参//跳转传参//通过查询参数传参//to="/路径?参数名=参数值"//接收//$route.query.参数名//通过动态路由传参://首先要设置动态路由//{//  path:'/ssss/:words'//}//然后配置导航链接//to="/路径/参数值"//接收//$route.params.参......
  • 2.16 闲话 & solution『漆黑的夜中透出了一点点微光/早就应该习惯/忽明忽暗酒阑人散』
    为啥只有我和CuFeO4【数据删除】,别人都没【数据删除】,血亏,下次绝对不【数据删除】了明天有CF,希望能打在写\(\text{NTT}\)惹,但是没有达成写4题呜呜明天有模拟赛唔,首先是朴素\(dp\)骗分,设\(dp_{i,j}\)表示已经取到了\(i\)个,其中取模后结果为\(j\)的方案数,容易有转移\[......
  • Solution Set【2024.2.16】
    A.寄(post)对于点对贡献问题考虑在最近公共祖先处计算答案,称给定的\(m\)个点为关键点,选择的\(k\)个点为选择点。既然我们已经要求了对于每一对关键点和选择点均在其最近公共祖先处计算答案,那么这也就意味着,存在某些节点,其子树中的关键点/选择点不会与其子树内的选择点/关......
  • Solution Set - 咋提玄坛 | 说无可说
    说无可说。Ihavenothingtosay.Mihavasnenionpordiri.J'airienàdire.说无可说Link。我说,我去,暴力dp一次就是\(O(|S|^2)\)的了,直接起飞!题目说,我只要求相似度为\(1\sim8\)的字符串对数,theremustbeareason。我说,原来可以dfs,太神奇啦!但是这要怎么......
  • Solution Set【2024.2.15】
    A.枇杷树考虑从增量的角度计算答案,若我们在构造树\(T_n\)时已经得到了树\(T_x\)和树\(T_y\)的答案\(Ans_x\)和\(Ans_y\),我们考虑如何得出\(Ans_n\)。考虑\(Ans_n\)与\(Ans_x+Ans_y\),发现即为跨越新增的边的所有路径权值之和。其可以表达为:\[f(x,u)\timessi......
  • Solution - Hangar Hurdles
    Link。感谢苏泊尔的题解,一点补充。首先呢,可以处理出中心在每个格子\((x,y)\)上的最大边长\(d_{x,y}\)。这个用一下二维前缀和统计#的个数再简单二分一下就好了,注意不能出界。然后呢我们只能上下左右移动,考虑转化成一个图论问题(?)。所以就直接相邻的格子连边就好了,因为是双......
  • Solution - Holes
    Link。暴力做是\(O(nm)\)的。怎么优化呢?I'venoslightestidea......