2021Robocom决赛---账户安全预警

2023-11-05

拼题 A 系统为提高用户账户的安全性,打算开发一个自动安全预警的功能。对每个账户的每次登录,系统会记录其登录的 IP 地址。每隔一段时间,系统将统计每个账户从多少不同的 IP 地址分别登录了多少次。如果某个账户的登录 IP 超过了 TIP​ 种,并且登录过于频繁,超过了 Tlogin​ 次,则会自动向管理员发出警报。

下面就请你实现这个预警功能。

输入格式:

输入首先在第一行中给出三个正整数:N(≤1e4)为登录记录的条数;TIP​ 和
Tlogin​,定义如题面中所描述,均不超过 100。

随后 N 行,每行格式为:e

账户邮箱 IP地址

其中 账户邮箱 为长度不超过 40 的、不包含空格的非空字符串;IP地址 为形如 xxx.xxx.xxx.xxx 的合法 IP 地址。

输出格式:

按照登录所用不同 IP 的数量的非递增顺序,输出每个预警账户的信息。格式为:

账户邮箱
IP1 登录次数
IP2 登录次数
……

其中 IP 按登录次数的非递增顺序输出,如有并列,则按 IP 的递增字典序输出。此外,对所用不同 IP 的数量并列的用户,按其账户邮箱的递增字典序输出。

另一方面,即使没有账户达到预警线,也输出登录所用不同 IP 的数量最多的一批账户的信息。

输入样例 1:

24 3 4
daohaole@qq.com 218.109.231.189
1jiadelaolao@163.com 112.192.203.187
chenyuelaolao@zju.edu.cn 112.18.235.143
jiadelaolao@163.com 112.192.203.187
chenyuelaolao@zju.edu.cn 113.18.235.143
jiadelaolao@163.com 111.192.203.187
daohaole@qq.com 218.109.231.189
chenyuelaolao@zju.edu.cn 111.18.235.143
1jiadelaolao@163.com 115.192.203.187
daohaole@qq.com 113.189.58.141
1jiadelaolao@163.com 111.192.203.187
daohaole@qq.com 112.18.58.145
1jiadelaolao@163.com 114.192.203.187
chenyuelaolao@zju.edu.cn 112.18.235.143
daohaole@qq.com 123.89.158.214
chenyuelaolao@zju.edu.cn 112.18.235.143
youdaohaole@qq.com 218.109.231.189
jiadelaolao@163.com 113.192.203.187
youdaohaole@qq.com 218.109.231.189
jiadelaolao@163.com 114.192.203.187
youdaohaole@qq.com 113.189.58.141
youdaohaole@qq.com 123.89.158.214
1jiadelaolao@163.com 113.192.203.187
youdaohaole@qq.com 112.18.58.145

输出样例 1:

1jiadelaolao@163.com
111.192.203.187 1
112.192.203.187 1
113.192.203.187 1
114.192.203.187 1
115.192.203.187 1
daohaole@qq.com
218.109.231.189 2
112.18.58.145 1
113.189.58.141 1
123.89.158.214 1
youdaohaole@qq.com
218.109.231.189 2
112.18.58.145 1
113.189.58.141 1
123.89.158.214 1

输入样例 2:

24 5 8
daohaole@qq.com 218.109.231.189
1jiadelaolao@163.com 112.192.203.187
chenyuelaolao@zju.edu.cn 112.18.235.143
jiadelaolao@163.com 112.192.203.187
chenyuelaolao@zju.edu.cn 113.18.235.143
jiadelaolao@163.com 111.192.203.187
daohaole@qq.com 218.109.231.189
chenyuelaolao@zju.edu.cn 111.18.235.143
1jiadelaolao@163.com 115.192.203.187
daohaole@qq.com 113.189.58.141
1jiadelaolao@163.com 111.192.203.187
daohaole@qq.com 112.18.58.145
1jiadelaolao@163.com 114.192.203.187
chenyuelaolao@zju.edu.cn 112.18.235.143
daohaole@qq.com 123.89.158.214
chenyuelaolao@zju.edu.cn 112.18.235.143
youdaohaole@qq.com 218.109.231.189
jiadelaolao@163.com 113.192.203.187
youdaohaole@qq.com 218.109.231.189
jiadelaolao@163.com 114.192.203.187
youdaohaole@qq.com 113.189.58.141
youdaohaole@qq.com 123.89.158.214
1jiadelaolao@163.com 113.192.203.187
youdaohaole@qq.com 112.18.58.145

