zoukankan      html  css  js  c++  java
  • Codeforces Round #379(div 2)

    A、B:=w=

    C:

      题意:

          你需要制作n瓶药水,每一瓶药水需要x秒。

          你现在有m种A魔法,花费b[i],使得每一瓶药水的花费代价降为a[i],只能用一次。

          有K种B魔法,花费d[i],使得瞬间制作好c[i]瓶药水,只能用一次。

          你最多花费s的魔法值

          问你最快完成要多少秒。

      分析:题目所给的B魔法都是递增的,容易想到枚举用哪个A魔法,二分对应的B魔法,因为在MP充足的情况下,减少的药水越多对ans越有利

    D:

      题意:一个无限大的平面,给你一个King的位置,再给你其他棋子的位置,问你这个King是不是正在被人将军。一共三种棋子R B Q,R只能够直走,B只能斜走,Q能斜走也能直走,但它们都无法跳子

      分析:记录下King的八个方向离其最近的点,根据属性判断是否被将军。

    E:

      题意:给你一棵树,每个树上的节点要么是1,要么是0,每次操作你可以指定任何一个节点,然后使得这个节点周围的同色连通块变色。问你最少花费多少次,使得整个树都是一个颜色。

      分析:首先肯定先缩一波点,然后就成了一颗树,这棵树是黑点、白点相间的。

         如果正好是个链,那么我们可以每次从中间点开始变色,答案就是len/2

         对于一般的树而言,考察树的最长链,其他的树边看作挂在链周围,那么发现我们如果也是每次从中间点开始变色,那么len/2操作后所有的点都成了同一颜色。

           所以ans=树的直径/2

    F:

      题意:bi=(ai&a1)+(ai&a2)+...+(ai&an),ci=(ai|a1)+(ai|a2)+...+(ai|an),n<=2e5,给定数组b和c,求数组a,如果不存在则输出-1

      分析:有一个非常厉害的性质,(a&b)+(a|b)=a+b,所以想到把这些方程加一加,发现可以很简单的定出a数组的值,但是这只是说明a满足每个bi+ci,并不能说明满足每个bi和ci,于是还要判定a是否正确。

           简单的判定是n^2的,TLE

         从每个二进制位考虑,如果a[i]的第j位是1,那么b[i]的第j位就是a1...an每个的第j位的和,c[i]的第j位就是n个1(均不考虑进位)

                   如果a[i]的第j位是0,那么b[i]的第j位就是0,c[i]的第j位就是a1...an每个第j位的和

         很明显我们可以预处理出a1...an每个位置上的数字和。

         判定的复杂度是O(nlogn)   

  • 相关阅读:
    225. 用队列实现栈
    232. 用栈实现队列
    459.重复的子字符串(简单)
    28. 实现 strStr()(简单)
    剑指 Offer 58
    541. 反转字符串 II(简单)
    浏览器渲染页面的过程、重绘、重排以及页面优化
    隐藏一个元素的几种方法
    当我们在浏览器中输入一个URL后,发生了什么?
    Object.create() 和 new Object()、{} 的区别
  • 原文地址:https://www.cnblogs.com/wmrv587/p/6071619.html
Copyright © 2011-2022 走看看