14天阅读挑战赛

目录

模拟+辗转相除法

DP作图分析状态方程

找到只出现一次的字符:


模拟+辗转相除法

小易的升级之路_牛客题霸_牛客网

思路:

本题的能力值的累加分两种情况,一种是直接相加 bi, 一种是累加当前能力值于 bi 的最大公约数。最大公约数可以通过碾转相除法求得: a 与 b 的最大公约数相当于 b 与 a,b 余数的最大公约数。如果求余结果为 0 , 则 b 为所 求结果

辗转相除法

int gcd(int a,int b)
{int c;while(c=a%b){a=b;b=c;}return b;
}
#include <iostream>
#include<vector>
using namespace std;int gcd(int a,int b)
{int c;while(c=a%b){a=b;b=c;}return b;
}int getpw(int n,int power)
{vector<int> num(n);for(int i=0;i<n;i++)cin>>num[i];for(int i=0;i<n;i++){if(power>=num[i]) power+=num[i];else power+=gcd(power,num[i]);}return power;
}int main() {int n,a,power;while(cin>>n>>a){power=getpw(n,a);cout<<power<<endl;}return 0;
}

DP作图分析状态方程

计算字符串的编辑距离_牛客题霸_牛客网

思路:

传递公式

  1. lev[i][j]用来表示字符串a的[1...i]和字符串b[1...j]的levenshtein距离;
  2. 插入和删除操作互为逆过程:a删除指定字符变b等同于b插入指定字符变a;
  3. 如果a[i] == b[j],则说明a[i]和b[j]分别加入a,b之后不会影响levenshtein距离,lev[i][j] = lev[i-1][j-1] + 0;
  4. 如果a[i] != b[j],则需要考虑3种情况的可能:
    1. a中插入字符,即lev[i][j] = lev[i-1][j] + 1;
    2. b中插入字符,即lev[i][j] = lev[i][j-1] + 1;
    3. a[i]替换成b[j],lev[i][j] = lev[i-1][j-1] + 1;
  5. 取这4种情况的最小值。

  • 若两个字符相等,即str1[i-1] == str2[j-1],则在这一个位置的编辑距离和上一个字符相同,因此对应的数组dp[i][j]=dp[i-1][j-1];
  • 若两个字符不相等,可删除str1[i-1]这个字符,则dp[i][j] = 1 + dp[i-1][j];删除str2[j-1]这个字符,则dp[i][j] = 1 + dp[i][j-1];修改str1[i-1]使它与str2[i-1]相等,则dp[i][j] = 1 + dp[i-1][j-1]。

#include <iostream>
#include<vector>
using namespace std;int mind(const string &s1,const string &s2)
{if(s1.empty()||s2.empty()) return max(s1.size(),s2.size());int len1=s1.size();int len2=s2.size();vector<vector<int>> f(len1+1,vector<int>(len2+1,0));for(int i=0;i<=len1;i++) f[i][0]=i;//初始化距离for(int j=0;j<=len2;j++) f[0][j]=j;//表示当另一个字符串为空时,该串的距离for(int i=1;i<=len1;i++) for(int j=1;j<=len2;j++){    // 判断word1的第i个字符是否与word2的第j个字符相等if(s1[i-1]==s2[j-1]){//相同,距离不需要增加f[i][j]=f[i-1][j-1];}else{int x=1+min(f[i-1][j],f[i][j-1]);//字符不同,需要增删替换,距离+1f[i][j]=min(x,1+f[i-1][j-1]);}}return f[len1][len2];
}int main() {string s1,s2;while(cin>>s1>>s2)cout<<mind(s1,s2)<<endl;return 0;
}
// 64 位输出请用 printf("%lld")

找到只出现一次的字符:

时间复杂度O(n^2)

char getFirstOneChar_3(const string& str) {for (int i = 0; i < str.size(); ++i) {int index1 = str.find(str[i]);int index2 = str.rfind(str[i]);if (index1 == index2)return str[i];}return -1;
}

O(n)

//hash法 O(n)
char getFirstOneChar_2(const string& str) {int hash[256] = {0};for (int i = 0; i < str.size(); ++i) //统计字符的次数hash[str[i]]++;for (int i = 0; i < str.size(); ++i) {if (hash[str[i]] == 1)return str[i];}return -1;
}

