因为打abc打(。・∀・)ノ゙嗨了,忘记cf是10.05了,所以只能去力扣了

A.直接模拟,然后把用过的点记录下次别用就行

class Solution:def maximumNumberOfStringPairs(self, words: List[str]) -> int:n=len(words)st=[0]*(n+10)res=0for i in range(0,n):for j in range(i+1,n):if st[j] or st[i]:continueif words[i]==words[j][::-1]:st[i]=st[j]=1res+=1return res

B.

首先如果想不明白,你可以直接枚举开头为"AA" "AB""BB"的情况暴力做就行了

AB后面只能接AA,前面只能接BB,还能接自己(所以AB无敌)

AA后面只能接BB

BB前面直接接AB

然后讨论AA BB那个种类多就行

如果AA比BB多,那么就是BB个数+AB个数+(AA个数+1)(因为你可以用AA开头,用完最后一个BB之后再接一个AA)

反之同理

class Solution:def longestString(self, x: int, y: int, z: int) -> int:return 2 * (y + min(y + 1, x) + z) if x>y else 2 * (x + min(x + 1, y) + z)

C.

dp

记忆化搜索

状态就是用前i个字符串,当前最左边字符是l,右边字符是r的最大个数

复杂度26*26*n

dp只要记录前面和最后那个字符就行,中间用不到

class Solution:def minimizeConcatenatedLength(self, words: List[str]) -> int:n = len(words)@cachedef dfs(i, l, r):if i == n:return 0s = words[i]nl = s[0]nr = s[-1]return len(s) + min(dfs(i + 1, l, nr) - (r == nl), dfs(i + 1, nl, r) - (l == nr))return dfs(1, words[0][0], words[0][-1]) + len(words[0])

D.

滑动窗口思想

因为x固定就是窗口长度固定

直接把询问数组和添加数组排序即可

用个cnt数组记录有多少种不同类别的服务器就行

如果当前端点小于询问的端点,就直接添加直到添加数组的端点大于询问端点

class Solution {
public:vector<int> countServers(int n, vector<vector<int>>& logs, int x, vector<int>& queries) {vector<int> cnt(n+10,0);int now=0;vector<pair<int,int>> a;int mx=0;for(int i=0;i<queries.size();i++){mx=max(mx,queries[i]);a.push_back({queries[i],i});}for(int i=0;i<logs.size();i++){mx=max(mx,logs[i][1]);}sort(logs.begin(),logs.end(),[&](const auto&p,const auto&q){return p[1]<q[1];});sort(a.begin(),a.end(),[&](const auto&p,const auto&q){return p.first<q.first; });int idx=0,idx1=0,idx2=0;int m=queries.size();vector<int> res(m,0);for(int i=0;i<a.size();i++){int r=a[i].first,l=a[i].first-x;while(idx<logs.size()&&logs[idx][1]<=r){if(cnt[logs[idx][0]]==0) now++;cnt[logs[idx][0]]++;idx++;}while(idx2<logs.size()&&logs[idx2][1]<l){if(cnt[logs[idx2][0]]==1) now--;cnt[logs[idx2][0]]--;idx2++;}res[a[i].second]=n-now;}return res;}
};

力扣第 107 场双周赛相关推荐

  1. 20220219:力扣第72场双周赛题解

    力扣第72场双周赛 题目 思路与算法 代码实现 写在最后 题目 统计数组中相等且可以被整除的数对 找到和为给定整数的三个连续整数 拆分成最多数目的偶整数之和 统计数组中好三元组数目 思路与算法 前三题 ...

  2. 20210530:力扣第53场双周赛题解

    力扣第53场双周赛题解 题目 思路与算法 代码实现 写在最后 题目 长度为三且各字符不同的子字符串 数组中最大数对和的最小值 矩阵中最大的三个菱形和 思路与算法 长度为三且各字符不同的子字符串:遍历查 ...

  3. 20201023:力扣第37场双周赛(上)

    力扣第37场双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 删除某些元素后的数组均值 网络信号最好的坐标 思路与算法 第二题直接暴力就可以了,计算每个点的所有偏移量存入list,即以(0,0 ...

  4. 以赛促练-力扣第85场双周赛以及第307场周赛

    文章目录 第85场双周赛 T3.字母移位II T4.删除操作后的最大子段和 第307场周赛 T2.最大回文数字 T3.感染二叉树需要的总时间 T4.找出数组的第K大和 第85场双周赛 T1直接暴力枚举 ...

  5. 力扣 第 87 场双周赛 ---心态爆炸场

    第 87 场双周赛 T1 - 模拟 class Solution {public:int q[13] = {0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, ...

  6. 力扣第 104 场双周赛 2681. 英雄的力量

    原题链接力扣 题目大意:我开始看成连续子段了,写了个递归程序....... 一个数组任选一个子序列,子序列的力量值=最大值平方*最小值.求所有子序列的力量和. 分析过程:如序列长度为n,子序列总数为2 ...

  7. 20211201:力扣第268周双周赛(上)

    力扣第268周双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 两栋颜色不同且距离最远的房子 给植物浇水 思路与算法 双指针遍历即可,维护那个索引最大差值即可. 模拟题,正常情况需要每次走一步 ...

  8. 20210119:力扣第42周双周赛(下)

    力扣第42周双周赛(下) 题目 思路与算法 代码实现 写在最后 题目 修改后的最大二进制字符串 得到连续 K 个 1 的最少相邻交换次数 思路与算法 修改后的最大二进制字符串 这道题的思路很简单,交换 ...

  9. 20210101:力扣第42周双周赛(上)

    力扣第42周双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 无法吃午餐的学生数量 平均等待时间 思路与算法 无法吃午餐的学生数量 本题直接暴力模拟也没问题,但是这应该不是题目的本意,我们可以 ...

最新文章

  1. 参数估计_MCMC-模型参数估计
  2. 循环-20. 猜数字游戏(15)
  3. c# mysql sdr_C#结合数据库实现验证识别ID卡内容的方法
  4. sql双表查询java代码_原生sql 多表查询
  5. 一起Polyfill系列:Function.prototype.bind的四个阶段
  6. Linux设备驱动模型1——简介和底层架构
  7. Softmax(假神经网络)与词向量的训练
  8. 数据转移-从MySQL到Hive
  9. SQL Server Profiler 常见问题总结
  10. Odoo与浪潮合资研发PS Cloud之如何配置和运行调度程序
  11. C语言的argv小案例
  12. 如何才能在jsp文件中使用el表达式
  13. 联想LJ2400清零
  14. Redis 源码简洁剖析 - SDS 字符串
  15. 桌面计算机密码修改频率,教大家如何更改电脑的显示频率
  16. 架构测试:HAproxy实现负载均衡,前端为nginx+php,数据库实现读写分离和高可用...
  17. copypng emitted errors
  18. A: 牛牛的DRB迷宫I (dp)
  19. What?校花居然半夜问我要“软件”
  20. 2023二建建筑施工备考第二天Day04

热门文章

  1. 城市轨道交通运营管理属于什么院系_城市轨道交通运营管理系统专业
  2. 自行车测速器怎么调_自行车测速方法
  3. 迈克菲:如何规避Java漏洞带来的安全风险
  4. 如何使用DOS命令行查询端口
  5. 发短信泡妞五大基本功
  6. 专属于程序员的一份面经
  7. 读《魔鬼经济学04》
  8. AD9361功能介绍和使用
  9. 关于@Page的属性
  10. call指令和ret指令