首页 > 其他分享 >CF题解

CF题解

时间:2023-04-23 20:11:41浏览次数:40  
标签:cnt int 题解 CF cin 括号 ans

E. Rearrange Brackets 2100 括号树 gq!

https://codeforces.com/contest/1821/problem/E
题解:若我们把序列看作是一个由匹配括号组成的森林,外层括号是内层括号的父亲,则整个正则括号序列的cost可以看作是森林中所有点的深度之和,根节点深度为0,故每次操作可以看作是将某棵树的父节点单独作为一棵树,其子节点作为新的树,即每次操作会使得总cost-(树的大小-1),故我们可以将所有子树大小放入大根堆,贪心地取出最大的k个使得cost最小。

E. Preorder 2100 dsu gq!

https://codeforces.com/contest/1671/problem/E
题解:对于一棵完全二叉树,我们可以通过dp得到一颗树的答案,如果两个子树不能互相转化,则f(u)=2f(v1)f(v2),否则f(u)=f(v1)f(v2),问题关键在于如何判断两字符串是否可以互相转换。我们可以用dsu或映射来解决这个问题。我们可以将每个串归类到其所能转化的最小字典序的集合中,而如果我们得到了v1 v2的最小字典序,则可得到u的最小字典序,比较是否同集合即可。由于每个点至多被遍历n次,故复杂度为n2^n。

D. Maximum AND 1800 math

https://codeforces.com/contest/1721/problem/D
题解:我们想要得到与和最大,显然我们要优先使得高位在每个a[i]xorb[j]上存在。我们从高到低遍历,若确定了某个位在之前存在的位存在的前提下可以表示,则保留,否则跳过,我们可以通过保留掩码位的方式维护a和b,此时对于a中每一个数只有唯一的对应值,考虑a和b是否能完全对应,若可以则保留否则跳过,复杂度为logNnlogn。

#include <bits/stdc++.h>

using namespace std;

int main() {
  ios::sync_with_stdio(false); cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    vector<int> a(n), b(n);
    for (int& x : a) cin >> x;
    for (int& x : b) cin >> x;
    
    auto check = [&](int ans) {
      map<int, int> cnt;
      for (int x : a) ++cnt[x & ans];
      for (int x : b) --cnt[~x & ans];
      bool ok = true;
      for (auto it : cnt) ok &= it.second == 0;
      return ok;
    };
    
    int ans = 0;
    for (int bit = 29; bit >= 0; --bit) 
      if (check(ans | (1 << bit)))
        ans |= 1 << bit;
    
    cout << ans << '\n';
  }
}

标签:cnt,int,题解,CF,cin,括号,ans
From: https://www.cnblogs.com/wjhqwq/p/17347590.html

相关文章

  • 跨域问题解决、其他权限校验方法
    跨域问题解决浏览器出于安全的考虑,使用XMLHttpRequest对象发起HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。前后端分离项目前端项目和后端项目一般都不是同源的,所以肯定会存在......
  • 2023年团体程序设计天梯赛 题解
    仅更新L1,L2随后写**更好的阅读体验:2023年团体程序设计天梯赛题解**L1-1最好的文档有一位软件工程师说过一句很有道理的话:“Goodcodeisitsownbestdocumentation.”(好代码本身就是最好的文档)。本题就请你直接在屏幕上输出这句话。输入格式:本题没有输入。输出格式:在一行中输出......
  • 2023年团体程序设计天梯赛 题解
    仅更新L1,L2随后写**更好的阅读体验:2023年团体程序设计天梯赛题解**L1-1最好的文档有一位软件工程师说过一句很有道理的话:“Goodcodeisitsownbestdocumentation.”(好代码本身就是最好的文档)。本题就请你直接在屏幕上输出这句话。输入格式:本题没有输入。输出格式:在一行中输出......
  • Leetcode 88. 合并两个有序数组 Python题解
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/merge-sorted-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.暴力法解题思路:由于题目要求原地合并,直接返回nums1数组。因此一个可行的方案是合并两个列表,然后对合并后的列表进行排序。用......
  • 2023年团体程序设计天梯赛 题解
    仅更新L1,L2随后写L1-1最好的文档点击查看本题有一位软件工程师说过一句很有道理的话:“Goodcodeisitsownbestdocumentation.”(好代码本身就是最好的文档)。本题就请你直接在屏幕上输出这句话。输入格式:本题没有输入。输出格式:在一行中输出Goodcodeisitsownbest......
  • Leetcode 53. 最大子数组和 Python题解
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/maximum-subarray著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.动态规划解题思路:对于当前元素nums[i]来说,最大的连续子数组可以为:nums[0:i]中的最大连续子数组加上nums[i]nums[i],此时nums[......
  • Leetcode 1.两数之和 Python题解
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.暴力遍历法解题思路:遍历数组,对于当前的元素nums[i],如果result=taget-nums[i]在数组中,则返回这nums[i]和result的下标。如果已经查......
  • 第14届蓝桥杯C++B组省赛题解(更新中)
    目录A.日期统计题目内容思路代码答案B.01串的熵题目内容思路代码答案C.冶炼金属题目内容输入格式输出格式输入样例输出样例思路代码A.日期统计题目内容小蓝现在有一个长度为100的数组,数组中的每个元素的值都在0到9的范围之内。数组中的元素从左至右如下所示:5686......
  • 「解题报告」CF708E Student's Camp
    感觉这篇题解的做法很强啊,贺一下。连通:考虑将每一种情况对应一条路径。钦定这条路径为能往下则往下,不能往下就向左或向右走到第一个能往下的位置然后往下。这样只考虑每一种路径,再对应的计算路径相应的情况的概率和。这个是容易计算的,而路径需要记录的状态少了一维,于是就可以......
  • 关于 HBuilderX 中内置终端无法输入的问题解决
    01.先安装内置终端插件;02.打开内置终端配置文件: D:\HBuilderX\plugins\builtincef3terminal\script\main.js03.将原来的Shell.exe改成cmd.exe,重启IDE即可; ......