CSP防疫大数据(Java)

javascript权威指南 javascript权威指南,javascript开发难得的好书,适合作为工具书或者入门书。 立即下载

从题目上看还是常规的模拟大题,我感觉考察的算法不是很多,关键还是对数据结构的理解,以及如何更好的利用STL。另一方面,网上基本上都是c++,身为Java爱好者所以打算也写一下。(个人觉得写的有些冗余不过可以AC,凑合看吧)


import java.io.*;
import java.util.*;
class Node{
    int s;int e;//s:开始时间(包含) e:结束时间(不包含)
    Map<Integer,Integer> user;//用来存放该地区的人员,key:UID value:人员死亡时间(没更新只能活七天)
    Node(int s,int e){
        this.e=e;
        this.s=s;
        user=new TreeMap<>();//TreeMap根据key默认递增排序
    }
}

public class Main {

    public static void main(String[] args) throws IOException {
        read in=new read();

        PrintWriter pw=new PrintWriter(System.out);
        Map<Integer,Node> ps=new HashMap<>();//用来存风险区,key:ID value:风险区的信息
        int n=in.nextInt();
        int day=0;//统计当前是那天
        while (n-->0){
            int r=in.nextInt();
            int m=in.nextInt();
            //处理风险区
            while (r-->0){
                int p=in.nextInt();
                //true:包含且当前风险区还没过期
                if (ps.containsKey(p)&&ps.get(p).e>=day){
                    ps.get(p).e=day+7;//风险区没有延时所以直接生命周期加7
                }else {
                    ps.put(p,new Node(day,day+7));
                }
            }
            //处理人员活动信息
            while (m-->0){
                int d=in.nextInt();
                int u=in.nextInt();
                int ru=in.nextInt();

                if (day-d>=7&&d<0)continue;//7天前的和日期为负数的跳过
                if (ps.containsKey(ru)){//判断当前ru是不是风险区
                    if (d>=ps.get(ru).s&&d<ps.get(ru).e){//人去的时候是不是风险区间
                        if (ps.get(ru).user.containsKey(u)){//风险区之前有没有记录过此人
                            ps.get(ru).user.replace(u,Math.max( ps.get(ru).user.get(u),d+7));
                            //当前记录可能在原纪录之前或者之后,所以选活的最久的
                        }else {
                            ps.get(ru).user.put(u,d+7);//没记录过就直接扔进去
                        }
                    }


                }

            }
            Set<Integer> set=new TreeSet<>();//记录当天要输出信息,TreeSet去重加排序
            
            //此处用来更新风险区和过期人员,(提一句Map遍历过程中要进行删除操作时不能用for循环!)
            Iterator<Map.Entry<Integer,Node>> it=ps.entrySet().iterator();
            while(it.hasNext()){
                Map.Entry<Integer,Node> entry = it.next();
                Node p=entry.getValue();
                if(p.e<=day){//已经不是风险区
                    it.remove();
                }else if (!p.user.isEmpty()){//是风险区且名单上有人
                    Iterator<Map.Entry<Integer,Integer>> it2=p.user.entrySet().iterator();//遍历名单
                    while(it2.hasNext()){
                        Map.Entry<Integer,Integer> entry2 = it2.next();
                        int p2=entry2.getValue();
                        if (p2>day)//判断是不是最近7天的
                            set.add(entry2.getKey());
                        else
                            it2.remove();
                    }
                }
            }


            pw.printf("%d ",day);
            for (Integer i:set)
                pw.printf("%d ",i);
            pw.println();

            day++;
        }

        pw.flush();


    }
}
//多输入输出都要用,懂得都懂
class read{
    StreamTokenizer st=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    int nextInt() throws IOException {
        st.nextToken();
        return (int)st.nval;
    }
    long nextLong() throws IOException {
        st.nextToken();
        return (long)st.nval;
    }

    String next() throws IOException {
        st.nextToken();
        return st.sval;
    }
}