输出样例 2:

1jiadelaolao@163.com
111.192.203.187 1
112.192.203.187 1
113.192.203.187 1
114.192.203.187 1
115.192.203.187 1

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e4+5;
int n,p,q,idx;
map<string,int>mp;
struct node{
	int cnt;
	string id;
	map<string,int>s;
}a[N];
struct ans{
	string p;
	int k;
};
bool cmp(node a,node b){ return a.s.size()==b.s.size()?a.id<b.id:a.s.size()>b.s.size();}
bool cmp1(ans a,ans b){ return a.k==b.k?a.p<b.p:a.k>b.k;}
int main(){
	scanf("%d%d%d",&n,&p,&q);
	for(int i=1;i<=n;i++){
		string x,y;
		cin>>x>>y;
		if(mp.count(x)==0){
			mp[x]=++idx;
			a[mp[x]].id=x;
		}
		a[mp[x]].cnt++;
		a[mp[x]].s[y]++;
	}
	vector<node>res;	//存放答案 
	for(int i=1;i<=idx;i++){
		if(a[i].cnt>q&&a[i].s.size()>p)
			res.push_back(a[i]);
	}
	sort(res.begin(),res.end(),cmp);	//账户排序 
	for(int i=0;i<res.size();i++){
		cout<<res[i].id<<endl;
		vector<ans>t;
		for(auto it:res[i].s) t.push_back({it.first,it.second});
		sort(t.begin(),t.end(),cmp1);	//IP排序 
		for(auto it:t) cout<<it.p<<" "<<it.k<<endl;
	}
	if(res.size()>0) return 0; //存在预警,则直接结束,否则输出最大的一批用户 
	int maxx=0;
	for(int i=1;i<=idx;i++) maxx=max(maxx,int(a[i].s.size()));
	for(int i=1;i<=idx;i++){
		if(a[i].s.size()==maxx)
			res.push_back(a[i]);
	}
	sort(res.begin(),res.end(),cmp);
	for(int i=0;i<res.size();i++){
		cout<<res[i].id<<endl;
		vector<ans>t;
		for(auto it:res[i].s) t.push_back({it.first,it.second});
		sort(t.begin(),t.end(),cmp1);
		for(auto it:t) cout<<it.p<<" "<<it.k<<endl;
	}
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021Robocom决赛---账户安全预警 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • gdb调试core文件快速定位core dump位置

    core dump又叫核心转储 当程序运行过程中发生异常 程序异常退出时 由操作系统把程序当前的内存状况存储在一个core文件中 叫core dump linux中如果内存越界会收到SIGSEGV信号 然后就会core dump 在程序运行
  • JAVA基于web的图片资源库管理系统的设计与实现

    本系统是一种基于B S架构的图片资源管理系统 它采用目前最流行的Java语言编写 用到了当今先进的技术如 JSP技术 Hibernate Spring Struts框架等来实现该系统 系统分为五大模块 图片夹列表模块 新建图片夹模块 修改资
  • 升降压电路的设计和分析

    Power Management 主板供电电路 电源管理电路 升降压电路 一 前言 基于锂电池放电电压 V TO SYS 为3 7V 4 2V之间波动 当充满电时为 4 2V 先缓慢放电到3 7 然后从3 7相对较快的速率放电到3 2V 大
  • Java:字符串的创建

    package Basement Author Guojiang Date 2023 01 06 14 48 Description public class test12 public static void main String ar
  • 《西瓜书》决策树

    一 决策树基本概念 一 组成部分 1 根节点 第一个被选中的最优划分属性 2 内部节点 属性测试 3 叶节点 决策结果 二 基本思想 1 分而治之 将一个问题分成多个和原问题相似的小问题 递归解决小问题 再将结果合并以解决原来的问题 2 递
  • 使用npm下载依赖包时,-s 和 -d 的区别

    1 S npm install element plus save 会把依赖包名称添加到package json 文件的 dependencies 2 d npm install webpack webpack cli D 会把依赖包名称添
  • Blender里的三种绑定 (三)骨骼

    文章目录 Blender里的三种绑定 骨骼 骨骼基础 骨骼的父子关系 挤出骨骼 细分骨骼 骨骼分层 骨骼分组 骨骼约束 骨骼被遮挡 对称骨骼 为模型绑定骨骼 刚体物体 只跟随骨骼的移动 不随骨骼移动发生形变 如机械 软体物体 跟随骨骼的移动
  • NVIDIA显卡、显卡驱动、可安装的CUDA版本、Pytorch

    1 NVIDIA显卡 随着显卡的发展 GPU越来越强大 而且GPU为显示图像做了优化 在计算上已经超越了通用的CPU 如此强大的芯片如果只是作为显卡就太浪费了 因此NVIDIA推出CUDA 让显卡可以用于图像计算以外的目的 只有G80 G9
  • stm32 HardFault_Handler调试及问题查找方法

    原文地址 http www 51hei com bbs dpj 39846 1 html 相关文章 1 STM32 出现 hardfault handler 处理方法 http blog csdn net sunjiajiang artic
  • 回溯法(以DFS为例)例题总结

    回溯法 以DFS为例 例题总结 框架 定义一个结果数组 self result def dfs candidates res 满足题目 返回条件 if target sum res self result append res for i
  • 解决 Mac 中英文切换频繁出错(删除 ABC)

    Mac 常遇到想输入中文却输出英文 反之亦然 多次切换很麻烦 下面介绍两种方案来解决此问题 如果担心隐私不用搜狗 百度 又不想用自带输入法 可以选择鼠须管 方案一 禁用第三方输入法切换英文 例如搜狗输入法只输出中文 设置按键 状态切换 中英
  • java理论知识浙大_java 理论知识(-)

    关键字和保留字区别 关键字 keyword 表示一种数据类型 或者表示程序的结构等 保留字 reserved word 为java预留的关键字 以后的升级版本中可能作为关键字 支持概念 1 多态 2 继承 3 封装 4 抽象 5 类 6 对
  • deep learning: deep feedforward network (output and hidden layer)

    deep forward networks feedforward neural networks multiplayer perceptrons MLP input layer hidden layer output layer acti
  • rpm 安装时提示缺少依赖库

    在麒麟系统下安装ecryptfs utils 82 6 ky3 3 x86 64 rpm 该软件包在 麒麟光盘的 KYLIN目录下 使用如下命令 rpm ivh ecryptfs utils 82 6 ky3 3 x86 64 rpm 提示
  • 循环数组有几种方法?

    第一种 普通for循环 for i 0 i
  • H3C交换机SSH配置举例

    注 本文仅供个人学习参考 禁止用作商业用途 因他人转载产生纠纷 本人不承担任何责任 password认证配置举例 1 组网需求 如图 配置Host SSH客户端 与Switch建立本地连接 Host采用SSH协议登录到Switch上 以保证
  • Unity3d--实现太阳系仿真

    一 实验要求 写一个程序 实现一个完整的太阳系 其他星球围绕太阳的转速必须不一样 且不在一个法平面上 二 实验过程 创建如下结构 solar 里包括太阳和8大行星 并且设置好距离和大小 在网上找到相应贴图 添加到assets 将贴图拖动到对
  • Vue中的侦听器:数据变化的秘密揭示

    一 侦听器 vue中想监听数据的变化 一 侦听器watch 如何侦听到某个变量值改变呢 使用watch配置项 watch 可以侦听到data computed属性值的改变 语法 watch 被侦听的属性名 newVal oldVal 快速入
  • 2021全国职业技能大赛-网络安全赛题解析———防火墙篇iptables(超详细)

    2021全国职业技能大赛 网络安全赛题解析 防火墙篇 模块A防火墙的基本规则操作 什么是防火墙 iptables 有问题私信博主 模块A防火墙的基本规则操作 什么是防火墙 iptables IPTABLES 是与最新的 3 5 版本 Lin
  • 2021Robocom决赛---账户安全预警

    拼题 A 系统为提高用户账户的安全性 打算开发一个自动安全预警的功能 对每个账户的每次登录 系统会记录其登录的 IP 地址 每隔一段时间 系统将统计每个账户从多少不同的 IP 地址分别登录了多少次 如果某个账户的登录 IP 超过了 TIP