当前位置: 首页 > 编程日记 > 正文

PAT(甲级)2019年春季考试 7-3 Telefraud Detection

1. 这题复杂在诈骗检测算法的理解

怎样的一个人会被判定成嫌疑犯呢?

他打出给别人的累计通话时长的不同的人数大于K

注意:不同累计

怎样的两个人会被判定成同伙呢?

相互之间有通话记录

2. 同伙的合并我采用的并查集,在设置初始父节点时我很纠结,起始可以在合并之前,不管三七二十一的走一遍,把所有结点的父节点设置为自身。

3. 本题还用到了大量哈希存放信息

4. 输出的处理

第一次排序,以这些罪犯的源节点为下标,存进同一个结构体

再把结构体按照人数从大到小排序

第二次排序,把结构体的代表设置为优先队列的首元素

再按照代表从小到大排序

AC代码

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<queue>
#include<string>
#include<map>
#include<vector>
#include<set>using namespace std;const int maxn = 1001;int dura[maxn][maxn] = {0};struct out{int hashTable[maxn] = {0};int num = 0;
};struct in{int hashTable[maxn] = {0};int num = 0;
};out oCall[maxn];
in iCall[maxn];bool fri[maxn][maxn];//每个人的朋友,如果是嫌疑人那就是同伙 struct Gang{int first = maxn;priority_queue<int,vector<int>,greater<int> > Q;
};Gang g[maxn];int gNum = 0;bool cmp(Gang a,Gang b){return a.first<b.first;
}  bool cmp2(Gang a,Gang b){return a.Q.size()>b.Q.size();
}int K;
bool judge(int x){int out = oCall[x].num;int in = iCall[x].num; if(out>K&&5*in<=out)return true;else return false;
}int F[maxn] = {0};int findSource(int x){int a = x;while(x!=F[x]){x = F[x];}while(a!=F[a]){int z = a;a = F[a];F[z] = x;}return x;
}void unite(int a,int b){int sa = findSource(a);int sb = findSource(b);if(sa!=sb)F[sb] = sa;
}int main(){int N,M;scanf("%d %d %d",&K,&N,&M); int c,r,d;//caller receiver durationwhile(M--){scanf("%d %d %d",&c,&r,&d);fri[c][r] = true;dura[c][r] += d;	}for(int i=1;i<=N;i++){for(int j=1;j<=N;j++){if(dura[i][j]>0){if(oCall[i].hashTable[j]==0&&dura[i][j]<=5){oCall[i].hashTable[j] = 1;oCall[i].num ++;}	if(oCall[j].hashTable[i]==1&&iCall[j].hashTable[i]==0){iCall[j].hashTable[i] = 1;iCall[j].num ++;}}}}for(int i=1;i<=N;i++){F[i] = i;}for(int i=1;i<=N;i++){if(judge(i)==1){for(int j=1;j<=N;j++){if(fri[i][j]&&fri[j][i]&&judge(j)==1){unite(i,j);}}	}		}for(int i=1;i<=N;i++){if(judge(i) == 1){int sou = findSource(i);g[sou].Q.push(i);}}sort(g,g+maxn,cmp2);for(int i=0;i<N;i++){if(g[i].Q.size()!=0){g[i].first = g[i].Q.top();gNum ++;}else break;}sort(g,g+maxn,cmp);bool hasSus = false;for(int i=0;i<gNum;i++){int size = g[i].Q.size();for(int j=0;j<size;j++){hasSus = true;printf("%d",g[i].Q.top());g[i].Q.pop();if(j!=size-1)printf(" ");}printf("\n");} if(hasSus == false)printf("None\n");return 0;
}

相关文章:

Linux基础命令---diffstat

diffstat这个程序读取diff的输出&#xff0c;并显示每个文件的插入、删除和修改的直方图。Diffstat是一个用于检查大型复杂修补程序文件的程序。它从包含diff输出的一个或多个输入文件中读取&#xff0c;生成针对引用的每个文件更改的总行的直方图。如果输入文件名以.bz 2、.gz…

两个asp.net发送邮件类

代码 //第一个usingSystem;usingSystem.Text;usingSystem.Net.Mail;namespaceCars.Tootls.Tools{ publicclassEmail { privateEmail() { } ///<summary>///发送邮件 ///</summary>///<param name"Su…

symfony2是什么?

首先&#xff0c;symfony2是一个松散的&#xff0c;独立的&#xff0c;有组织严密的php组件的集合&#xff0c;它可以为你解决一些web开发中一般性的问题。 其次&#xff0c;基于这些组件&#xff0c;php又可以作为一个独立web框架使用。 转载于:https://www.cnblogs.com/ljcph…

PAT(甲级)2019年春季考试 7-2 Anniversary

注意点 1. 记录是不是校友&#xff0c;有两种方法 &#xff08;1&#xff09;map<string,int> mp mo[guest] 1 判断mp[comer] &#xff08;2&#xff09;set<string> st st.insert(guest) st.count(comer) 2. 由于只需要输出年龄最大的&…

根据总用量计算每种包装规格的购买量和总价

