exercise6:装饰器的使用
user-credentials.txt内容
1 | {"name":"xiaoming", "password":"123"} |
代码
1 | import json |
output
1 | Enter your username: xiaoming |
user-credentials.txt内容
1 | {"name":"xiaoming", "password":"123"} |
代码
1 | import json |
output
1 | Enter your username: xiaoming |
地图上有 N 个目标,用整数 Xi,Yi , 表示目标在地图上的位置,每个目标都有一个价值 Wi 。
注意:不同目标可能在同一位置。
现在有一种新型的激光炸弹,可以摧毁一个包含 R×R个位置的正方形内的所有目标。
激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 x,y 轴平行。
求一颗炸弹最多能炸掉地图上总价值为多少的目标。
## 输入格式
第一行输入正整数 N 和 R ,分别代表地图上的目标数目和正方形包含的横纵位置数量,数据用空格隔开。
接下来 N 行,每行输入一组数据,每组数据包括三个整数 Xi,Yi,Wi , , ,分别代表目标的 x 坐标,y 坐标和价值,数据用空格隔开。
## 输出格式
输出一个正整数,代表一颗炸弹最多能炸掉地图上目标的总价值数目。
## 数据范围
\(0≤R≤10^9\) \(0<N≤100000\) \(0≤Xi,Yi≤50000\) \(0≤Wi≤10000\)
## 输入样例:
1 | 2 1 |
## 输出样例:
1 | 1 |
首先讲解下什么是二维前缀和
但是本题的特殊之处在于给的目标是在交叉点上,而上面给的是第几个矩阵
解决方法:平移坐标系,原来在坐标轴上的目标就变成了在坐标轴内的目标,进一步就是变成了和原来一样的第几个小正方形
所以先将目标的value填充到对应的方格中,然后计算value的前缀和矩阵,最后利用计算出的前缀和矩阵,通过移动覆盖面积的小方形,以其右下角为基准遍历整个矩阵,计算覆盖面积的最大值
前缀和的灵魂就是将本来时间复杂度\(O(n)\)甚至\(O(n^2)\)的循环遍历求和变成\(O(1)\)
注意:
1 题目中一个坐标处可能有多个目标
2 如果火力覆盖面积比最大的5000还大,那就可以不用遍历直接得到答案
1 | import java.time.chrono.MinguoChronology; |
1 | class Person(object): #objectobject 是所有类的基类,也称为顶级类或根类。在定义类时,如果没有明确指定继承的父类,则默认继承自 object 类,可以省略 |
举个例子
定义一个动物的类
1 | class Animal(object): |
然后实例化一个猫的对象,并且多次引用
1 | cat = Animal('波斯猫') |
发现创建了多个cat对象
如果只删除一个,另外两个还存在
__init__
、__str__
、__add__
等。这些方法在特定的情况下会被Python解释器自动调用,而不需要我们显式地调用它们。举个例子
1 | #定义一个车类 |
定义一个魔法方法
1 | def __str__(self): |
如果类的属性比较多,可以重写__str__()方法打印属性,方便阅读,无需手动调用,当使用print打印对象的时候,自动调用
1 | def __str__(self): |
注:在没有__str__的时候,认为str == repr
1 | import datetime |
总结: repr返回的是字符串,一般用来获取对象
obj == eval(repr(obj)) 这个公式是成立的
1 | class A(object): |
如果有两个类,一个父类,一个子类,定义了同名的方法,如果实例化子类对象调用方法的时候先从子类查找 ,再一级一级往上查找
1 | class Person(object): |
__双下划线后面跟属性名
举个例子
1 | class Person(object): |
1 提出利用自编码器移除GAN指纹
2 创建了一个新数据集、
FAR:False Acceptance Rate",即误接受率,在二元分类问题中,"False Acceptance" 意味着将一个负例(非目标类别)错误地分类为正例(目标类别)
FRR:False Rejection Rate",即误拒绝率,表示在应该被接受的情况下,系统错误地拒绝的比率。
DET Curve:在 DET Curve 上,横轴通常表示 FAR(False Acceptance Rate),纵轴表示 FRR(False Rejection Rate)。曲线上的每个点对应于系统在不同的阈值下的性能。
# Related Work
GAN指纹指图像中GAN's architect,就是所有与真实图像不相关的东西
先在真实图像上训练一个卷积神经网络,然后将GAN图像传入,output的就是去除GAN指纹的图像
通过68个人脸数据点中的眼睛确定人脸位置并且最大程度裁剪掉背景保留人脸
输入一个长度为 n 的整数序列。
接下来再输入 m 个询问,每个询问输入一对 l,r , 。
对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。
第一行包含两个整数 n 和 m 。
第二行包含 n 个整数,表示整数数列。
接下来 m 行,每行包含两个整数 l 和 r ,表示一个询问的区间范围。
共 m 行,每行输出一个询问的结果。
1≤l≤r≤n, 1≤n,m≤100000 −1000≤数列中元素的值≤1000
1 | 5 3 |
1 | 3 |
\(前缀和s[i] = a[1] + a[2] + …… + a[i]\)
1 | import java.util.Scanner; |
小明正在玩一个“翻硬币”的游戏。
桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
比如,可能情形是:**oo***oooo
如果同时翻转左边的两个硬币,则变为:oooo***oooo
现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?
我们约定:把翻动相邻的两个硬币叫做一步操作。
两行等长的字符串,分别表示初始状态和要达到的目标状态。
一个整数,表示最小操作步数
输入字符串的长度均不超过100。 数据保证答案一定有解。
1 | ********** |
1 | 5 |
1 | *o**o***o*** |
1 | 1 |
贪心:如果当前位置不同,那就要翻转当前位置和当前位置的下一位,而当前位置之前的所有位置已经都是调整到和目标一样了
1 | import java.util.Scanner; |
1 | import java.util.Scanner; |
1 | # 使用不定长参数 |
1 | ''' |