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

凡客科技有限公司网站关键词优化网站推广

凡客科技有限公司,网站关键词优化网站推广,企业官网制作报价,静态网站建设链接: 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.dt0577.cn/news/19316.html

相关文章:

  • 北京网站建设资讯今天的新闻有哪些
  • 免费可信网站认证免费b站推广
  • 一个网站建设流程图线下推广方式有哪些
  • 响应式网站设计多少钱短视频推广
  • 对高校网站建设的期待seo是搜索引擎吗
  • 苹果手机怎么做ppt下载网站吗搜狗搜索推广
  • 免费行情软件app网站大全入口如何自己做网页
  • 中山企业网站建设公司品牌推广方式有哪些
  • 佛山网站建设公司3lue三亚百度推广公司电话
  • 门户网站怎么做优化湛江百度seo公司
  • dede网站乱码百度站长平台账号购买
  • 网站建设好不好学搜狗推广登录
  • 西安建站模板竞价托管推广哪家好
  • 我的网站现在没有排名_我想问是不是花钱做百度推广就会有排名2022年度关键词
  • 权威的大连网站建设网络营销图片
  • 动易网站后台网站点击量统计
  • 做视频必须知道的一些网站长春网站建设方案咨询
  • 安吉做网站优化游戏性能的软件
  • 免费建购物网站网络营销运营公司
  • 厦门网站制作网页2345网址导航手机版
  • 昆山做网站的那家好百度云网盘官网
  • 网店怎么开啊流程是怎么视频教程西安seo优化排名
  • 建设网站开发搜索引擎优化技术都有哪些
  • 有网站了小程序怎么做百度指数查询官方网
  • 网站建设各个模块的功能武汉seo网站
  • 制作网站的主题最好的推广平台排名
  • 实用写作网站免费外链网站
  • 怎么做asp动态网站上海最新新闻
  • 广东快速做网站公司seo外包大型公司
  • VM2008 做网站青岛百度推广优化怎么做的