HDU5198 Strange Class

问题描述
  1. Vivid的学校里,有一个奇怪的班级(SC).在SC里,这些学生的名字非常奇怪。他们的名字形式是这样的anbncn(a,b,c两两不相同。).例如,叫”abc”,”ddppqq”的学生是在SC里的,然而叫”aaa”,”ab”,”ddppqqq”的同学并不是在SC里的。
  2. Vivid交了许多的朋友,他想知道他们之中哪些人是在SC里的。
输入描述
  1. 多组测试数据(大概10组),每一个数据在一行中给出一个字符串S,代表Vivid一个朋友的名字。
  2. 请处理到文件末尾。
  3.  
  4. [参数约定]
  5. 1≤|S|≤10.
  6. |S| 是指S的长度.
  7. S 只包含小写字母.
输出描述
  1. 对于每一个数据,如果Vivid的朋友是SC里的,那么输出YES,否则输出NO
输入样例
  1. abc
  2. bc
输出样例
  1. YES
  2. NO

思路:模拟就行,这场比赛题目都很水

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<cstring>
  5. #define maxn 1000
  6. using namespace std;
  7. char ch[maxn],cha[];
  8. int a[];
  9. int main()
  10. {
  11. int n;
  12. while(scanf("%s",ch+)!=EOF)
  13. {
  14. memset(a,,sizeof(a));
  15. int len=strlen(ch+);
  16. cha[]=ch[];
  17. for(int i=;i<=len;i++)
  18. {
  19. if(ch[i]==cha[])a[]++;else break;
  20. }
  21. cha[]=ch[a[]+];
  22. for(int i=a[]+;i<=len;i++)
  23. {
  24. if(ch[i]==cha[])a[]++;else break;
  25. }
  26. cha[]=ch[a[]+a[]+];
  27. for(int i=a[]+a[]+;i<=len;i++)
  28. {
  29. if(cha[]==ch[i])a[]++;else break;
  30. }
  31. if(a[]+a[]+a[]!=len){puts("NO");continue;}
  32. if(a[]!=a[] || a[]!=a[] || a[]!=a[]){puts("NO");continue;}
  33. if(cha[]==cha[] || cha[]==cha[] || cha[]==cha[]){puts("NO");continue;}
  34. puts("YES");
  35. }
  36. return ;
  37. }

HDU5199 Gunner

问题描述
  1. 很久很久以前,有一个叫Jack的枪手。他非常喜欢打猎。一天,他去了一个小树林。那儿有n只鸟,还有n棵树。第i只鸟站在第i棵树的顶端。这些树从左到右排成一条直线。每一棵树都有它的高度。Jack站在最左边那棵树的左边。当Jack在高度为H的地方向右发射一棵子弹时,站在高度为H的树上的鸟儿就会落下来。
  2. Jack会射击多次,他想知道每次射击会有多少鸟儿落下来。
输入描述
  1. 多组测试数据(大概5组),每一组的第一行给出n,mn表示有n棵树和n只鸟,m表示Jack会射击m次。
  2. 在第二行,有n个整数, h[1],h[2],h[3],…,h[n]表示这些树的高度。
  3. 在第三行,有m个整数, q[1],q[2],q[3],…,q[m]表示Jack射击的高度。
  4.  
  5. [参数约定]
  6. 1n,m1000000(106)
  7. 1h[i],q[i]≤1000000000(109)
输出描述
  1. 对于每一个q[i],在一行中输出Jack射落了几只鸟。
输入样例
  1. 4 3
  2. 1 2 3 4
  3. 1 1 4
输出样例
  1. 1
  2. 0
  3. 1

