Sum is very important!

Description

聪明的你们一定会求两个数的和啦,是时候考验考验大家啦。

Input

输入包含多组测试数据,对于每组测试用例:

输入一个正整数n( 0 < n < 105 )。

接着输入n个整数Ai( |Ai| < 108 )。

接着输入一个整数k( |Ai| < 108 )。

问:从n个整数中取出两个数a, b(a != b),使得a + b = k的组合种数是多少?

Output

输出组合种数。每组数据占一行。

Sample Input

4
1 2 2 3
5
5
1 2 3 4 5
6

Sample Output

1
2


#include <stdio.h>  
#include <string.h> 
#include <map>
#include<algorithm> 
#define K 11111111 
using namespace std;
 
  
int num[K],k;
int BinSearch(int Array[],int SizeOfArray,int key){  
    int low=0,high=SizeOfArray-1;  
    int mid;  
    while(low<=high){  
        mid=(low+high)/2;  
        if(key==Array[mid]){
            return mid;  
        }  
        if(key<Array[mid])  
            high=mid-1;  
        if(key>Array[mid])  
            low=mid+1;  
    }  
    return -1;  
}  
  
int main(){
    int n,i,b,sum;  
    while(scanf("%d",&n)!=EOF){
        sum=0;
        for(i=0;i<n;i++){
            scanf("%d",&num[i]);
        }
        sort(num,num+n);
        scanf("%d",&k);
        map<int,int> m;
        for(i=0;i<n;i++){
            if(m[num[i]]){
                continue;
            }
            b=k-num[i];
            if((BinSearch(num,n,b)>-1)&&b!=num[i]){
                sum++;
                m[b]=1;
                m[num[i]]=1;
            }   
        }
        printf("%d\n",sum);
    }
    return 0;
}