最近有这么一个需求&#xff0c;就是给出客户需要的总量&#xff0c;然后根据数据库记录的包装规格&#xff0c;计算出客户需要购买的包装规格种类和个数&#xff0c;而且要保证客户的花费最小。 示例图片效果 示例代码实现如下。欢迎大家一起讨论。 代码 using System;using S…

5个在线调试代码的网站

对于编程开发的人来说&#xff0c;有个快速测试代码的地方是非常方便重要的&#xff0c;这里&#xff0c;我们收集了5个很好用的在线调试网站。 1.codepad 是一款简单的在线 IDE 编辑器服务&#xff0c;你只需要把代码粘贴进去就可以编译运行了&#xff0c;连工程也不需要新建&…

Windows 日志高级筛选实践

背景经常需要查看日志&#xff0c;不仅是用来排错&#xff0c;有些时候我还需要监控系统来抓取特定日志来帮助减少我的工作负担&#xff0c;以及时监控到异常出现&#xff0c;并作出通知及响应&#xff0c;那么从大量日志中快速并精确筛选出想要的日志&#xff0c;并且精确提取…

PAT(甲级)2018年秋季考试 7-1 Werewolf - Simple Version

1. 我设置了一个结构体变量存储每个人的指控信息 struct IF{int type 0;int no; }; 这里我发现了一件事&#xff0c;如果结构体只有有参数的构造函数&#xff0c;那么直接声明该结构体类型的数组是不行的。但是好处是数组知道下标可以直接赋值。 也就是这样组合最好&#x…

appium 启动失败解决方案

本机下载了&#xff1a;AppiumForWindows&#xff0c;启动Appium.exe 的时候&#xff0c;立即提示&#xff1a;应用程序已停止运行&#xff01;&#xff01; 本机环境&#xff1a; WIN 7 64 位&#xff0c;后来查了资料才知道Appium 要求安装.net framework 4.5&#xff0c;本机…

Django基础-数据分页

2019独角兽企业重金招聘Python工程师标准>>> pager.py # -*- coding:utf8 -*- """ 引用说明&#xff1a; 数据总个数&#xff1a;total_count 数据总页数&#xff1a;num_pages 每页显示的行数&#xff1a;perPageItemNum【默认显示10行】 最多显示页…

存货的计划属性设置(ATO模型和PTO模型)

对于原来应用ERP1时已经存在的存货&#xff0c;如果在存货属性中没有进行过设置或者设置不完善&#xff0c;需要进行补充设置。这样的补充设置包括&#xff1a; 自制&#xff1a;具有该属性的存货可由企业生产自制。如工业企业生产的产成品、半成品等存货。具有该属性的存货可用…

(C++)判断一个序列是non-increasing/non-decreasing还是两者都不的两个方法

思路&#xff1a;根据前两个值预设类型&#xff0c;再遍历后面的pair&#xff0c;看是否推翻预设 int judgeType(vector<int> vi){//-1 递减 0 啥也不是 1 递增 if(vi.size()1)return 0;//根据前两个元素的大小设置初始类型int type;if(vi[1]>vi[0])type 1;else …

java 下载文件功能代码例子