牛客竞赛每日俩题 - Day4相关推荐

  1. 牛客竞赛每日俩题 - Day12

    目录 set的插入删除 vector<string>的应用 set的插入删除 数据库连接池__牛客网 [解题思路] 循环接收每组用例,对于每组用例进行如下操作: 1. 依次获取每个状态,如 ...

  2. 牛客竞赛每日俩题 - Day7

    目录 经典01背包问题 二叉树遍历与构造(考研重点) 经典01背包问题 求正数数组的最小不可组成和_百度笔试题_牛客网 参考大佬题解: 动态规划:01背包问题(无物品价值),思想相同,题目最终要求有些 ...

  3. 牛客竞赛每日俩题 - Day9

    目录 日期推算 分解因数 日期推算 美国节日__牛客网 思路: 首先,我们要想找到一个月第N个星期W,一定需要一个参照物,最好的目标当然是这个月的第一天.拿到参照物后,我要能得 到参照物的星期数,然后 ...

  4. 牛客竞赛每日俩题 - Day3

    14天阅读挑战赛 目录 动态规划思想 经典DP 简单的数学问题 动态规划思想 查找两个字符串a,b中的最长公共子串_牛客题霸_牛客网 思路:         本题需要用动态规划求解,MCS[i][j] ...

  5. 牛客竞赛每日俩题 - 动态规划3

    目录 类01背包问题,选or不选 变种走方格 类01背包问题,选or不选 不同的子序列_牛客题霸_牛客网 问题翻译: S有多少个不同的子串与T相同 S[1:m]中的子串与T[1:n]相同的个数 由S的 ...

  6. 牛客竞赛每日俩题 - Day2

    14天阅读挑战赛 目录 字符串函数的熟练使用(模拟) 双指针+模拟+回溯 字符串函数的熟练使用(模拟) 扑克牌大小_牛客题霸_牛客网 别看题目很长,其实就是简单的斗地主,比较两手牌哪边大而已: 思路: ...

  7. 牛客竞赛每日俩题 - Day5

    目录 DP+贪心 dfs迷宫问题(最短路径) DP+贪心 年终奖_牛客题霸_牛客网 思路: 定义f(i,j)表示从左上角走到坐标(i,j)处能获得的最大奖励. 搜索所有从左上角走到右下角的路径,找到最 ...

  8. 牛客竞赛每日俩题 - 动态规划2

    目录 经典DP - 走方格 走方格2.0 分割回文串 分割回文串 - 回文优化 经典DP - 走方格 不同路径的数目(一)_牛客题霸_牛客网 状态:         子状态:从(0,0) 到达 (1, ...

  9. 牛客竞赛每日俩题 - Day1

    14天阅读挑战赛 目录 排序+dfs+简单剪枝 贪心+模拟 排序+dfs+简单剪枝 幸运的袋子_牛客题霸_牛客网 思路: 对于任意两个正整数 a,b 如果满足 a+b>a b ,则必有 一个数为 ...

最新文章

  1. 读服务器文件,读取服务器文件
  2. Linux磁盘管理----分区格式化挂载fdisk、mkfs、mount
  3. Recover it!
  4. python真假命题_python中的命题演算
  5. 在vue单页应用中使用jquery
  6. SAP Hybris安装包里自带的Maven和Gradle
  7. YBTOJ:圈套问题(分治法、鸽笼原理)
  8. win7计算机个性化设置,笔记本电脑windows7系统如何用好电脑个性化设置
  9. centos 宝塔面板 mongodb 给新的数据库 创建登录用户和密码
  10. 基于Hmily实现TCC分布式事务解决方案
  11. 运输层课后第13题解析
  12. 拓端tecdat|R语言使用ARIMAX预测失业率经济时间序列数据
  13. 人脸识别demo使用教程
  14. python:Craps赌博游戏
  15. WIN10下CSF布料模拟算法
  16. 微信点拼多多砍价显示服务器吃撑,微信狠起来自己人都打?最严外链规范实行,微视、拼多多砍价链接被限制!...
  17. 《Web设计大全》读书笔记之一
  18. BSOJ2923 CODEVS1419 藤原妹红 最小生成树+树形dp
  19. 身份证最后一位校验码
  20. 消防工程师答题做试题模拟真题微信小程序,margin:25px 50px 75px 100px;

热门文章

  1. wordpress批量导入文章详细教程
  2. FPV救援四足机器人设计(2)
  3. tensorrt 加速原理
  4. 利用requests库获取cookies的方式
  5. 法国总统马克龙、挪威首相索尔贝格将参加目标守卫者大会
  6. Python爬虫入门一:百度首页
  7. 记:《洛克菲勒留给儿子的38封信》-- 5
  8. 部署一个Javaweb项目到腾讯云服务器上,在腾讯云轻量应用服务器上部署javaweb项目
  9. html5中comment注释咋用,comment的用法总结大全
  10. 关于Web安全趋势与核心防御机制