思路:大水体啊啊啊啊啊啊,map就可以过,我求穩作死敲了个hash,慢了别人好多TUT

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstring>
  4. #define maxn 1000009
  5. #define MOD 10000009
  6. using namespace std;
  7. int head[MOD+],nex[maxn],a[maxn],value[maxn];
  8. long long point[maxn],now=;
  9. long long n,k;
  10. int add(int x,int y)
  11. {
  12. nex[++now]=head[x];
  13. head[x]=now;
  14. point[now]=y;
  15. value[now]=;
  16. }
  17. void insert(long long x)
  18. {
  19. long long u=x%MOD;if(u<)u*=-;
  20. for(int i=head[u];i;i=nex[i])
  21. {
  22. if(point[i]==x){value[i]++;return;}
  23. }
  24. add(u,x);
  25. }
  26. int find(int x)
  27. {
  28. int u=x%MOD;if(u<)u*=-;
  29. for(int i=head[u];i;i=nex[i])
  30. {
  31. if(point[i]==x){int u=value[i];value[i]=;return u;}
  32. }
  33. return ;
  34. }
  35. int read()
  36. {
  37. int x=,f=;char ch=getchar();
  38. while(ch<''||ch>''){ch=getchar();}
  39. while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
  40. return x*f;
  41. }
  42. int main()
  43. {
  44. int n,m,h,q;
  45. while(scanf("%d%d",&n,&m)!=EOF)
  46. {
  47. now=;
  48. memset(head,,sizeof(head));
  49. memset(value,,sizeof(value));
  50. for(int i=;i<=n;i++)
  51. {
  52. h=read();
  53. insert(h);
  54. }
  55. for(int i=;i<=m;i++)
  56. {
  57. q=read();
  58. int u=find(q);
  59. printf("%d\n",u);
  60. }
  61. }
  62. return ;
  63. }

HDU5200 Trees

问题描述
  1. 今天CodeFamer去坎树。有N棵树排成一排。他们被从1N标号。第i号树的高度为hi。两棵未被坎掉的树编号分别为x,y当且仅当他们满足如下条件中一条时,他们是属于同一个块的:
  2. 1) x+1=y y+1=x;
  3. 2) 存在一个棵未被坎掉的树,编号为zxz在同一个块并且yz也在同一个块。
  4. 现在CodeFamer想要坎掉一些高度不大于某个值的树,坎掉之后会形成多少个块呢?
输入描述
  1. 多组测试数据(大概15组)
  2. 对于每一组数据,第一行包含两个整数NQ,以一个空格分开,N表示有N棵树,Q表示有Q个查询。
  3. 在接下来的N行中,会出现h[1],h[2],h[3],…,h[N],表示N棵树的高度。
  4. 在接下来的Q行中,会出现q[1],q[2],q[3],…,q[Q]表示CodeFamerr查询。
  5.  
  6. 请处理到文件末尾。
  7.  
  8. [参数约定]
  9. 1N,Q50000
  10. 0h[i]≤1000000000(109)
  11. 0q[i]≤1000000000(109)
输出描述
  1. 对于每一个q[i],输出CodeFamer坎掉高度不大于q[i]的树之后有多少个块。
    思路:离线输入,对于每个在范围内的树砍掉,维护块数就可以了,一开始想用并查集维护的,后来发现根本不用
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<cstring>
  5. #define maxn 60000
  6. using namespace std;
  7. int ansc=,ans[maxn],father[maxn],visit[maxn];
  8. struct T
  9. {
  10. int x;int y;
  11. }q[maxn],a[maxn];
  12. int cmp(T x,T y)
  13. {
  14. return x.x>y.x;
  15. }
  16. int cmp2(T x,T y)
  17. {
  18. return x.x<y.x;
  19. }
  20.  
  21. int main()
  22. {
  23. int n,qi;
  24. while(scanf("%d%d",&n,&qi)!=EOF)
  25. {
  26. memset(visit,,sizeof(visit));
  27. ansc=;
  28. for(int i=;i<=n;i++)father[i]=i;
  29. for(int i=;i<=n;i++)
  30. {
  31. scanf("%d",&a[i].x);
  32. a[i].y=i;
  33. }
  34. sort(a+,a++n,cmp);
  35. for(int i=;i<=qi;i++)
  36. {
  37. scanf("%d",&q[i].x);
  38. q[i].y=i;
  39. }
  40. sort(q+,q++qi,cmp);
  41. int u=;
  42. for(int i=;i<=qi;i++)
  43. {
  44. while(a[u].x>q[i].x && u<=n)
  45. {
  46. visit[a[u].y]=;
  47. ansc++;
  48. if(visit[a[u].y-])ansc--;
  49. if(visit[a[u].y+])ansc--;
  50. u++;
  51. }
  52. ans[q[i].y]=ansc;
  53. }
  54. for(int i=;i<=qi;i++)printf("%d\n",ans[i]);
  55. }
  56. return ;
  57. }

