HDOJ2141(map在二分搜索中的应用)

#include<iostream>
#include<cstdio>
#include<map>
#include<algorithm>
using namespace std ;
#define M 500 + 10
int a[M] ;
int b[M] ;
int c[M] ;
int d[M] ;
int l ;
int n ;
int m ;
map <int , bool > Map ;
void Marge()
{
    for(int i = 0 ;i < l ; ++ i)
        for(int j = 0 ;j < n ; ++ j)
            Map[a[i] + b[j]] = 1 ;
}
bool Check(int x)
{
    int tem ;
    for(int i = 0 ;i <l ; ++ i)
    {
        tem = x - c[i] ;
        if(Map.count(tem))    return    true ;
    }
    return false ;
}
int main()
{
    int s ;
    int x ;
    int T = 1 ;
    while(scanf("%d%d%d",&l ,&n , &m) != EOF )
    {
        for(int i = 0 ;i < l ; ++ i)
            scanf("%d",a + i) ;
        for(int i = 0 ;i < n ; ++ i)
            scanf("%d",b + i) ;
        for(int i = 0 ;i < m ; ++ i)
            scanf("%d",c + i) ;
        scanf("%d",&s) ;
        printf("Case %d:\n",T ++) ;
        Marge() ;
        while(s --)
        {
            scanf("%d",&x) ;
            if(Check(x)) puts("YES") ;
            else puts("NO") ;
        }
        Map.clear() ;
    }
    return 0 ;
}

标准二分搜索代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std ;
const int MAX_N=500;
int a[MAX_N];
int b[MAX_N];
int c[MAX_N];
int d[MAX_N*MAX_N];
int l, n, m, s;
int main()
{
    int t=0;
    while(scanf("%d %d %d",&l, &n, &m)!=EOF)
    {
        for(int i=0; i<l; i++)
        {
            scanf("%d",&a[i]);
        }
        for(int i=0; i<n; i++)
        {
            scanf("%d",&b[i]);
        }
        for(int i=0; i<m; i++)
        {
            scanf("%d",&c[i]);
        }
        for(int i=0; i<l; i++)
        {
            for(int j=0; j<n; j++)
            {
                d[i*n+j]=a[i]+b[j];
            }
        }
        sort(d,d+l*n);
        scanf("%d",&s);
        printf("Case %d:\n",++t);
        while(s--)
        {
            int x;
            scanf("%d",&x);
            bool flag=false;
            for(int i=0; i<m; i++)
            {
                if(binary_search(d,d+l*n,x-c[i]))
                {
                    flag=true;
                    break;
                }
            }
            if(flag)
            {
                puts("YES");
            }
            else
            {
                puts("NO");
            }
        }
    }

    return 0 ;
}
时间: 2024-10-01 07:47:36

HDOJ2141(map在二分搜索中的应用)的相关文章

Map Resource Definition 中type为 &#39;ArcGIS Server Local&#39;.

在使用 MapResourceManager, Map进行 地图显示 时, 在 Map Resource Definition 的 type 为 ArcGIS Server Local时概述. 1,打开 MapResourceManager 的 Edit Resources后,将弹出如下图所示的对话框: 2,点击 左下角的 Add后,出现上图效果,打开 右侧的 Definition,会出现图示效果: 3,在这里对type为 'ArcGIS Server Local' 进行稍加解释,当 type为

如何过滤List&lt;Map&lt;String,Object&gt;&gt; 中的重复Map

最近遇到一个问题,就是如何过滤一个List<Map<String,Object>> 中重复的Map,废话不多说,直接上代码. //去除重复的Map //cfArraylist 表示重复的 List<Map<String,Object>> //listMap 表示去重复数据后的 List<Map<String,Object>> Map<String, Map> msp = new HashMap<String, Map

Map.containsKey方法——判断Map集合对象中是否包含指定的键名

该方法判断Map集合对象中是否包含指定的键名.如果Map集合中包含指定的键名,则返回true,否则返回false. public static void main(String[] args) { Map map = new HashMap(); //定义Map对象 map.put("apple", "新鲜的苹果"); //向集合中添加对象 map.put("computer", "配置优良的计算机"); map.put(&q

EL表达式获取Map和List中的值

? EL表达式取Map中的值: 当Map中是String,String时 后台servlet中: Map<String, String> map1 = new HashMap<String, String>(); map1.put("a", "b"); map1.put("aa", "bb"); map1.put("aaa", "bbb"); 前台jsp 中使用E

Spring4-EL从 Map 和 List 中获取元素

1.创建Maven项目,项目名称springdemo47,如图所示 2.配置Maven,修改项目中的pom.xml文件,修改内容如下 <project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

arcgis api for flex 除去 esri map控件中的logo标志

在程序的applicationComplete方法中添加下列代码 private function reallyHideESRILogo(map : Map) : void { for(var i : int = 0 ; i < map.numChildren ; i++){ var component : UIComponent = map.getChildAt(i) as UIComponent; if(component.className == "StaticLayer"

【map】【unordered_map】map和unordered_map中键类型为自定义类型的操作

STL中map的底层为红黑树,所以查找的时间复杂度为O(logn). unordered_map是根据哈希值(遇到哈希值相同时用==号比较)寻找键,所以时间复杂度为O(1). 键类型为自定义类型时,map需要重载键类型的<符号,unordered_map需要定义键类型的哈希函数(在类外定义),以及重载键类型的==符号. class person1 { public: string name; int age; person1(string s,int i):name(s),age(i){} //

js中map和python中的map

js 中的map: 由于map()方法定义在JavaScript的Array中,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果: function pow(x) { return x * x; } var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81] var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

利用map对pandas中带有万的字符处理

目标,对后几列中带有"万"的的内容进行替换,如3.5万变成35000的形式. def if_wan(x): if '万' in str(x): x=float(x[:-1])*10000 return x for i in names[2:]: data[i]=data[i].map(if_wan) 结果: 原文地址:https://www.cnblogs.com/daqina/p/8621434.html