public static void down(HttpServletRequest request, HttpServletResponse response) throws Exception { String name"aaa.*";//文件名 String uploadPath UploadFileHelper.getRepositoryPath()"//";//文件来源 String filePath…

不要小看字符串

字符串非常非常常见又重要&#xff0c;而且还有那么多名堂在里面 字符串: 在标准C中&#xff0c;是没有字符串变量的&#xff0c;但是有字符数组。而且标准C带有的标准库函数&#xff1a;string.h中包含了大量的字符串操作函数&#xff0c;当然如果必要的话&#xff0c;你也可以…

零基础学习Python需要注意的几个点,Python培训机构排名

俗话说的好万事开头难&#xff0c;不管你做任何事情&#xff0c;开头的确很较难的&#xff0c;学Python编程也是如此&#xff0c;因此刚开始学Python编程的同学们&#xff0c;就要多借鉴过来人的经验&#xff0c;少走弯路&#xff0c;本文小编就为大家分享几个Python编程小白初…

PAT(甲级)2018年冬季考试 7-4 Heap Paths(非递归与递归解法)

非递归解法 1. 前置知识&#xff1a;完全二叉树的属性 1.1 从1开始存储&#xff0c;子节点的下标除以二得到的是父节点的下标 1.2 数组的存放顺序刚好是层序遍历顺序 1.3 从1开始存储&#xff0c;节点的下标i和结点总数n如果满足 i*2>n说明该结点是叶子结点 2. 思路&am…

Request Connection: Remote Server @ 192.229.145.200:80

录制Loadrunner脚本时&#xff0c;提示&#xff1a;Request Connection: Remote Server 192.229.145.200:80 NOT INTERCEPTED!(REASON: User requested to IGNORE connection)&#xff1b;解决方法&#xff1a;1. 打开IE里的Internet选项&#xff0c;单击连接选项卡。单击最…

抽象工厂与工厂模式例子

NativeFactory。java package com;//定义 人有杀日本人 和 杀美国人两个方法interface NativePerson{ public void killAmeria(); public void killJapan();}//中国人实现了人的接口 class NativeChinese implements NativePerson{ //中国人杀美国人 public void killAmeria() …

《疯狂Java讲义》学习笔记(十)异常处理

2019独角兽企业重金招聘Python工程师标准>>> 0、Java的异常体系 1、异常概述 异常机制已经成为判断一门编程语言是否成熟的标准&#xff0c;目前主流的编程语言都提供了成熟的异常机制&#xff0c;增加了异常处理机制后的程序有更好的容错性&#xff0c;更加健壮 Ja…

PAT(甲级)2018年冬季考试 7-1 Google Recruitment

1. 本题是 substrsscanf的绝佳实践。 2. 判断素数使用i*i<n与i<(int)sqrt(0.1*x)的区别是前者可能再n接近10的9次方时溢出&#xff0c;但本题不会。 3. 尽管把字符串转变成了整数&#xff0c;但输出时仍旧输出字符串&#xff0c;如果选择打印整数&#xff0c;会遇到%0K…

MySQL 的“root”用户修改密码

MySQL 的“root”用户默认状态是没有密码的&#xff0c;所以在 PHP 中您可以使用 mysql_connect("localhost","root","") 来连接 MySQL 服务器&#xff1b;如果您想为 MySQL 中的“root”用户设置密码&#xff0c;请在控制台中使用“mysqladmin”…

游戏AI之初步介绍(0)

目录 游戏AI是什么&#xff1f;游戏AI和理论AI智能的假象&#xff08;更新&#xff09;游戏AI和机器学习介绍一些游戏AI4X游戏AI《求生之路》系列角色扮演/沙盒游戏中的NPC游戏AI 需要学些什么&#xff1f;自治智能体群体智能感知状态机&#xff08;重要&#xff09;行为树&…

Google Adsense实用防踢技巧总结

我们都知道&#xff0c;对个人草根站长来说&#xff0c;Google AdSense是网站收入的主要来源之一&#xff0c;我在这里介绍一些常用的技巧。 希望通过这些技巧能够增加大家的Google AdSense收入&#xff0c;并防止自己的帐号被删除。大家喜欢的话就顶下吧&#xff01; 广告的位…

PAT(甲级)2018年冬季考试 7-3 Vertex Coloring

1. 起先我的思路是&#xff0c;对于每一种方案&#xff0c;把相同颜色的下标放到一个集合&#xff0c;对于每一个集合判断里面的元素互相之间是否有着邻接关系。有一个用例超时&#xff0c;20/25。 2. 转变思路&#xff0c;对于每一种方案&#xff0c;遍历邻接关系&#xff0c…

蚂蚁金服×西安银行 | 西安银行手机银行App的智能升级之路

小蚂蚁说&#xff1a;当前&#xff0c;数字化信号已经逐渐深入到社会的每个角落&#xff0c;影响着用户的心智和行为&#xff0c;来到数字化时代门口的银行&#xff0c;需要注意到数字化信号。西安银行通过引入蚂蚁金服移动开发平台mPaaS&#xff0c;对手机银行进行架构升级&am…

(四十七)Quartz2D引擎初步

Quartz2D是跨平台的&#xff0c;同时支持iOS与Mac。 支持圆型裁剪&#xff0c;可以实现圆形头像等功能&#xff0c;也支持手势解锁、折线图等的制作。 对于复杂的UI界面&#xff0c;还可以通过Quartz2D将控件内部的结构画出来&#xff0c;可用于自定义控件。 实际上iOS大部分控…

PAT(甲级)2018年冬季考试 7-2 Decode Registration Card of PAT

目录 体会 代码(非满分) 改进 AC代码 体会 这题主要是考察对STL中string,map,vector的应用以及自定义sort()应用。 类型1和2的处理很容易。 类型3要求对于指定date&#xff0c;按照每个考场进行分类&#xff0c;记录不同考场的人数&#xff0c;按照人数非升序&#xff…

DOS、Mac 和 Unix 文件格式+ UltraEdit使用

文件格式 区分DOS、Mac 和 Unix分别对应三种系统从文件编码的方式来看&#xff0c;文件可分为ASCII码文件和二进制码文件两种文件模式 区分ASCII模式和Binary模式 通常由系统决定&#xff0c;大多数Linux/UNIX系统只有两种模式&#xff1a;文本模式和二进制模式。文本传输器使用…

灰度图像--图像分割 Scharr算子

学习DIP第46天 转载请标明本文出处&#xff1a;http://blog.csdn.net/tonyshengtan &#xff0c;出于尊重文章作者的劳动&#xff0c;转载请标明出处&#xff01;文章代码已托管&#xff0c;欢迎共同开发&#xff1a; https://github.com/Tony-Tan/DIPpro 更多图像处理机器学习…

FileUpload生成图片水印,文字水印(转载)

/** <summary>/// 生成缩略图/// </summary>/// <param name"originalImagePath">源图路径&#xff08;物理路径&#xff09;</param>/// <param name"thumbnailPath">缩略图路径&#xff08;物理路径&#xff09;</para…