首页 > 其他分享 >Educational Codeforces Round 169(A-D)

Educational Codeforces Round 169(A-D)

时间:2024-09-03 19:53:55浏览次数:13  
标签:二分 Educational 鲍勃 传送门 城市 房间 Codeforces 爱丽丝 169

A. Closest Point

        给你一组点。你必须在这个集合中加入一个整数的点,使它与集合中现有的每一个点不同,并且它成为与集合中每一个点**最近的点。这可能吗?(输入yes or no)

        一道思路题,简单思考可以发现,如果数字超过两个,那么这题答案就是NO。当两个数字的时候,也要考虑中间有没有一个不同的数。

B. Game with Doors

题目描述

        有 100个房间排成一排,它们之间有 99扇门; i扇门连接着 i和 i+1 两个房间。每扇门既可以上锁,也可以不上锁。最初,所有的门都没有上锁。

        如果房间 x 和房间 y 之间的所有门都没有上锁,我们就说房间 x可以从房间 y到达。

  • 爱丽丝在 [l,r][l,r] 段的某个房间里;
  • 鲍勃位于线段 [L,R][L,R] 中的某个房间;
  • 爱丽丝和鲍勃在不同的房间。

        但是,你不知道他们具体在哪个房间。

        你不想让爱丽丝和鲍勃接触到对方,所以你要锁上一些门来防止他们接触到对方。无论爱丽丝和鲍勃在给定段落中的起始位置如何,要使他们不能相遇,你必须锁上的门的最小数目是多少?

思路分析

        一道模拟题,可以通过分类查看所有可能的情况。分类完之后,这道题就很简单了。

C. Splitting Items

题目描述

        爱丽丝和鲍勃有 n件物品想平分,于是他们决定玩一个游戏。所有物品都有成本, i /th物品的成本是 ai 。玩家从爱丽丝开始轮流移动。

        在每个回合中,玩家从剩下的物品中选择一个并拿走。游戏一直进行到没有物品为止。

        假设 A是爱丽丝拿走物品的总成本, B 是鲍勃拿走物品的总成本。这样,游戏的得分就等于 A−B。

        爱丽丝希望分数最大化,而鲍勃希望分数最小化。爱丽丝和鲍勃都将以最优方式进行博弈。

        但游戏将在明天进行,所以今天鲍勃可以稍微修改一下成本。他可以将几个(可能一个也没有,也可能全部)项目的成本 ai 增加一个整数值(可能每个项目增加相同的值,也可能增加不同的值)。但是,增加的总金额必须小于或等于 k。否则,爱丽丝可能会怀疑。请注意,鲍勃不能减少成本,只能增加成本。

        鲍勃可能获得的最低分数是多少?

分析

        最优方式的博弈就是每次两个人都选择剩下物品中,最贵的一个。所以物品两个一组,每组的价格差就是这一组的得分。为了使得分数差最小,bob需要把一组内的差尽可能减小。所以只要统计每一组的得分差(去掉可能爱丽丝拿了bob没拿的最后一组)。让这个分差减掉k并且与0取最大值即可。

D. Colored Portals

题目描述

        在一条直线上有 n 座城市。这些城市的编号从 1到 n。

        传送门用于在城市之间移动。传送门有 4 种颜色:蓝色、绿色、红色和黄色。每个城市都有两种不同颜色的传送门。如果城市 i 和城市 j 的传送门颜色相同,则可以在这两个城市之间移动(例如,可以在 "蓝-红 "城市和 "蓝-绿 "城市之间移动)。这种移动需要花费 |i−j| 枚金币。

        你的任务是回答 q个独立的问题:计算从城市 x 移动到城市 y 的最小成本。

分析

        先从问题规模看起,n^2明显超时,所以不可能利用图论中的dijistla定理等做题。

        还是先从假设距离开始思考做题,很简单就可以发现,大部分的组合都是可以直接传送的,每个城市只有一个组合是不能直接传送到达的。但是,假若有一个中转站,那么就可以直接到达。并且简单分析可以得到,这个中转站一定是6组传送门中,和x,y城市都不相同的传送门。

        如果这个中转站在x,y之间。那么结果还是y-x

        否则,我们就要比对x左边和y右边的城市中哪个中转站最近。这是一个查找问题;

但是分析可以发现,最坏的情况下,直接挨个查找会超时了,那么这时候就要使用二分查找。但是直接二分查找肯定是不行的。传送门元素是不可以二分的,那么这时候就要换个角度来思考了,能二分的只可能是城市位置,所以不能简单的就这样存储传送门,应该是每个传送门的城市编号存储起来。这样就能够得到一个可以二分位置查找的数组(6个)。

