首页 > 其他分享 >07_07_暑期个人赛3

07_07_暑期个人赛3

时间:2024-07-08 10:22:36浏览次数:20  
标签:Arr 07 arr int dif mid 暑期 个人赛

A. Row

时间:2024-07-08

原题:Codeforces Round 484 (Div. 2) A. Row

题意

给一串字符串有01组成,1边上不能有1,0边上不能没有1,如果满足输出yes

思路

就,一个一个遍历过来,写这题主要因为需要看清题目,注意如果只有一个“0”需要输出no,因为没有1

A. Alice and Bob

时间:2024-07-08

原题:Codeforces Round 201 (Div. 1) A. Alice and Bob

题意

给一个正整数序列 \(Arr\) ,每次AB需要取其中的两个数字,使得 \(|x_i-x_j|\notin Arr\) ,然后加入其中,输出赢家

思路

一开始以为是看范围内的没被使用过的整数个数,然后发现在2的时候会出问题

当时完全没有思路,所以用上了一直没用过的对拍器

发现是看范围内gcd的公倍数的个数,调了许久才发现。。。

D. Ehab the Xorcist

时间:2024-07-08

原题:Codeforces Round 628 (Div. 2) D. Ehab the Xorcist

题意

给两个数 \(u\) 和 \(v\) ,需要求一个最短数组\(Arr\),使所有的 \(x\) 相加等于 \(v\) ,异或起来等于 \(u\) ,\(x \in Arr\)

思路

首先尝试几次,发现最短数组的长度要么是2要么是3,然后寻找导致不同的原因

发现的做题思路是先获取 \(dif=v-u\) ,先将 \(dif\) 除2(除不了2说明不行)

所以最短数组要么是3,就是 \(u\) 本身和两个 \(dif/2\)

要么是2,就是 \(dif/2\) 的所有1位置在\(u\)的对应位置上都为0,那么答案就是 \(u+dif/2\) 和 \(dif/2\)

我觉得这题本质上是考对位数处理的代码能力,和一些对数字的敏感度

代码

int u, v;
int difdig[65];
int udig[65];
void solve() {
    cin >> u >> v;
	
    if (u == 0 && v == 0) {
        cout << 0 << endl;
        return;
    }

    if (u == v) {
        cout << 1 << endl << u << endl;
        return;
    }
    if (u > v || (v - u) % 2 == 1) {
        cout << -1 << endl;
        return;
    }
    
	//tdif和tu临时记录,用于后面输出答案
    int dif = (v - u) / 2;
    int tdif = dif / 2, tu = u;
    int index = 0;//index指向二进制的当前位置
	//先将dif的所有位数存好
    while (dif) {
        if (dif % 2)difdig[index] = 1;
        else difdig[index] = 0;
        index++;
        dif /= 2;
    }
	//再将u的所有位数存好
    index = 0;
    while (u) {
        if (u % 2)udig[index] = 1;
        else udig[index] = 0;
        index++;
        u /= 2;
    }
    //对比,如果有重就输出
    for (int i = 0; i < 65; i++) {
        if (difdig[i] == 1 && udig[i] == 1) {
            cout << 3 << endl << tu << " " << tdif  << " " << tdif  << endl;
            return;
        }
    }
    cout << 2 << endl << tu + tdif  << " " << tdif  << endl;

}

C. Match Points

时间:2024-07-08

原题:Educational Codeforces Round 64 (Rated for Div. 2) C. Match Points

题意

给正整数序列 \(Arr\) ,数字 \(z\) ,每次选两个数使差值 \(dif \ge z\) ,问最多几组数

思路

本题需要理解的较为透彻,对数字的把握比较清晰才行

首先排序是一定的,有几种思路一般,第一种是相邻的数相加,但是是错的

第二种是第一种的延伸,双指针从前往后,但是我会超时。。。

第三种二分,从第一位和二分的位置开始往后一一比对

但是当时对如何二分没有思路,现在明白了。。

就是说,假定有20个数字,此时mid=15,那么如果1到5能跟15到19完全匹配成功

说明mid大了,如果mid=10,但是在第i=8,j=18时不匹配,说明mid小了

简单理解就是这样

代码

/* 1与n-pos+1匹配,pos表示中间的起始位置 */
bool check(int pos) {
    for (int i = 0; i < pos; i++) {
        if (arr[n - pos + i] - arr[i] >= z)
            continue;
        return false;
    }
    return true;
}


