牛客巅峰赛钻石&王者场

前言

自从我一场从青铜打上钻石以后,我好像就打不了黄金场的哭唧唧(/(ㄒoㄒ)/~~),钻石王者场真呆不下去了
被各路神仙吊打

String II

解题思路:签到题,比较简单,我的思路是 差分+枚举,我们看数据只有大概1e3,那这铁定可以暴力枚举出来啊我们枚举原串中每个位置的字母为新串的字母,然后对该字母进行差分(注意正负),然后排序后贪心选最大的可能,时间复杂度大概是\(O(n^2logn)\),直接来看代码叭,代码好懂(⊙﹏⊙)
Code:

int string2(int k, string s) {int pre[10005];//我们的差分数组int ans = 1;//最少的可能就是字串只有一个for(int i = 0;i < s.size(); ++i) {int temp = 0;for(int j = 0;j < s.size(); ++j) {//对第i个字符进行差分操作pre[j] = abs(s[j]-s[i]);}sort(pre,pre+s.size());//对差分的结果排序,我们不在乎字母的位置int tk = k;int loc = 0;for(;loc < s.size(); ++loc)//判断以第i个字母为字串的长度if(tk - pre[loc] >= 0) {tk -= pre[loc];temp++;}elsebreak;ans = max(ans,temp);//选取最大的}return ans;
}

其实这里我们可以优化的,因为字母的个数也就26个,我们不需要把远串所有字母全部枚举,我们只需要枚举原串存在的不同的字母就行,这个时候的时间复杂度大概为\(26nlog(n)\)

Bang! Bang!

解题思路:在n个音符中选取m个音符标记为重音符,重音符之间相隔至少k个音符,emmm是不是很像高中的排列组合这题可以用排列组合的隔板法切出来,但是我不会QAQ,给个组合数学做出来的大佬的题解:传送门言归正传,我理解的是动态规划做这题,dp[i][j]表示的是第i个重音符放在第j个位置的方案数那么很显然结果就是ans = \(\sum_{i=1}^n dp[m][i]\),状态的初始话,我们让dp[1][i]=1,表示的是第一个重音符放的位置有n种dp[0][0]=1表示的不放重音符,也没有音符放,也算是一种情况,我们会发现这样想后会发现dp[i][j] = dp[i-1][1]+dp[i-1][2]+……dp[i-1][j-k-1]这样的话,我们的代码就是\(O(n^3)\)的复杂度,但是经过我们仔细的看题解分析后,我们会发现dp[i][j-1] = dp[i-1][1]+dp[i-1][2]+……dp[i-1][j-k-2]那这样的话,我们其实就可以把状态方程改为:

\[dp[i][j]=dp[i][j]+dp[i-1][j-k-1] \]

Code:

const int mod = 1e9+7;long long solve_bangbang(int n, int m, int k) {// write code hereconst int  N = 1005;int dp[N][N];if(m == 0)//特判一下如果重音符数为0的时候,只有一种方式->就是不变return 1;dp[0][0] = 1;for(int i = 1;i <= n; ++i) {//初始化dp[1][i] = 1;}for(int i = 2;i <= m; ++i) {for(int j = k + 2;j <= n; ++j) {dp[i][j] = (dp[i][j-1]+dp[i-1][j-k-1]) % mod;//状态转移方程}}int ans = 0;for(int i = 0;i <= n; ++i) {ans = (ans + dp[m][i]) % mod;//最后把所有的情况加起来}return ans % mod;}

天花板

解题思路:这题是整除分块的板子题……,然鹅我并没有学,我在这题上耗了半小时,我还傻乎乎的以为是推一个公式,手动模拟了一下前十的数据,好像发现了什么规律,但是好像什么都没发现,然后滚去学了一手整数分块,原理蛮简单的,\(\lceil\)\(\frac{N}{i}\)\(\rceil\)的个数不会超过\(2\sqrt{N}\)个,这里就要引用一个推导的结论了,\(\sum_{i=1}^n \lceil\)\(\frac{N}{i}\)\(\rceil = \sum_{l=1}^n (r-l+1)\lceil\)\(\frac{N}{l}\)\(\rceil\),但是其中的r是一直在变化\(r=\lceil\)\(\frac{N}{\lceil\frac{N}{l}\rceil}\)\(\rceil\),然后把l从1遍历到n就行,时间复杂度为\(O(n)\)关于这个结论的推导和其他推论的运用传送门一,传送门二
Code:

long long Sum(int n) {// write code herelong long ans = 0;long long l,r;l = 1;for(;l<=n;l = r + 1) {if((n-1)/l) r =(n-1)/((n-1)/l);elser = n;r = min(r,(long long)n);ans += (r - l + 1) * (((n-1)/l)+1);}return ans;}

ps:今天写了好多latex……还有点不习惯。

/*┏┛ ┻━━━━━┛ ┻┓  ┃      ┃  ┃   ━         ┃  ┃ ┳┛   ┗┳     ┃  ┃             ┃  ┃   ┻       ┃  ┃            ┃  ┗━┓   ┏━━━┛  ┃   ┃   神兽保佑  ┃   ┃   代码无BUG!  ┃   ┗━━━━━━━━━┓  ┃           ┣┓  ┃             ┏┛  ┗━┓ ┓ ┏━━━┳ ┓ ┏━┛  ┃ ┫ ┫   ┃ ┫ ┫  ┗━┻━┛   ┗━┻━┛
*/

牛客编程巅峰赛S2第6场 - 钻石王者相关推荐

  1. 牛客编程巅峰赛S2第5场 - 钻石王者 C.Tree III

    牛客编程巅峰赛S2第5场 - 钻石&王者 C.Tree III 题目链接 题目描述 给出一棵有n个节点的节点标号为1~n的有根树(根为第一个节点,并给出从第2个节点到第n个节点的父结点),请你 ...

  2. 牛客编程巅峰赛S2第5场 - 钻石王者 A.怕npy的牛牛

    牛客编程巅峰赛S2第5场 - 钻石&王者 A.怕npy的牛牛 题目链接 题目描述 牛牛非常怕他的女朋友,怕到了走火入魔的程度,以至于每当他看到一个字符串同时含有n,p,y三个字母他都害怕的不行 ...

  3. 牛客编程巅峰赛S2第7场 - 钻石王者

    前言 这一场真*爆0场,被自己的理解坑了,把那个子序列以为是字串了,原地爆炸,好亏好亏,第二题是一道博弈论,然鹅我就只有一种情况没想出来,还是挂了真滴难受 A.牛牛的独特子序列(二分) 解题思路: 题 ...

  4. 牛客编程巅峰赛S2第10场 - 青铜白银黄金题解报告

    文章目录 数学实验 奇怪的排序问题 XOR和 总结 数学实验 数学实验题目链接 题目描述 牛牛在做数学实验. 老师给了牛牛一个数字 nnn (1≤n≤10181≤n≤10^{ 18}1≤n≤1018) ...

  5. 牛客编程巅峰赛S1第7场 - 黄金钻石A-B-C

    比赛链接:牛客编程巅峰赛S1第7场 - 黄金&钻石 文章目录 A.牛牛打怪兽 DFS B.牛牛的冰激凌 贪心 C.数列求值 矩阵快速幂 A.牛牛打怪兽 DFS 题意 身为屯里第一剑士的牛牛来到 ...

  6. 牛客编程巅峰赛S1第6场 - 黄金钻石王者(总结)

    牛客编程巅峰赛S1第6场 - 黄金&钻石&王者(总结) A:牛牛爱奇数 题意 有一个由n个元素组成的数组,牛牛想要将所有的数都变成奇数(即:将所有的偶数都变成奇数),但是他的操作是:一 ...

  7. 牛客编程巅峰赛S1第2场 - 黄金钻石 1.规律 2.bfs

    链接:https://ac.nowcoder.com/acm/contest/6357/A 来源:牛客网 题目描述 牛牛重新定义了斐波那契数列,牛牛定义f(n) = f(n-1)+f(n+1); f( ...

  8. 牛客编程巅峰赛S1第3场 - 黄金钻石 A.简单题 B.dfs C.并查集

    链接:https://ac.nowcoder.com/acm/contest/6383/A 来源:牛客网 找卧底 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语 ...

  9. 牛客编程巅峰赛S1第2场 - 青铜白银

    A.牛牛扔牌 链接:https://ac.nowcoder.com/acm/contest/6219/A 来源:牛客网 题目描述 牛牛现在有n张扑克牌,每张扑克牌都有点数和花色两部分组成.点数为'1' ...

最新文章

  1. CAS SSO使用指南
  2. 自律到极致-人生才精致:第12期
  3. 手把手教你使用koa2
  4. Makefile:自动化变量 $@,$^,$<,$?
  5. sogou ubuntu安装(最后还是失败了,最近老失败,不知道为啥)
  6. 十一.激光惯导LIO-SLAM框架学习之LIO-SAM框架---框架介绍和运行演示
  7. 细谈最近上线的Vue2.0项目(一)
  8. mysql 左连接与右连接的区别吗_数据库左连接和右连接有什么区别
  9. 數位照片的最佳夥伴 - Picasa2
  10. 啊哈C语言——让计算机多彩的开口说话
  11. .net core with 微服务 - 微服务架构图
  12. C语言二维数组及指针引用
  13. Win10的Excel打开特别慢问题
  14. 简易命令行界面的C/S聊天室
  15. 哎我就不信了,Java IO有这么难吗?
  16. 我爱高圆圆 键盘录入数据,模拟单项选择题
  17. 计算机网络 --- 物理层(学习笔记)
  18. qr-rls算法matlab实现,【预测模型】基于RLS算法进行预测matlab源码
  19. javaScript基础知识点总结
  20. mxGraph实现鱼骨图(因果图)

热门文章

  1. VSCode 将已编辑好的文件中的 tab 键转换成空格键
  2. Percona XtraBackup
  3. 2 Django-2的路由层(URLconf)
  4. linux常用命令集(用户和组操作-共15个)
  5. SharePoint 取消分享时的默认发邮件
  6. 使用JDBC增删改查
  7. C++ primer plus学习笔记 (3) _函数
  8. 【bzoj4974】字符串大师 逆模拟KMP
  9. WebService开发常用功能详解
  10. Servlet学习-MVC开发模式