第一部分: # -*- coding: gbk -*- import os import glob import cv2, math import numpy as np from PIL import Image import random import numpy as np import h5py import os from PIL import Image import scipy.io IMG_EXTENSIONS = [ '.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.ppm', '.PPM', '.bmp', '.BMP', ] #图片转矩阵 def pil_to_np(img_PIL): '''Converts image in PIL format to np.array. From W x H x C [0...255] to C x W x H [0..1] ''' ar = np.array(img_PIL) if len(ar.shape) == 3: ar = ar.transpose(2, 0, 1) else: ar = ar[None, ...] return ar.astype(np.float32) / 255. #矩阵转图片 def np_to_pil(img_np): '''Converts image in np.array format to PIL image. From C x W x H [0..1] to W x H x C [0...255] ''' ar = np.clip(img_np * 255, 0, 255).astype(np.uint8) if img_np.shape[0] == 1: ar = ar[0] else: ar = ar.transpose(1, 2, 0) return Image.fromarray(ar) # 判断文件夹中是否有以上类型图片,没有则返回0 def is_image_file(filename): #如果不都为空、0、false,则any()返回true return any(filename.endswith(extension) for extension in IMG_EXTENSIONS) #返回文件夹内文件绝对路径组成的列表 def make_dataset(dir): images = [] assert os.path.isdir(dir), '%s is not a valid directory' % dir # os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) 通过在目录树中游走输出在目录中的文件名,top返回三项(root,dirs,files),分别代表: # 当前正在遍历的这个文件夹的本身的地址; list类型,内容是该文件夹中所有的目录的名字(不包括子目录); list类型,内容是该文件夹中所有的文件(不包括子目录) for root, _, fnames in sorted(os.walk(dir)): for fname in fnames: #print(fname) #拼接出图片的地址,并加入到images列表 path = os.path.join(root, fname) images.append(path) return images def hazy_simu(img_name,depth_or_trans_name,save_dir,pert_perlin = 0,airlight=0.76,is_imdepth=1,visual_range = [0.05, 0.1, 0.2, 0.5, 1]): """ This is the function for haze simulation with the parameters given by the paper: HAZERD: an outdoor scene dataset and benchmark for single image dehazing IEEE Internation Conference on Image Processing, Sep 2017 The paper and additional information on the project are available at: https://labsites.rochester.edu/gsharma/research/computer-vision/hazerd/ If you use this code, please cite our paper. IMPORTANT NOTE: The code uses the convention that pixel locations with a depth value of 0 correspond to objects that are very far and for the simulation of haze these are placed a distance of 2 times the visual range. Authors: Yanfu Zhang: yzh185@ur.rochester.edu Li Ding: l.ding@rochester.edu Gaurav Sharma: gaurav.sharma@rochester.edu Last update: May 2017 python version update : Aug 2021 Authors : Haoying Sun : 1913434222@qq.com parse inputs and set default values Set default parameter values. Some of these are used only if they are not passed in :param img_name: the directory and name of a haze-free RGB image, the name should be in the format of ..._RGB.jpg :param depth_name: the corresponding directory and name of the depth map, in .mat file, the name should be in the format of ..._depth.mat :param save_dir: the directory to save the simulated images :param pert_perlin: 1 for adding perlin noise, default 0 :param airlight: 3*1 matrix in the range [0,1] :param visual_range: a vector of any size :return: image name of hazy image """
03-24
<think>好的,我现在需要处理用户发送的第一部分代码,并准备相应的解析。首先,用户希望分部分发送代码,然后得到详细的讲解。现在用户已经发送了第一部分,我需要先仔细阅读这部分代码,理解其结构功能,以便后续完整解析。 首先,我看到代码开头有一些导入的库,比如os、glob、cv2、math、numpy、PIL等,这些都是处理图像文件常用的库。接下来定义了一个IMG_EXTENSIONS列表,包含常见的图片扩展名,这可能用于检查文件是否为图像。 然后有几个函数定义:pil_to_npnp_to_pil,这个函数显然是用来在PIL图像numpy数组之间转换的。注意到转换过程中有转置维度的操作,以及归一化到0-1或还原到0-255的步骤。这部分需要注意数据格式的正确转换,特别是通道顺序的变化,比如从HWC转为CWH或者相反。 接下来是is_image_file函数,用来判断文件名是否符合图片扩展名。这里用了any函数生成器表达式,检查文件后缀是否在预定义的列表中。然后make_dataset函数遍历目录,收集所有文件的路径,返回列表。这里用了os.walk,可能会递归子目录,但用户代码中的循环里似乎没有处理子目录,可能需要确认。 再往下是hazy_simu函数,注释提到这是用于模拟雾霾效果的函数,参考了HAZERD数据集的方法。参数包括图片名称、深度或透射图、保存目录,以及其他控制参数如pert_perlin(是否添加Perlin噪声)、airlight(大气光值)、visual_range(能见度范围)等。但函数的实现部分在用户提供的代码中并未完整展示,可能在第二部分。 现在需要整理代码的结构,确定各个模块的功能。比如,第一部分可能涉及图像读取、格式转换、文件处理以及雾霾模拟的初始化部分。关键点包括图像格式转换的正确性、文件路径处理的效率、以及雾霾模拟算法的参数设置。 在准备解析时,需要注意用户提到的系统级指令,比如所有行内数学公式用$...$,独立公式用$$...$$,并且用中文回答。因此,在讲解算法部分时,可能需要涉及大气散射模型,比如使用公式: $$ I(x) = J(x)t(x) + A(1 - t(x)) $$ 其中,I是观测到的有雾图像,J是原始无雾图像,t是透射率,A是大气光。用户代码中的hazy_simu函数可能实现了这个模型,结合深度图或透射图来生成雾霾效果。 同时,需要检查代码中的潜在问题,比如numpy的重复导入(import numpy as np出现了次),这可能不会导致错误,但属于代码冗余。此外,函数参数中的is_imdepth可能需要进一步解释,确定是使用深度图还是透射图。 在关键语法注解部分,需要指出PILnumpy之间的转换步骤,特别是维度的转置归一化处理,这可能会影响后续图像处理的正确性。此外,make_dataset函数使用os.walk,但代码中的循环变量为root, _, fnames,其中下划线可能表示忽略中间变量(如子目录列表),但实际是否处理子目录需要看用户需。 用户可能希望了解如何将深度信息转换为透射率,可能需要数学公式: $$ t(x) = e^{-\beta d(x)} $$ 其中,β是散射系数,d(x)是深度图。透射率与能见距离相关,而visual_range参数可能与此有关。 在模块解析时,可以分图像处理模块(格式转换)、文件处理模块(路径收集)、雾霾模拟模块。其中雾霾模拟模块是核心,涉及物理模型噪声添加。 需要提醒用户的潜在问题包括:确保输入的深度图正确归一化,透射率计算是否正确,以及Perlin噪声的实现是否在第二部分代码中,可能影响最终效果。 最后,总结第一部分代码的主要功能是图像读取、格式转换、路径处理,以及雾霾模拟的准备工作。待用户发送第二部分代码后,结合完整逻辑进行详细解析,包括透射率计算、大气光融合、噪声添加等步骤。</think>以下是对您提供的第一部分代码的初步解析框架: ### 1. 代码功能概述 该代码模块为**图像雾霾模拟系统**的前置处理部分,主要用于: - 图像文件格式转换(PIL↔Numpy) - 文件系统操作(路径检索/验证) - 雾效模拟算法的参数初始化 - 兼容Hazerd论文的大气散射模型框架 ### 2. 模块逐层解析 #### (1)图像格式转换核心 ```python def pil_to_np(img_PIL): ar = np.array(img_PIL).transpose(2,0,1) # HWC→CHW格式转换 return ar.astype(np.float32)/255. # 归一化[0,1] ``` 维度转换公式: $$ \text{CHW}_{numpy} = \text{permute}(\text{HWC}_{PIL}, (2,0,1)) $$ #### (2)文件系统处理 ```python def make_dataset(dir): for root, _, fnames in os.walk(dir): # 递归遍历目录树 path = os.path.join(root, fname) # 构建绝对路径 ``` 文件路径检索采用DFS算法,时间复杂度为: $$ T(n) = O(\sum_{d=0}^{D} N_d) $$ 其中$D$为目录深度,$N_d$为第d层文件数 #### (3)雾效模拟框架 参数解析: ```python def hazy_simu(img_name, depth_or_trans_name, save_dir, ...): # 基于大气散射模型: # I(x) = J(x)t(x) + A(1 - t(x)) # 其中t(x)=e^{-βd(x)}(当使用深度图时) ``` ### 3. 关键语法注解 #### 高危操作预警 ```python ar = ar.transpose(1, 2, 0) # 通道顺序转换需严格对齐张量维度 ``` 建议增加维度校验: ```python assert img_np.shape[0] in [1,3], "Invalid channel dimension" ``` #### 优化建议 ```python # 原代码 images = [] for root, _, fnames in os.walk(dir): for fname in fnames: path = os.path.join(root, fname) images.append(path) # 优化方案(列表推导式) images = [os.path.join(root, fname) for root, _, fnames in os.walk(dir) for fname in fnames] ``` ### 4. 预备知识延伸 大气散射物理模型: $$ I(x) = J(x)t(x) + A(1 - t(x)) $$ 其中: - $I(x)$:观测到的有雾图像 - $J(x)$:原始清晰图像 - $t(x)$:透射率,与场景深度$d(x)$满足: $$ t(x) = e^{-\beta d(x)} $$ - $A$:全局大气光照强度 请继续发送第二部分代码,我将为您整合完整的技术解析,包括: 1. 深度图到透射率的转换实现 2. Perlin噪声的生成算法 3. 多尺度雾效融合策略 4. 结果保存与可视化机制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值