1. HDU 4907:http://acm.hdu.edu.cn/showproblem.php?pid=4907

中文题我就不说题意了,直接说解题思路吧!

① 第一种思路就是我比赛时的思路,将a数组先全部清为零,当输入机器在ti时间执行第i个任务时,将a[ti]置为1,开始输入q(表示在q时间有一个工作表之外的任务请求)写一个循环,让a数组从a[q]开始循环,直到找到a[J]为0,输出j。这种方法时间超限了,但是在输入q之前先预处理,打一个表就不会超时了。

附上代码:

 #include<stdio.h>
#include<string.h>
int t[],s[];
int main()
{
int T,m,n,i,j,k,a;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&m,&n);
memset(t,,sizeof(t));
for(i=; i<=m; i++)
{
scanf("%d",&a);
t[a]=;
}
memset(s,,sizeof(s));
k=;
for(i=; i<=; i++)
if(t[i]==)
{
for(j=k; j<=i; j++)
s[j]=i;
k=i+;
}
while(n--)
{
scanf("%d",&a);
printf("%d\n",s[a]);
}
}
return ;
}

②第二种思路是二分法,输入a[],后排下序,然后记录每个数字出现的位置,对于询问q,如果q不存在直接输出q,

如果q存在,假设q所在的位置为pos,那么二分【pos,n】,二分判断的依据是如果mid-p==a[mid]-a[p],那么left=mid+1,否则right=mid-1.

附上代码:

 #include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
#define maxn 100010
int a[maxn];
int main()
{
int T,i;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&n,&m);
for(i=; i<n; i++)
scanf("%d",&a[i]);
sort(a,a+n);
while(m--)
{
int q;
scanf("%d",&q);
int pos=int(lower_bound(a,a+n,q)-a);
if(pos==n||a[pos]!=q)
printf("%d\n",q);
else
{
int left=pos+,right=n;
while(left<right)
{
int mid=(left+right)>>;
if(a[mid]-q==mid-pos)
left=mid+;
else
right=mid;
}
printf("%d\n",a[left-]+);
}
}
}
return ;
}

后记:

函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置。

BestCoder Round #3HDU 4907的更多相关文章

  1. [BestCoder Round #3] hdu 4907 Task schedule (模拟简单题)

    Task schedule Problem Description 有一台机器,而且给你这台机器的工作表.工作表上有n个任务,机器在ti时间运行第i个任务,1秒就可以完毕1个任务. 有m个询问,每一个 ...

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

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

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

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

  4. bestcoder Round #7 前三题题解

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

  5. Bestcoder round #65 && hdu 5593 ZYB's Tree 树形dp

    Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...

  6. Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...

  7. 暴力+降复杂度 BestCoder Round #39 1002 Mutiple

    题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...

  8. 贪心 BestCoder Round #39 1001 Delete

    题目传送门 /* 贪心水题:找出出现次数>1的次数和res,如果要减去的比res小,那么总的不同的数字tot不会少: 否则再在tot里减去多余的即为答案 用set容器也可以做,思路一样 */ # ...

  9. BestCoder Round #88

    传送门:BestCoder Round #88 分析: A题统计字符串中连续字串全为q的个数,预处理以下或加个cnt就好了: 代码: #include <cstdio> #include ...

随机推荐

  1. JVM-- 先行发生原则

    本文中需要的基础知识:指令重排 线程中两个非常重要的问题就是:原子性与可见性. 而下面的先行发生原则就是用来解决可见性问题的. 先行发生原则--是判断是否存在数据竞争.线程是否安全的主要依据. 先行发 ...

  2. stm32智能小车之路之小车启动

           首先.安装完小车后最激动的还是想让他跑动,那么就開始吧.写个简单的程序測试下电机是否正常.打开keil软件新建一个project,详细简历keilproject不会的请百度.或者call ...

  3. 关于SSH框架设计的一些理解

    近期在学习企业开发领域非常流行的SSH框架(Struts.Hibernate.Spring).因为之前有做过原生的Servlet+JSP的项目,所以在学习过程中我会跟原生开发模式进行对照,在这里我把自 ...

  4. wireshark 抓包分析 TCPIP协议的握手

    wireshark 抓包分析 TCPIP协议的握手 原网址:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇 ...

  5. Oracle数据库top10物理段

    select owner, name, type, mega, tbs   from (select owner,                case                  when ...

  6. 基于visual Studio2013解决面试题之0909移动星号

     题目

  7. UVa 657 掷骰子

    意甲冠军:有一个大图.每个像素是格孩子只可能是 . * X 三种.代表背景.玻色子.色子点. 两格子是邻近或在通信,当且仅当两个格儿子*要么X.且具有共同的边,这是上下左右四个方向,斜过,即四连块. ...

  8. PYTHON学习第二天[脑图][2]

    控制流语句:if , for ,while , break , continue

  9. 基于visual Studio2013解决C语言竞赛题之1052求根

       题目 解决代码及点评 /* 功能:用简单迭代法解方程 e^x - x - 2 = 0 它有两个根(如图),其迭代公式为: 1) x[n+1]= e^x*n-2 (初值X<0时) ...

  10. Python 链接MysqlDB

    下载安装MySQLdb <1>linux版本 http://sourceforge.net/projects/mysql-python/ 下载,在安装是要先安装setuptools,然后在 ...