反思

        1.从问题规模可以排除一些错误思路

        2.二分查找时,如果发现元素是不能二分的,那么要考虑重新处理元素的记录方式,使其能够二分。

标签:二分,Educational,鲍勃,传送门,城市,房间,Codeforces,爱丽丝,169
From: https://blog.csdn.net/Wjx_0825/article/details/141869846

相关文章

  • Codeforces Round 966 (Div. 3)
    ab略...C:map嵌套水过去的,复杂度\(nlog^2n\),感觉不如正解#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#definepiipair<int,int>#definemkpmake_pair#definefirfirst#definesecsecond#definepbpush_backconstintmaxn=2e5+100;......
  • Codeforces Round 970 (Div. 3)(VP)
    A.Sakurako'sExam总结:一看n<=20,直接暴力+剪枝即可inlinevoidsolve(){ inta,b; cin>>a>>b; vector<int>d; d.reserve(a+b); while(a--){ d.push_back(1); } while(b--){ d.push_back(2); } autodfs=[&](auto&......
  • Codeforces Round 968 (Div. 2)
    vp的,老规矩跳过abC:根据题意我们知道三个不一样的字母连续放一定可以,然后观察样例发现好像把两个不同的字母轮流放也可以。进一步猜测(瞎猜的)发现这个好像只要把不同的挨个放进去就行了(本来以为可能要按数量排序但是似乎根本不用),最后剩下的全放一起也没事。然后就过了。#includ......
  • 169.力扣-多数元素
    给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊n/2⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:nums=[3,2,3]输出:3示例 2:输入:nums=[2,2,1,1,1,2,2]输出:2方法一:使用排序......
  • Codeforces Round 970 div3
    CodeforcesRound970div3错过的一场比赛,第二天早晨VP,题目的通过率还挺奇怪A.Sakurako'sExamhttps://codeforces.com/contest/2008/problem/A题意:有a个1和b个2的数组,在1和2前面增添加减号,判断是否能让结果为0思路:1个2需要2个1进行填补,不如先让2自己进行消去,如......
  • NetSarang Xshell(SSH客户端软件) v7.0.0169 中文绿色版
    概述NetSarangXshell破解版是一款免费SSH客户端软件的Linux远程监控工具.Xshell中文版,轻松管理远程主机服务器,会话管理器,支持多选项卡管理主机.Xftp7最新版以及Xshell7最新版支持远程协议Telnet,Rlogin,SSH/SSHPKCS#11,SFTP,Serial,具有Unicode编码支持,动态端口转发,自定......
  • 169、和贾至舍人《早朝大明宫》之作
    169、和贾至舍人《早朝大明宫》之作唐●岑参鸡鸣紫陌曙光寒,莺啭皇州春色阑。金阙晓钟开万户,玉阶仙仗拥千官。花迎剑佩星初落,柳拂旌旗露未干。独有凤凰池上客,阳春一曲和皆难。 【现代诗意译】和贾至舍人《早朝大明宫》之作 雄鸡开始啼鸣,京城大街映照在一片清寒的曙光......
  • Codeforces Round 969 Div.2+Div.1
    A.Dora'sSet注意到任意两个偶数的\(\gcd\)都大于\(1\),因此选择的三个数中至多一个偶数,而注意到相邻的奇数一定互质,因此每次选两个奇数一个偶数,答案=奇数的个数÷2点击查看代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineullunsigned......
  • codeforces做题记录(1924B)& 回顾线段树
    1924B.SpaceHarbour题意:n个点排成一行,其中某些点上面建有港湾,港湾有一个权值,对每个点我们定义点的权值为“左边(包括自己)第一个港湾上的权值\(\times\)到右边(包括自己)第一个港湾的距离”(保证在一开始1号和n号点上都有港湾)。有q次操作:操作1给定x和v,表示在x点上建立权值为v的......
  • Codeforces Round 969 (Div. 2)
    ab题没啥好说的,b题一开始看题错成线段树了,后面发现维护最大值就过了(我就说b怎么会有线段树)。。。C:DoraandC++卡的我死死的,好久没卡c了,数论果然是最短板。。。我有两个推论,但是一个都不会用:1.翡蜀定理。(但是这题只有正数)(处理两个数的情况)2.断环为链。(但是我只会n方,即以每个......