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. 如何优雅地将printf的打印保存在文件中?

    我们都知道,一般使用printf的打印都会直接打印在终端,如果想要保存在文件里呢?我想你可能想到的是重定向.例如: $ program > result.txt 这样printf的输出就存储在r ...

  2. 微信小程序的wx.login用async和data解决code不一致的问题

    由于wx.login是异步函数,导致在我们获取微信小程序返回的code去请求我们的登录接口时code的值会异常.现在用promise封装一下,将他success的结果返回,在登陆函数中await就可以 ...

  3. day13 iptables防火墙

    day13 iptables防火墙 一.防火墙的概述 1.什么是防火墙 防止恶意流量访问的软件就叫做防火墙. 2.防火墙的种类 软件防火墙:firewalld.iptables 硬件防火墙:F5 fi ...

  4. Java 性能优化的 50 个细节

    在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. #尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间, ...

  5. Swift Storyboard找不到类文件

    Swift语言引入了Module概念,在通过关键字@objc(类名)做转换的时候,由于Storyboard没有及时更新Module属性,会导致如下两种类型错误: 1 用@objc(类名)标记的Swif ...

  6. [项目总结]Android 手动显示和隐藏软键盘

    1.方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) 1 InputMethodManager imm = (InputMethodManager) getSystemService(Cont ...

  7. android 调用相机拍照及相册

    调用系统相机拍照: private Button btnDyxj; private ImageView img1; private File tempFile; btnDyxj = (Button) ...

  8. my42_Mysql基于ROW格式的主从同步

    模拟主从update事务,从库跳过部分update事务后,再次开始同步的现象 主库 mysql> select * from dbamngdb.isNodeOK; +----+--------- ...

  9. 10.Vue.js 样式绑定

    Vue.js 样式绑定 Vue.js class class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处 ...

  10. @Deprecated注解功能

    @Deprecated注解功能 标记不建议使用的方法,但是仍然可以用 当方法有更好的方法替换时,但是此方法还有使用时可以使用该注解