我希望2d数组最多接受10 ^ 9的输入。 行和列最多可以达到10 ^ 9。 由于动态分配给我带来了运行时错误,我该如何分配它。
我动态分配了内存,但是当输入为10 ^ 5或更多时,我会遇到运行时错误。 我知道数组将使用10 ^ 9 x 10 ^ 9 x 4字节的内存,而我的堆无法处理该内存,所以我该如何分配它。
public class UserProfile {
@ToString.Exclude
@ApiModelProperty(value = "Linking the UserProfile to the base User object that is used for authentication")
@OneToOne(optional = false)
// Note: Not marking with 'NotNull' annotation since we will not want to update the User object when upserting the UerProfile
@JoinColumn(unique = true, nullable = false, insertable = true, updatable = false)
@JsonIgnoreProperties("userProfile")
private User user;
}
我希望代码在行和列为10 ^ 5时接受输入。 但是我正在关注:
long long int n,m,k,ans=0;
cin>>n>>m>>k;
long long int**a=new long long int*[n+2];
for(long long i=0;i<=n+2;i++){
a[i]=new long long int[m+2];
}
for(long long int i=0;i<=n+1;i++){
for(long long int j=0;j<=m+1;j++)
a[i][j]=0;
}
答案 0 :(得分:4)
10 ^ 9甚至有1个字节元素也是1千兆字节,二维数组是10 ^ 9 ^ 2或1埃字节。使用64位整数,即8艾字节。因此,您需要重新考虑这一点。我认为您实际上将没有绝大多数数据?
例如,您可以使用"rules": {
".read": "auth != null",
".write": "auth != null"
}
或def punto_en_poligono(x, y, poligono):
i = 0
j = len(poligono) - 1
salida = False
for i in range(len(poligono)):
if (poligono[i][1] < y and poligono[j][1] >= y) or (poligono[j][1] < y and poligono[i][1] >= y):
if poligono[i][0] + (y - poligono[i][1]) / (poligono[j][1] - poligono[i][1]) * (poligono[j][0] - poligono[i][0]) < x:
salida = not salida
j = i
return salida
humans1 = e.inference(recto, resize_to_default=(w > 0 and h > 0), upsample_size=args.resize_out_ratio)
poly1 = geometry.Polygon([[450,350],[478,0],[638,0],[638,350],[450,350]])
for j in humans1:
for i in j.body_parts:
try:
pos_X = int(j.body_parts[i].x*960)
pos_Y = int(j.body_parts[i].y*640)
is_Inside = punto_en_poligono(pos_X,pos_Y,poly1)
except:
print("Not working")
。
std::map
您将需要为其定义哈希。在这种情况下,您也可以将两个整数组合为高位和低位,因为长长通常足以容纳两个整数。
std::unordered_map
还有其他方法可以执行“稀疏数组”,并且可能很大程度上取决于您的数据,例如,您是否期望“集群”或所有分布均匀的数据?什么是读/写模式?