学习
实践
活动
专区
工具
TVP
写文章
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    原创 | codeforces 1438D,思路非常非常巧妙的构造题

    我们直观上都会觉得这是一个非常严苛的要求,所以会期望想到一个完美的解法,可以用最少的步骤解开这个问题。 但实际上这个n足够大,足够一些看起来非常笨的方法也能AC。 这里需要用到一个关键性的推论,这个推论非常隐蔽,真的不容易想到。我们假设 ,当n为偶数时,那么无论我们对这n个元素如何操作,这个异或得到的k保持不变。 这个结论是从哪里来的? 其实非常简单,我们只需要抛弃掉最后一个元素,把之前的n-1个元素按照上面n为奇数时的操作全部操作相等即可。这样一番操作之后,数组会变成这样[a,a,a,a...a,b]。 讲道理把算法讲出来之后非常简单,几乎没有难度,但是如果让我们自己思考,会变得非常难,我们很难从当中整理出思绪来。

    34120

    【PAT乙级】完美数列

    weixin_42449444/article/details/84918152 题目描述: 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。 输出描述: 在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。 输入样例: 10 8 2 3 20 4 5 1 6 7 8 9 输出样例: 8 解题思路: 将输入的数组进行升序排列,用ans看来记录最长的完美数列长度,当最大值M和最小值m满足M<=m*p时就说明这是一个完美数列 ; i++) { cin >> a[i]; } sort(a,a+n); //对数组进行升序排序 int ans = 1; //用来记录最长的完美数列长度

    32120

    扫码关注腾讯云开发者

    领取腾讯云代金券