http://acm.hdu.edu.cn/showproblem.php?pid=3833

做这题时是因为我在网上找杭电的数论题然后看到说这道题是数论题就点开看了以下。

然后去杭电上做,暴力,超时了,想了半天还是没啥好办法,到底哪要用到数论的知识呢,想不出还得去搜题解,脑子笨啊。

然后说用hash再报暴力,没看人家代码,然后就顺着这思路写,我写的是当前是a[i];然后j从1到i-1,用2*a[i]-a[j]的另一个数并且这个数的范围为1到N;而且在1到i-1中没出现过

那么必定在i的右侧,这个可以用hash数组记录一下,在1到i出现的a[i]都标记为1;也就是hash[a[i]]=1;

那么如过相减所得的数在a[i]的后面那么hash[2*a[i]-a[j]]==0;那么只要这个成立就可跳出,那么就有解。

哈哈,超时了这个复杂度基本上还是(n*n);

后来看了一下别人的代码,我觉得复杂程度还是没降,可为啥就过了?

希望知道的能指导下;

 1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<stdlib.h>
5 #include<string.h>
6 #include<math.h>
7 const int N=10005;
8 using namespace std;
9 int flag[N];//hash数组
10 int a[N];
11 int main(void)
12 {
13 int i,j,k,p,q,pp;
14 scanf("%d",&k);
15 while(k--)
16 {
17 memset(flag,0,sizeof(flag));
18 pp=0;
19 scanf("%d",&p);
20
21 for(i=1; i<=p; i++)
22 {
23 scanf("%d",&a[i]);
24 if(pp)
25 {
26 continue;
27 }
28 flag[a[i]]=1;
29 if(i>=2)
30 {
31 for(j=1; j<a[i]&&a[i]+j<=p; j++)
32 {
33
34 if(flag[j+a[i]]+flag[a[i]-j]==1)//找关于a[i]对称的也就是与a[i]的间距的数时否在a[i]的两端.
35 {
36 pp=1;
37 break;
38 }
39 }
40 }
41
42 }//我认为上面的复杂度为(p+2)*p/4;我认为基本上还是p*p的,如过知道咋分析的教我一下
43 if(pp)
44 {
45 printf("Y\n");
46 }
47 else printf("N\n");
48
49 }
50 return 0;
51 }

hdu-3833 YY's new problem(数组标记)的更多相关文章

  1. HDU 3833 YY's new problem ()

    YY's new problem Time Limit: 12000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  2. HDU 3833 YY's new problem(换种思路的模拟,防超时)

    题目链接 用p[a]保存的是输入的a在第p[a]个,  然后根据差值查找. #include<stdio.h> #include<string.h> int main() { ...

  3. G - YY's new problem(HUSH算法,目前还不懂什么是HUSH算法)

      Time Limit:4000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Pra ...

  4. hdoj 2579 Dating with girls(2)【三重数组标记去重】

    Dating with girls(2) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  5. hdu 2642 二维树状数组 单点更新区间查询 模板水题

    Stars Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/65536 K (Java/Others) Total Subm ...

  6. HDU 1231.最大连续子序列-dp+位置标记

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  7. hdu 3553 Just a String (后缀数组)

    hdu 3553 Just a String (后缀数组) 题意:很简单,问一个字符串的第k大的子串是谁. 解题思路:后缀数组.先预处理一遍,把能算的都算出来.将后缀按sa排序,假如我们知道答案在那个 ...

  8. HDU 4974 A simple water problem(贪心)

    HDU 4974 A simple water problem pid=4974" target="_blank" style="">题目链接 ...

  9. HDU 5572 An Easy Physics Problem (计算几何+对称点模板)

    HDU 5572 An Easy Physics Problem (计算几何) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5572 Descripti ...

随机推荐

  1. .Net调用Java的实现方法

    一. IKVM 1.1下载配置IKVM 1.1.1. 下载路径 http://www.ikvm.net/index.html 1.1.2. 设置路径 解压ikvm-0.42.0.3.zip,并将%IK ...

  2. IDEA+maven+javafx(java 1.8)入坑记录

    序 好久没写博客了,主要是因为懒,写博客真的是个难坚持的事.但今天登上来看了看,之前记录ctf写的wp竟然点击量这么多了,突然让我有了继续写下去的动力. 这段时间遇到了好多事,中间也有想过写几篇文章记 ...

  3. 在Kubernetes上安装Percona XtraDB集群

    官方文档地址:https://www.percona.com/doc/kubernetes-operator-for-pxc/kubernetes.html 一.简介 Percona XtraDB C ...

  4. A Child's History of England.45

    To forgive these unworthy princes was only to afford them breathing-time for new faithlessness. They ...

  5. day10 ajax的基本使用

    day10 ajax的基本使用 今日内容 字段参数之choices(重要) 多对多的三种创建方式 MTV与MVC理论 ajax语法结构(固定的) 请求参数contentType ajax如何传文件及j ...

  6. CORS 如果需要指定多个域名怎么办

    CORS 通过控制 Access-Control-Allow-Origin 控制哪些域名可以共享资源,取值如下 Access-Control-Allow-Origin: <origin> ...

  7. Linux基础命令---elinks文本浏览器

    elinks elinks指令是一个纯文本格式的浏览器,支持颜色.表格.鼠标.菜单操作. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.   1.语法       ...

  8. 【Service】【MiddleWare】【Message】rabbitMQ

    1. 概念: 1.1. 消息型中间件:遵循AMQP协议(高级消息队列协议)AMQP 0-9-1 AMQP 1.0 1.2. 路由模型: direct topic fan-out headers 1.3 ...

  9. Windows下搭建FFmpeg开发调试环境

    背景 如果你是一个FFmpeg的使用者,那么绝大部分情况下只需要在你的程序中引用FFmpeg的libav*相关的头文件,然后在编译阶段链接相关的库即可. 但是如果你想调试FFmpeg内部相关的逻辑,或 ...

  10. 07-Spring5 WebFlux响应式编程

    SpringWebFlux介绍 简介 SpringWebFlux是Spring5添加的新模块,用于Web开发,功能和SpringMvc类似的,WebFlux使用当前一种比较流行的响应式编程框架 使用传 ...