总体思路就是创建一个风险区对象然后维护风险区的时间,风险区对象里面又包含一个人员列表,来统计来过此风险区的人,输出的时候就遍历全部风险区的人员列表。每天结束时处理一下过期的风险区或人。


另外提供一个数据生成器(参数可以自己改,建议n不要过大),往往知道自己为什么错比看别人的解法更加解压。微笑.jpg

public class tt {
    public static void main(String[] args) {

        Random random=new Random();
        int n=random.nextInt(30);
        int day=1;
        System.out.println(n);
        while (n-->0){
            int r=random.nextInt(10);
            int m=random.nextInt(10);
            System.out.printf("%d %d ",r,m);
            for (int i=0;i<r;i++){
                int p=random.nextInt(50);
                System.out.printf("%d ",p+1);
            }
            System.out.println();
            for (int i=0;i<m;i++){
                int d=random.nextInt(day);
                int u=random.nextInt(15);
                int ru=random.nextInt(50);
                System.out.printf("%d %d %d\n",d,u,ru);
            }
            day++;
        }
    }
}
EMD (经验模态分解) 在 C++ 中的实现指南 EMD 是由 Norden E. Huang 等人在1998年提出的一种适用于非线性和非平稳信号的分析方法。对称性:IMF 的上下包络对称。零交叉点:IMF 的零交叉点数量与极值点数量相同或相差一个。本文详细介绍了如何在C++中实现EMD,包括理论背景、算法步骤、代码实现和优化等内容。通过丰富的代码示例和详细的解释,希望能够帮助读者掌握EMD的基本原理,并能够在实际项目中灵活应用。未来,随着信号处理技术的不断发展,EMD及其变种(如EEMD、CEEMDAN等)将继续在各个领域发挥重要作用。 阅读详情

相关推荐

一文详解心电图(ECG)监测原理

介绍心电图的监测原理,从心电信号产生、获取到心电图的基本组成

m0_50146396的博客 3287

csp试题 202303-1 田地丈量(Java)

每块田地可视为平面直角坐标系下的一块矩形区域,由左下角坐标 (x1,y1)和右上角坐标(x2,y2) 唯一确定,且满足x1<x2、y1<y2。最近,顿顿想要在南山脚下开垦出一块面积为a*b 矩形田地,其左下角坐标为(0,0) 、右上角坐标为(a,b)。输入的第一行包含空格分隔的三个正整数 n、a 和b ,分别表示西西艾弗岛上田地块数和顿顿选定区域的右上角坐标。接下来 n 行,每行包含空格分隔的四个整数x1 、y1、x2 和y2 ,表示一块田地的位置。输出一个整数,表示顿顿选定区域内的田地面积。

qq_55165605的博客 887

利用ADS设计射频功率放大器

利用ADS设计射频功率放大器 任务: 用飞思卡尔公司的功率放大器芯片ATF27s006NT1设计射频功放,芯片频率范围可达450MHz-3.6GHz。 功放指标: (1) 工作频率:500MHz (2) 增益:G>20dB (3) 电源:+28V (4) 最大输出功率:2W(33dBm) 设计思路 (1)安装DesignKit模型; (2)直流DC扫描; (3)稳定性分析; (4)偏置电路设计及整...

UVM频率 3万+

题397.csp-2209 P1如此编码&P2何以包邮?&P3防疫大数据

csp

Adongua的博客 310

告别安装报错!保姆级教程:用阿狸狗破戒大师V3.2.6搞定Cadence 17.4完整安装与补丁

本文提供Cadence 17.4的完整安装与破解教程,特别针对国内用户常见问题优化。从前期准备、镜像处理到阿狸狗破戒大师V3.2.6的智能破解,再到补丁管理与性能调优,详细指导每一步操作,确保一次性安装成功并提升设计效率。

weixin_30632089的博客 835

raw_count、tpm、fpkm、rpkm如何选择