void solve() {
    cin >> n >> z;
    rep(ii, 0, n) {
        cin >> arr[ii];
    }
    sort(arr, arr + n);
    int ans = 0;
    int l = 0, r = n - 1;
    while (l <= r) {
        int mid = l + r >> 1;
        //如果能匹配,将中心往右
        if (check(mid)) {
            l = mid + 1;
            ans = mid;
        }
        else {
            r = mid - 1;
        }
    }
    //注意有时候mid会较大,需要判断范围
    //因为答案其实是max(n-mid,mid-0) 这里的ans只是记录的mid
    cout << (ans > n / 2 ? n / 2 : ans) << endl;
}

标签:Arr,07,arr,int,dif,mid,暑期,个人赛
From: https://www.cnblogs.com/lulaalu/p/18289393

相关文章

  • 【2024-07-06】连岳摘抄
    23:59梅雨霁,暑风和。高柳乱蝉多。小园台榭远池波。鱼戏动新荷。薄纱厨,轻羽扇。枕冷簟凉深院。此时情绪此时天。无事小神仙。                                               ......
  • 【2024-07-05】需要的钱
    20:00她勇敢地直视着自己的责任,同时发现责任还是一个好伙伴,每当我们坦然面对它的时候,总是会发现它是我们的朋友。                                                 ——......
  • 【2024-07-07】连岳摘抄
    23:59夏天的早晨真舒服。空气很凉爽,草上还挂着露水(蜘蛛网上也挂着露水),写大字张,读古文一篇。夏天的早晨真舒服。                                                 ——汪......
  • 云动态摘要 2024-07-07
    给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。最新优惠与活动数据库上云优选阿里云 2024-07-04RDS、PolarDB、Redis、MongoDB全系产品新用户低至首年6折起![免费体验]智能助手ChatBI上线腾讯云 2024-07-02基于混元大模型打造,可通过对话方式生成可视化图表......
  • 大一暑期记录(1)
    在暑假开始的第一周我阅读了王建民老师推荐的书籍《大道至简:软件工程实践者的思想》的前五章,其中第一章通过引用愚公移山这一故事讲解了编程的精义鼓舞了我这个编程菜鸟的内心,这一张内容较为易懂所以看得很快,但从第二章就开始涉及团队的协作与管理以及一些专业术语,这让这本书的理......
  • 2024-07-07 如何把ipad当作windows副屏使用 ==》 通过软件dute display和数据线连接
    windows:进入dutedisplay官网https://www.duetdisplay.com/zh#download,下载并安装ipad:在苹果应用商店搜索dutedisplay,选中并下载 注意:你需要注册一个dutedisplay账号,才能登录该软件,它是付费的,so,我看到付费我就放弃了。如果,你给钱了,那么,接下来我也不知道对不对,你用ipad充电线......
  • 最小步数模型——AcWing 1107. 魔板
    最小步数模型定义最小步数模型通常是指在某种约束条件下,寻找从初始状态到目标状态所需的最少操作或移动次数的问题。这类问题广泛存在于算法、图论、动态规划、组合优化等领域。具体来说,它涉及确定一个序列或路径,使得按照特定规则执行一系列步骤后,能够从起始位置或状态转换到......
  • P1093 [NOIP2007 普及组] 奖学金【排序】
    [NOIP2007普及组]奖学金题目背景NOIP2007普及组T1题目描述某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前555名学生发奖学金。期末,每个学生都......
  • 07浅谈大语言模型可调节参数tempreture
    浅谈temperature什么是temperature?temperature是大预言模型生成文本时常用的两个重要参数。它的作用体现在控制模型输出的确定性和多样性:控制确定性:temperature参数可以控制模型生成文本的确定性,大部分模型中temperature取值范围为(0-1]。接近0时,模型倾向于选择概率最......
  • 基于VUE框架的旅游平台 毕业设计-附源码82070
    摘 要改革开放以来,我国的旅游业有了非常迅速的发展,但是比较而言,我国国内旅游业发展的广度深度都远远不能适应经济发展和人民生活水平提高的需要。随着市场经济的发展和人民收入水平的进一步提高,人民对旅游消费的需求将进一步上升,国内旅游业在国民经济中的地位和作用越来越......