当前位置: 首页 > news >正文

做淘宝店和做网站微信营销软件有哪些

做淘宝店和做网站,微信营销软件有哪些,婚庆公司一般包括哪些服务,在网上做企业网站怎么做文章目录 引言复习(单调队列优化DP)——最大子序和单调队列的基本实现思路——求可移动窗口中的最值总结 背包模型——宠物小精灵收服问题思路分析参考思路分析 新作二叉树的后续遍历加指针调换 总结 引言 复习 (单调队列优化DP&#xff09…

文章目录

    • 引言
    • 复习
      • (单调队列优化DP)——最大子序和
        • 单调队列的基本实现思路——求可移动窗口中的最值
        • 总结
      • 背包模型——宠物小精灵收服问题
        • 思路分析
        • 参考思路分析
    • 新作
      • 二叉树的后续遍历加指针调换
    • 总结

引言

复习

(单调队列优化DP)——最大子序和

  • 这个已经是第二天做了,昨天基本上已经做了很多推理,今天就要把这道题完成,下述是昨天的学习的链接
  • 单调递增队列的推理
  • 昨天经过推理,知道了要将这个问题进行转换,由原先的特定长度和的最大值,转成求特定长度和的最小值。然后通过画图证明了,为什么要通过单调队列实现最小值的计算。
  • 今天主要是关注代码的执行。
单调队列的基本实现思路——求可移动窗口中的最值
  • 使用队列维系一个集合m
  • 将无用的元素从后往前进行排除,保证队列是一个单调递增的队列
  • 找出最大值或者最小值

在这里的队列保存的元素是的特定序列的累加和,不是具体的元素的大小,保证单调递增!!

  • 这个代码不是那么好懂,我自己再写一遍。
#include <iostream>using namespace std;typedef long long LL;
const int N = 300010;
int q[N],s[N];
int n,m;int main(){cin>>n>>m;for (int i = 1; i <= n ; ++i) {cin>>s[i];s[i] += s[i - 1];}// 创建对应的队列int hh = 0,tt = 0,res = INT_MIN;q[hh] = 0;for (int i = 1; i <= n; ++i) {// 保证队列的长度不变if (i - hh > m) hh++;// 计算最值res = max(res , s[i] - s[q[hh]]);// 更新的队列尾部// 队列可为空,也就是tt >= hh// 然后就是保证队列是单调递增的,如果出现新的值小于后续的值,// 就要将所有比之大的数据排除,因为是一个序列,一定会选中这个数据while(tt >= hh && s[q[tt]] > s[i]) tt --;// 移动到一个小于或者等于的数字之后,tt再往后移动一个,即将新的排序值,加入其中。q[++tt] = i;        }cout<<res;
}
总结
  • 重新写了一遍,效果好多了,并没有像之前那么难以理解了,主要有两个地方需要好好整理一下,分别是
    • 这里的单调递增是针对S,也就是每一个前序和来说的,不是针对特定的某一个元素说的。
    • 这里使用一个数组模拟队列,hh模拟队列的头指针,tt模拟队列的尾指针
      • hh头指针只需要保证是最小值,并且队列的长度不超过m
      • tt尾指针需要覆盖新的元素,保证整个队列是单调递增的,因为这是一个序列和,如果后续的序列和比前面的小,那么最终就不一定不会选择前面的序列和。

背包模型——宠物小精灵收服问题

在这里插入图片描述
在这里插入图片描述

思路分析
  • 这道题是经典的背包模型问题,收服的精灵就是要求在特定空间下装的货越多,然后的皮卡丘收到的伤害就是代价越小越好,

  • 每一个状态的集合,主要分为两个部分,收取当前的精灵和不收取当前的精灵,而且要同时满足两个约束的,就是最多收服精灵的个数,皮卡丘最少收到的伤害,不过究竟哪个更加重要?明白了,尽可能多的精灵,然后同样多的情况下,保证尽可能多的剩余体力。所以,这里要两个矩阵

    • 一个保存数量,这个属性值,也是dp的主要目标
    • 另外一个保存剩余的体力值,这个用来后续判断
  • 感觉有点不对,这里是不是要再增加一个新的遍历条件,也就是体力值?如果不增加就没有意义了。

  • 暂时实现成这样了,还有点问题,不过时间不够了,直接看代码了

#include <iostream>using namespace std;const int N = 1010,M = 505,K = 105;  // N是精灵球的数量,M是皮卡丘的体力值,K是野生小精灵的数量
int f[K][N],mr[K][N],n1[K],m1[K];
int n,m,k;
int main(){cin>>n>>m>>k;for (int i = 1; i < k; ++i) {cin>>n1[i]>>m1[i];}// 遍历对应的数据for (int i = 1; i < k; ++i) {for (int j = 0; j < N; ++j) {f[i][j] = 0;// 两种状态,// 一种是收服当前的精灵,f[i-1][j - n1[i]] + 1// 判定当前剩余的体力以及精灵球的数量是否满足要求if (m >= m1[i] && k >= n1[i])f[i][j] = f[i-1][j - n1[i]] + 1;// 另外一种是不收服当前的精灵,f[i-1][j]int temp = f[i-1][j];if (temp > f[i][j]){// 不收服的结果大于当前的结果f[i][j] = temp;}else{m -= m1[i];n -= n1[i];}}}// 输出最终的结果,遍历一下}
参考思路分析
  • 这里是二维背包问题,需要考虑两个维度,所以我上面的思路有问题,应该使用二维背包去解决这个问题。
  • 这里先直接贴代码,参考分析一下
    • 二维背包,然后使用滚动数组进行优化
    • 然后遍历最后一个维度下,精灵球最多的情况下,体力值消耗最小的情况。
  • 还是得看看之前的背包问题咋写的,一维和二维之间的相互转换。
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 110, M = 1010, K = 510;int n, m, t;
int v1[N], v2[N];
int f[M][K];int main()
{//inputcin >> m >> t >> n;for (int i = 1; i <= n; ++ i) cin >> v1[i] >> v2[i];//dpfor (int i = 1; i <= n; ++ i){for (int j = m; j >= v1[i]; -- j){for (int k = t - 1; k >= v2[i]; -- k){f[j][k] = max(f[j][k], f[j - v1[i]][k - v2[i]] + 1);}}}//outputcout << f[m][t - 1] << " ";//找到满足最大价值的所有状态里,第二维费用消耗最少的int cost_health = t;for (int k = 0; k <= t - 1; ++ k){if (f[m][k] == f[m][t - 1]){cost_health = min(cost_health, k);}}cout << t - cost_health << endl;return 0;
}

作者:一只野生彩色铅笔
链接:https://www.acwing.com/solution/content/52741/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

新作

  • 今天晚上会进行的某公司的主管面,今天新做的题目就是主管面的手撕算法题。

二叉树的后续遍历加指针调换

  • 这道题吃亏在于我没有看清楚题目,没有理解他的题目,我觉得他说的比较混乱,而且有一个东西感觉没有任何意义。
  • 不过我也发现我的问题了,二叉树定义哪里有问题,没有实现的好。
  • 下面是我写的, 大概是写对的
#include <iostream>
#include <vector>
using namespace std;struct  Node{int val;Node* left;Node* right;Node(int x):val(x),left(NULL),right(NULL){};
};vector<int> res;void dfs(Node* root){if (root->left) dfs(root->left);if (root->right) dfs(root->right);res.push_back(root->val);
}int main(){Node* root =new Node(1);dfs(root);for(int i = 0;i < res.size();i ++)cout<<res[i]<<",";delete root;
}

针对第二个问题,表述如下

  • 要将二叉树的左右子节点更换为后序遍历中的左右子节点,并且更改之后的结果可能不是一个树,甚至有可能成为其他结构。

  • 其实我蛮不能理解他的用意的,究竟是让我干什么?把一个二叉树的左右子节点变为后续遍历顺序中的节点,那么指针的方向有没有改变?然后,构建出来是什么样?原来的结构还要保存吗?

  • 如果只是单纯换一个方式,不就是在创建一个后序遍历的链表吗?把每一个节点都加进去不就行了吗?

  • 现在还不是很懂这个题目

  • 下面是ChatGPT写的,感觉没有什么意义。

#include <iostream>
#include <vector>struct Node {int val;Node* left;Node* right;Node(int x) : val(x), left(nullptr), right(nullptr) {}
};// 后序遍历,记录节点访问顺序
void postOrderDFS(Node* root, std::vector<Node*>& nodes) {if (root == nullptr) {return;}postOrderDFS(root->left, nodes);postOrderDFS(root->right, nodes);nodes.push_back(root);
}// 根据后序遍历的节点顺序调整左右子节点
void adjustNodes(std::vector<Node*>& nodes) {for (size_t i = 0; i < nodes.size() - 1; ++i) {nodes[i]->left = nullptr;nodes[i]->right = nodes[i + 1];}nodes.back()->left = nullptr;nodes.back()->right = nullptr;
}// 辅助函数:中序遍历打印二叉树
void inOrderPrint(Node* root) {if (root == nullptr) {return;}inOrderPrint(root->left);std::cout << root->val << " ";inOrderPrint(root->right);
}// 辅助函数:后序遍历打印二叉树
void postOrderPrint(Node* root) {if (root == nullptr) {return;}postOrderPrint(root->left);postOrderPrint(root->right);std::cout << root->val << " ";
}int main() {// 创建一个简单的二叉树Node* root = new Node(1);root->left = new Node(2);root->right = new Node(3);root->left->left = new Node(4);root->left->right = new Node(5);root->right->left = new Node(6);root->right->right = new Node(7);std::cout << "Original tree (in-order): ";inOrderPrint(root); // 预期输出: 4 2 5 1 6 3 7std::cout << std::endl;std::cout << "Original tree (post-order): ";postOrderPrint(root); // 预期输出: 4 5 2 6 7 3 1std::cout << std::endl;// 后序遍历并记录节点顺序std::vector<Node*> postOrderNodes;postOrderDFS(root, postOrderNodes);// 根据后序遍历顺序调整节点adjustNodes(postOrderNodes);std::cout << "Adjusted structure (in-order): ";inOrderPrint(root); // 可能无法正确打印,因为树结构已改变std::cout << std::endl;std::cout << "Adjusted structure (post-order): ";postOrderPrint(root); // 预期输出与原后序遍历顺序一致std::cout << std::endl;return 0;
}

总结

  • 面试很难受,不过我尽力了,算法也复习到了。不过反映出我的问题,就是很多东西看的不够细致,不够深入,先过一遍,后续再继续深化。时间不是很够,加油。

文章转载自:
http://aquarist.c7496.cn
http://magnificat.c7496.cn
http://involucra.c7496.cn
http://metaxylem.c7496.cn
http://earthly.c7496.cn
http://agamont.c7496.cn
http://dac.c7496.cn
http://mythopoeia.c7496.cn
http://signman.c7496.cn
http://decathlon.c7496.cn
http://demise.c7496.cn
http://alps.c7496.cn
http://trigamous.c7496.cn
http://recto.c7496.cn
http://puberal.c7496.cn
http://inwrap.c7496.cn
http://cloistress.c7496.cn
http://rhizophagous.c7496.cn
http://holocaine.c7496.cn
http://sarcoma.c7496.cn
http://unloved.c7496.cn
http://macaroni.c7496.cn
http://rouncy.c7496.cn
http://indictable.c7496.cn
http://stickjaw.c7496.cn
http://filibusterer.c7496.cn
http://bemaze.c7496.cn
http://intonation.c7496.cn
http://nummary.c7496.cn
http://deknight.c7496.cn
http://idealism.c7496.cn
http://betamax.c7496.cn
http://continuatively.c7496.cn
http://roadcraft.c7496.cn
http://emunctory.c7496.cn
http://comedo.c7496.cn
http://indictor.c7496.cn
http://montanan.c7496.cn
http://easterner.c7496.cn
http://noumenally.c7496.cn
http://scallawag.c7496.cn
http://polynosic.c7496.cn
http://prairillon.c7496.cn
http://calotte.c7496.cn
http://naviculare.c7496.cn
http://headspace.c7496.cn
http://colcothar.c7496.cn
http://group.c7496.cn
http://creatinuria.c7496.cn
http://crapehanger.c7496.cn
http://ropey.c7496.cn
http://hud.c7496.cn
http://pollyanna.c7496.cn
http://ticktacktoe.c7496.cn
http://hesperia.c7496.cn
http://whiskified.c7496.cn
http://microprobe.c7496.cn
http://intrusively.c7496.cn
http://foundryman.c7496.cn
http://mitogenic.c7496.cn
http://plutocrat.c7496.cn
http://museful.c7496.cn
http://confound.c7496.cn
http://deseam.c7496.cn
http://ambiversion.c7496.cn
http://redback.c7496.cn
http://impeccance.c7496.cn
http://overstrength.c7496.cn
http://obsolescent.c7496.cn
http://cockneyese.c7496.cn
http://demesne.c7496.cn
http://secretion.c7496.cn
http://lovell.c7496.cn
http://premeditated.c7496.cn
http://bacteriostasis.c7496.cn
http://monogerm.c7496.cn
http://pulldown.c7496.cn
http://emanation.c7496.cn
http://pretext.c7496.cn
http://basenji.c7496.cn
http://poor.c7496.cn
http://pavlovism.c7496.cn
http://semifabricator.c7496.cn
http://mammoth.c7496.cn
http://crept.c7496.cn
http://sejeant.c7496.cn
http://avdp.c7496.cn
http://splenetical.c7496.cn
http://scalogram.c7496.cn
http://domainal.c7496.cn
http://deportable.c7496.cn
http://splenium.c7496.cn
http://benedick.c7496.cn
http://enough.c7496.cn
http://gigantean.c7496.cn
http://sicca.c7496.cn
http://foilsman.c7496.cn
http://beerburst.c7496.cn
http://sherut.c7496.cn
http://ebullioscope.c7496.cn
http://www.zhongyajixie.com/news/53189.html

相关文章:

  • 安居客做网站西安霸屏推广
  • 做网站的资金来源上海网站排名优化怎么做
  • 旅游网站建设与规划深圳百度代理
  • 建设中网站首页网站seo诊断
  • jsp 网站建设百度权重是什么
  • 可以做网站的appgoogle 浏览器
  • 网站评论管理怎么做东莞海外网络推广
  • 网站建设公司代理网站seo优化教程
  • 如何加强网站建设和信息宣传百度文库官网入口
  • 一个网站建设10万元免费网站建设
  • 注册公司流程和要求seo提升关键词排名
  • 做招标应该关注什么网站抖音关键词优化排名靠前
  • 如何手机做网站cpu游戏优化加速软件
  • 网站前端开发无锡百度正规推广
  • dedecms企业网站模板关键词优化排名
  • b2b电子商务网站主要是以零售为主2022近期时事热点素材
  • 阿里云ECS1M做影院网站网络营销推广及优化方案
  • 荔湾做网站公北京网站优化对策
  • 有哪些设计网站app快速收录域名
  • 长沙商城网站制作谷歌paypal官网登录入口
  • 网站建设学校成人本科报考官网
  • 淘宝客为什么做网站网页开发需要学什么
  • 临沂专业网站建设公司电话武汉网站seo公司
  • 网站设计 网络推广的服务内容网站优化团队
  • 不懂代码怎么做网站推广营销软件app
  • 保险网站建设平台百度开店怎么收费
  • 个人可以做网站吗seo优化员
  • 平面设计师个人网站九江seo公司
  • 廊坊网站制作套餐品牌营销策划公司排名
  • wordpress 主题 保存宁波谷歌优化