转录组测序中常见的数据类型有:raw_count、tpm、fpkm、rpkm。本文进行简单辨析: 一、概念 1 raw_count RNA-seq数据中,raw_count一般是指mapped到基因外显子区域的reads数目。比如说htseq,STAR,或者RSEM等NGS分析流程计算产生的counts值。其中RSEM(RNA-Seq by Expectation-Maximization),考虑到一条read 可能会匹配多个exon位置,故而其产生的为expected_count。 2 TPM

weixin_59289660的博客 1万+

CCF-CSP真题《202209-3—防疫大数据》思路+python题解

本文为大家用python题解了CCF-CSP真题《202209-3—防疫大数据》,希望对你有帮助~~

weixin_53919192的博客 8452

CATIA二次开发——遍历几何图形集下的轴系及控制轴系生成位置

CATIA二次开发——轴系相关问题1.遍历几何图形集下的轴系2.解决轴系生成位置的问题 1.遍历几何图形集下的轴系 近期遇到的问题:遍历轴系的时候发现,AxisSystem属性的轴系只有放在轴系集合下,才能被找到,放在几何图形集或其他位置均不能被找到。本来想遍历几何图形集下的轴系元素,但是发现没有对应的属性,只能查找 几何图形集、几何元素、草图等元素,无法直接遍历轴系。 解决办法:(加入选择集,在选择集中筛选轴系类型) HybridBody axisHB = activePart.HybridBodies

WorkMan的博客 2731

CSP-防疫大数据

是不是最简单的!60行AC!

Schwertlilien的小屋 367

docker-compose Install OrangeHRM

OrangeHRM是一个全面的人力资源管理HRM) 系统,它包含任何企业所需的所有基本功能。OrangeHRM旨在支持任何规模的团队,包括初创企业、中小企业以及大型跨国组织。

极致,细节 1004

Qt图形几何之QRect详解:从基础操作到高级功能全解析

本文全面介绍了Qt框架中的QRect类,详细解析了其核心功能和使用方法。主要内容包括:1)QRect的基本概念与多种构造函数;2)矩形属性获取和状态判断方法;3)几何操作函数(移动、调整大小等);4)几何关系判断(包含、相交等);5)坐标变换和边距处理;6)实用功能与QRectF转换;7)综合应用示例(图形界面、碰撞检测、布局管理);8)性能优化建议和常见陷阱。通过丰富的代码示例,展示了QRect在Qt图形编程中的实际应用,帮助开发者掌握矩形处理的各项操作技巧,提升图形界面开发效率。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 117

CSP认证 202209第三题100分题解:防疫大数据(c++)

根据每天输入的风险区更新风险区列表map area,主键为日期,存储该日期下的风险区列表。同样的形式存储结果列表,以multiset存储漫游数据。遍历每天,更新风险区列表,将漫游数据存储。首先去除六天前的漫游数据,然后检测从漫游数据当天到今天该条漫游数据去的地点是否仍是风险区,注意风险区需连续,如示例第六天到第八天中间1不是风险区。

qq_48610649的博客 571

​​10.3 时间敏感网络(TSN)协议适配​

本文探讨了时间敏感网络(TSN)协议在PCIe网络加速卡开发中的适配方案,重点分析了时间同步、流量调度和冗余传输三大核心问题。研究从协议实现、硬件加速设计和驱动优化三个维度展开,提出采用FPGA实现PTP时钟同步、动态TAS调度器以及双路径冗余传输等技术方案。通过工业控制网络案例验证,该方案将端到端延迟从120μs降至8μs,带宽利用率提升至92%,同时实现了100%的确定性保障。研究还总结了调试工具和典型问题解决方法,为TSN在PCIe网络中的实际应用提供了技术参考。

amy_mhd的博客 364

CSP202209 03.18 JAVA 如此编码 何以包邮? 防疫大数据 吉祥物投票 高维亚空间超频物质变压缩技术 持续更新欢迎交流..

