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

qq音乐如何做mp3下载网站做网站分辨率多少钱

qq音乐如何做mp3下载网站,做网站分辨率多少钱,做网站规避什么,做网站被黑后怎么办链接: 1993. 树上的操作 题意 **Lock:**指定用户给指定节点 上锁 ,上锁后其他用户将无法给同一节点上锁。只有当节点处于未上锁的状态下,才能进行上锁操作。**Unlock:**指定用户给指定节点 解锁 ,只有当…

链接:

1993. 树上的操作

题意

  • **Lock:**指定用户给指定节点 上锁 ,上锁后其他用户将无法给同一节点上锁。只有当节点处于未上锁的状态下,才能进行上锁操作。
  • **Unlock:**指定用户给指定节点 解锁 ,只有当指定节点当前正被指定用户锁住时,才能执行该解锁操作。
  • Upgrade:指定用户给指定节点 上锁 ,并且将该节点的所有子孙节点 解锁 。只有如下 3 个条件全部满足时才能执行升级操作:
    • 指定节点当前状态为未上锁。
    • 指定节点至少有一个上锁状态的子孙节点(可以是 任意 用户上锁的)。
    • 指定节点没有任何上锁的祖先节点。

基础的类设计,用到的是递归/dfs

可以用递归优化子节点的查询,同时把修改子节点的值

 bool check2(int num){bool ans=false;for(auto s:son[num]){ans |= book[s]!=0;book[s]=0;ans |= check2(s);}return ans;}

实际代码:

class LockingTree {
public:vector<int>parent;vector<vector<int>>son;vector<int>book;LockingTree(vector<int>& parent) {this->parent=parent;book.resize(parent.size());son.resize(parent.size());for(int i=0;i<parent.size();i++){if(parent[i]>=0){son[parent[i]].push_back(i);}}}bool lock(int num, int user) {if(book[num]==0){book[num]=user;return true;}return false;}bool unlock(int num, int user) {if(book[num]==user){book[num]=0;return true;}return false;}bool upgrade(int num, int user) {if(book[num]==0){if(check1(num) && check2(num)){book[num]=user;//clear(num);return true;}}return false;}bool check2(int num){bool ans=false;vector<int>begin=son[num];while(true){vector<int>next;for(auto b:begin){if(book[b]){ans=true;book[b]=0;}for(auto bson:son[b]){next.push_back(bson);}}if(next.empty()) break;begin=next;}return ans;}bool check1(int num){while(parent[num]!=-1){num=parent[num];if(book[num]) return false;}return true;}void clear(int num){vector<int>begin=son[num];while(true){vector<int>next;for(auto b:begin){if(book[b]) book[b]=0;for(auto bson:son[b]){next.push_back(bson);}}if(next.empty()) break;begin=next;}}
};/*** Your LockingTree object will be instantiated and called as such:* LockingTree* obj = new LockingTree(parent);* bool param_1 = obj->lock(num,user);* bool param_2 = obj->unlock(num,user);* bool param_3 = obj->upgrade(num,user);*/

限制:

  • n == parent.length
  • 2 <= n <= 2000
  • 对于 i != 0 ,满足 0 <= parent[i] <= n - 1
  • parent[0] == -1
  • 0 <= num <= n - 1
  • 1 <= user <= 104
  • parent 表示一棵合法的树。
  • lockunlockupgrade 的调用 总共 不超过 2000 次。
http://www.yayakq.cn/news/55480/

相关文章:

  • 被窝家装公司网站建设与优化计入什么科莫
  • 养生网站设计做夏促的网站有哪些
  • 网站开发怎么切换多种语言谷歌流量代理代理
  • 国外免费logo设计网站门户网站 cms
  • 网站流量被黑网站类型怎么分
  • 网站推广主要包括建设期北京商场哪个便宜又好
  • 网站空间上传工具建设在线教育网站
  • 手机网站管理哈尔滨城乡建设局网站
  • 农村电商网站建设分类高端网站设计公司名单
  • 用c 做网站设计系统的项目作业做网站都需要什么贴吧
  • 网站开发介绍雅虎做网站推广
  • 网站后台管理系统源代码做信息发布类网站
  • 提供网站建设商家网站建设 考虑
  • html php网站开发阿里云最低服务器可以做几个网站
  • 延吉网站网站建设c++语言做网站
  • 深圳做网站 汉狮网络一分钟赚50元的游戏
  • 想要自己做一个网站怎么做苏州建设工程质量监督网站
  • 贵州城乡住房建设网站湖北省利川市建设局网站
  • 网站建设三网哪个网站做二微码
  • 微交易网站建设网站优化什么意思
  • 网络营销的网站建设报告文字代码生成器
  • 网站开发工程师岗位描述wordpress页面管理
  • 创建公司网站内容总结雨花区网站建设
  • 网站转化路径生物科技公司网站模板
  • 响应式网站建设流程怎么查看自己网站是否被收录
  • 做网站赚钱吗 谁教教我wordpress打开网站打不开
  • 网站建设的费用是多少商城模板html
  • 什么是 网站的逻辑结构中小企业网站建设流程
  • 保亭交通工程建设局网站电商网站建设方案
  • 网站开发网页制作教程it运维需要学哪些知识