BestCoder Round #36的更多相关文章

  1. BestCoder Round #36 [B] Gunner

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5199 先对树的高度排序,然后对每次射击高度二分查找即可,打过之后数目变为0. #include< ...

  2. BestCoder Round #36 (hdu5200)Strange Class(离线)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Trees Time Limit: 2000/1000 MS (Java/Othe ...

  3. BestCoder Round #36 (hdu5199)Gunner(水题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Gunner Time Limit: 8000/4000 MS (Java/Oth ...

  4. BestCoder Round #36 (hdu5198)Strange Class(水题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Strange Class Time Limit: 2000/1000 MS (J ...

  5. 二分查找 BestCoder Round #36 ($) Gunner

    题目传送门 /* 题意:问值为x的个数有几个,第二次查询就是0 lower/upper_bound ()函数的使用,map也可过,hash方法不会 */ #include <cstdio> ...

  6. bestcoder Round #7 前三题题解

    BestCoder Round #7 Start Time : 2014-08-31 19:00:00    End Time : 2014-08-31 21:00:00Contest Type : ...

  7. hdu 5667 BestCoder Round #80 矩阵快速幂

    Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  8. BestCoder Round #89 02单调队列优化dp

    1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01  HDU 5944   水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...

  9. BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元

    BestCoder Round #90 本次至少暴露出三个知识点爆炸.... A. zz题 按题意copy  Init函数 然后统计就ok B. 博弈 题  不懂  推了半天的SG.....  结果这 ...

随机推荐

  1. Linux自带-系统级性能分析工具 — Perf(转)

    https://blog.csdn.net/zhangskd/article/details/37902159/

  2. 如何使用KeyChain保存和获取UDID

    本文是iOS7系列文章第一篇文章,主要介绍使用KeyChain保存和获取APP数据,解决iOS7上获取不变UDID的问题.并给出一个获取UDID的工具类,使用方便,只需要替换两个地方即可. 一.iOS ...

  3. Windows系统下Android开发环境搭建

    “工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.ecl ...

  4. php 小坑记录

    1 empty  PHP<=5.5不能用于判断一个表达式的执行结果并且netbeans 和eclipse编辑器识别不出来此错误 含有此用法的 类 和页面将会报错 empty($this-> ...

  5. CNNs 在图像分割中应用简史: 从R-CNN到Mask R-CNN

    作者:嫩芽33出处:http://www.cnblogs.com/nenya33/p/6756024.html 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者同意,必须保留此段声明:必须 ...

  6. ssh复制remote

    rsync rsync localdirectory username@10.211.55.4:/home/username/Downloads/localdirectory -r

  7. Luogu P5352 Terrible Homework

    神仙@TheLostWeak出的题,因为他最近没时间所以我先写一下sol(其实我也没什么时间) 作为一道简单的数据结构题想必大家都能看出必须用LCT维护信息吧 一个朴素的想法就是直接维护四种操作的值, ...

  8. mac 上使用移动硬盘

    1. 打开终端,查看赢盘的Volume Name diskutil list 2. 更新fstab文件,此步骤需要输入密码 sudo nano /etc/fstab 3. 在fstab文件中写入一下内 ...

  9. 简单的 创建AJax的方法

    // 简单的ajax对象 var myAjax = { // XMLHttpRequest IE7+, Firefox, Chrome, Opera, Safari : ActiveXObject I ...

  10. MAC实现睡眠和休眠唤醒

    因为苹果默认为休眠文件加密,Clover 是无法解密的.所以需要经过一些设置才能破除这无节操的加密文件sleepimage.在这之前不得不提下EmuVariableUefi-64.efi 这个驱动.我 ...