既然不能通过枚举所有的情况来找到答案 ,那肯定是有一种途径来找到最优解,所以自然的联想到了dp(动态规划);可以转化为先求书的总价sum,再用sum减去x得y,问题就变成了寻找不超过y(达到包邮条件)的最大数字组合,再用总价减去这个数字组合,即可得到最终答案。寻找不超过y的最大数字组合,这种类型就是典型的背包问题。递推关系式:v[i]:各商品价值 w[i]:各商品重量 (这里书的重量就是它的价值)子问题:当前背包容量j,前i个物品最佳组合对应的价值。处理数据时按照风险名单判定来处理。

weixin_45322373的博客 836

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

CCF-CSP 第一题通用解法:字符串哈希与计数,5种语言(C++/Java/Python)对比

本文详细解析了CCF-CSP认证考试第一题的通用解法,重点介绍了字符串哈希与频次统计的高效实现方法,并提供C++、Java和Python三种语言的代码对比。通过实战案例和技术细节分析,帮助考生掌握基础算法应用,提升编程能力与应试效率。

weixin_33898233的博客 1522

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

防疫大数据csp

建立日期和风险地区集合的映射,建立日期和风险用户集合的映射,每当在第i天收到风险地区列表时,其后七天该地区也为风险地区,直接加入,再清空第i天的前七天及更早时候的漫游数据,遍历漫游数据,判断涉及的地区是否从漫游时间d到当天i一直为风险地区,若是,则将其用户加入风险用户列表。

m0_64652057的博客 340

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

防疫大数据 CSP CCF

防疫大数据

qq_43465670的博客 408

CSP认证202209-3:防疫大数据

CCF-CSP刷题记录~

weixin_51954774的博客 999

【CSP】2022–09-3 防疫大数据 100分 STL大模拟 使用map优化索引 有坑得注意

记录了本人刷csp过程中的发现的错误、解题过程和收获,希望会你对解题和学习有一定的帮助。

m0_65708726的博客 1200

CSP-202209-3-防疫大数据

对于大模拟的题,合适的数据结构选择十分重要,正确的数据结构选择能够有效的提升解题效率// 漫游消息结构体// 存储漫游消息// 每个地区的风险区持续时间// 每个地区是否曾被设为风险区map是 C++ 标准库中的关联容器,实现了一个有序的键-值映射。每个元素都是一个包含键和值的键值对。有序性map中的元素是按照键的大小进行排序的,默认是升序。唯一键:每个键在map中是唯一的,因此每个键只能对应一个值。如果插入重复键,新值会替代旧值。查找效率map。

fzy2003的博客 1104

CSP认证2022-09:如此编码、何以包邮?、防疫大数据,python满分解答代码

第27次CCF计算机软件能力认证前三题:如此编码、何以包邮?、防疫大数据,python满分解答代码。

qq_53644346的博客 2170

202209(第27次)CSP真题202209-3 防疫大数据

此题参考了其他博主的解法,主要题目太长,其实只要懂了逻辑,并不是很难,下次遇到这种题,一定要仔细读题。

weixin_52050936的博客 2974

CSP202209-3防疫大数据

【代码】CSP202209-3防疫大数据。

追风小小少年的博客 599

CSP 202209题解:如此编码,何以包邮,防疫大数据,吉祥物投票,高维亚空间超频物质变压缩技术

CSP202209全部满分题解:如此编码,何以包邮,防疫大数据,吉祥物投票,高维亚空间超频物质变压缩技术

fmy_xfk的博客 3926

CCF CSP认证2022年9月题解 防疫大数据

考前哇十发,考试顶呱呱。

qq_23096319的博客 523

第27次CCF CSP(202209) T3非常详细题解 防疫大数据(C++)

第27次CCF CSP(202209) T3非常详细题解 防疫大数据(C++)

qq_42938235的博客 4192
上一篇: ZZULIOJ JAVA T1080-T1089
下一篇: CSP角色授权(Java)
极星ZERO
博客等级 码龄7年 22粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值