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

手机App防沉迷系统-算法

import java.util.*;
public class Main{public static void main(String[] args){Scanner in=new Scanner(System.in);int n=Integer.parseInt(in.nextLine());//已注册app列表List<Log> list=new ArrayList<>();for(int k=0;k<n;k++){String[] str=in.nextLine().split(" ");String name=str[0];int level=Integer.parseInt(str[1]);double begin=transTime(str[2]),end=transTime(str[3]);Log cur=new Log(begin,end,name,level);//冲突标志int conflict=0;for(int i=0;i<list.size();i++){Log pre=list.get(i);// 冲突发生if(check(pre,cur)){conflict=1;//待注册的app优先级更低,不能注册if(pre.level>=cur.level){break;}int j=i+1;boolean flag=true;//扫描pre之后注册的app信息while(j<list.size()){Log tmp=list.get(j);// 存在冲突且已注册app的优先级更高,当前app不能注册if(tmp.begin<cur.end&&tmp.level>cur.level){flag=false;break;}j++;}if(flag){list.remove(i);list.add(cur);}else{break;}                                     }}//未发生冲突,注册if(conflict==0){list.add(cur);}}double query=transTime(in.nextLine());String ans="NA";        for(Log log:list){if(log.begin<=query&&query<=log.end){ans=log.name;break;}}  System.out.println(ans);      }//时间格式转成小时public static double transTime(String s){String[] arr=s.split(":");double ans=0;ans+=Integer.parseInt(arr[0]);ans+=Integer.parseInt(arr[1])*1.0/60;return ans;}//冲突检查public static boolean check(Log pre,Log cur){if(pre.end<=cur.begin||cur.end<=pre.begin){return false;}return true;}
}
class Log{double begin,end;String name;int level;public Log(double begin,double end,String name,int level){this.begin=begin;this.end=end;this.name=name;this.level=level;}
}

注:按照图例,应该不存在两个app注册时间仅有一个交点(相同时刻)的情况,如app1:   09:00-10:00, app2:  10:00-11:00

http://www.lryc.cn/news/346891.html

相关文章:

  • day3_prefixSum
  • Redis过期删除策略和内存淘汰策略有什么区别?
  • 【计算机网络】物理层传输介质 习题3
  • 智能座舱语音助手产品方案
  • 经典面试题之滑动窗口专题
  • 网络编程入门之UDP编程
  • 【AI源码】音频和图片生成你的数字人口播
  • JAVA_3
  • java项目之汽车资讯网站源码(springboot+mysql+vue)
  • C语言中的静态库和动态库的制作和使用
  • 【MySQL 数据宝典】【事务锁】- 002 事务控制的演进
  • 如何远程操作服务器中的Python编译器并将运行结果返回到Pycharm
  • C++入门指南(上)
  • Python 全栈系列244 nginx upstream 负载均衡 踩坑日记
  • 数据链路层——计算机网络学习笔记三
  • leetcode——反转链表
  • 类加载机制(双亲委派机制)
  • nss刷题(2)
  • 2024 年“泰迪杯”A 题:生产线的故障自动识别与人员配置--第四题(用遗传算法解决生产线排班问题--matlab代码)
  • 资产公物仓管理系统|实现国有资产智能化管理
  • 实用的 Google Chrome 命令
  • 动态规划算法:⼦数组、⼦串系列(数组中连续的⼀段)
  • 2010年认证杯SPSSPRO杯数学建模D题(第一阶段)服务网点的分布全过程文档及程序
  • docker-compose 安装ZLMediaKit,ffmpeg、VLC实现推流并播放
  • |Python新手小白中级教程|第二十八章:面向对象编程(类定义语法私有属性类的继承与多态)(4)
  • vue项目基于WebRTC实现一对一音视频通话
  • web 基础之 HTTP 请求
  • 嵌入式 - GPIO编程简介
  • 8种区块链开发者必须知道的顶级编程语言!
  • 十三、Redis哨兵模式--Sentinel