转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud

who is the best?

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Problem Description
There are N people want to choose the best person. Each person select the best person ai, .John wants to know that who received the most number of votes.
 



Input
The first line contains a single integer T(1≤T≤50),indicating the number of test cases.
Each test case begins with an integer N(1≤N≤100),indicating the number of person.
Next N lines contains an integer ai(1≤ai≤N).
 



Output
For each case, output an integer means who is the best person. If there are multiple answers, print the minimum index.
 



Sample Input
2
10
1
2
3
4
5
6
7
8
9
10
5
3
3
3
3
3
 
Sample Output
1
3

题意:求出现次数最多的数,若有多个数,则输出最小的一个

水题,随便搞

 #include<iostream>
#include <cstring>
using namespace std;
int a[];
int main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
int n;
memset(a,,sizeof(a));
while(t--)
{
int n;
cin>>n;
int k;
int maxx=;
memset(a,,sizeof(a));
int ans=;
for(int i=;i<n;i++)
{
cin>>k;
a[k]++;
if(a[k]>=maxx)
{
if(a[k]==maxx)
{
ans=min(ans,k);
}
else
{
ans=k;
}
maxx=a[k];
}
}
cout<<ans<<endl;
}
return ;
}

代码君

lines

Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Problem Description
John
has several lines. The lines are covered on the X axis. Let A is a
point which is covered by the most lines. John wants to know how many
lines cover A.
 
Input
The first line contains a single integer T(1≤T≤100)(the data for N>100 less than 11 cases),indicating the number of test cases.
Each test case begins with an integer N(1≤N≤105),indicating the number of lines.
Next N lines contains two integers Xi and Yi(1≤Xi≤Yi≤109),describing a line.
 
Output
For each case, output an integer means how many lines cover A.
 
Sample Input
2
5
1 2
2 2
2 4
3 4
5 1000
5
1 1
2 2
3 3
4 4
5 5
 
Sample Output
3
1

题意:有n条线段,求被覆盖到次数最多的点的次数

分析:

1.可以转化成求前缀和最大的问题:将区间改成左闭右开(即右端点加1),排序,从左往右遍历,若为左端点则加一,右端点则减一。

2.线段树,离散化一下,然后区间更新,单点查询。

 #include <iostream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef pair<int,int> PII;
PII a[];
int main()
{
ios::sync_with_stdio(false);
int t;
//freopen("in.in","r",stdin);
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
n=n*;
for(int i=;i<n;i++)
{
scanf("%d",&a[i].first);
a[i].second=;
scanf("%d",&a[++i].first);
a[i].first++;
a[i].second=-;
}
sort(a,a+n);
int ans=;
int k=;
for(int i=;i<n;i++)
{
k=k+a[i].second;
ans=max(k,ans);
}
printf("%d\n",ans);
}
}

代码君

magic balls

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Problem Description
The town of W has N people. Each person takes two magic balls A and B every day. Each ball has the volume ai and bi.
People often stand together. The wizard will find the longest
increasing subsequence in the ball A. The wizard has M energy. Each
point of energy can change the two balls’ volume.(swap(ai,bi)).The
wizard wants to know how to make the longest increasing subsequence and
the energy is not negative in last. In order to simplify the problem,
you only need to output how long the longest increasing subsequence is.
 
Input
The first line contains a single integer T(1≤T≤20)(the data for N>100 less than 6 cases), indicating the number of test cases.
Each test case begins with two integer N(1≤N≤1000) and M(0≤M≤1000),indicating the number of people and the number of the wizard’s energy. Next N lines contains two integer ai and bi(1≤ai,bi≤109),indicating the balls’ volume.
 
Output
For each case, output an integer means how long the longest increasing subsequence is.
 
Sample Input
2
5 3
5 1
4 2
3 1
2 4
3 1
5 4
5 1
4 2
3 1
2 4
3 1
 
Sample Output
4
4

题意:有两组数a,b,另外最多可以对其做m次操作——即swap(a[i],b[i]),问在此情况下a数组最大的LIS长度是多少?

分析:先将数据离散化,然后用m+1个树状数组或者线段树来维护在还剩余j次操作之后到第i个数时的最大的LIS长度。

sad,这道题我用了线段树来维护RMQ,一直TLE,最后在参考了邝巨巨的情况下才过了的。

^_^通过这道题目知道了如何运用树状数组来维护RMQ,之前只会用线段树搞搞。

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
struct BIT
{
int bit[];
int n;
int init(int size)
{
n=size;
for(int i=;i<n;i++)bit[i]=;
}
int query(int i)
{
int s=;
while(i>)
{
s=max(s,bit[i]);
i-=i&-i;
}
return s;
}
int update(int i,int x)
{
while(i<=n)
{
bit[i]=max(x,bit[i]);
i+=i&-i;
}
}
}bt[];
int a[],b[],c[];
int main()
{
//ios::sync_with_stdio(false);
int t;
//freopen("in.in","r",stdin);
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int cnt=;
for(int i=;i<n;i++)
{
scanf("%d%d",&a[i],&b[i]);
c[++cnt]=a[i];
c[++cnt]=b[i];
}
sort(c+,c+cnt+);
cnt=unique(c+,c+cnt+)-c-;
for(int i=;i<n;i++)
{
a[i]=lower_bound(c+,c+cnt+,a[i])-c;
b[i]=lower_bound(c+,c+cnt+,b[i])-c;
}
int ans=;
for(int i=;i<=m;i++)bt[i].init(cnt);
for(int i=;i<n;i++)
{
for(int j=;j<=m;j++)
{
int x=bt[j].query(a[i]-)+;
bt[j].update(a[i],x);
ans=max(ans,x);
if(j<m)
{
x=bt[j+].query(b[i]-)+;
bt[j].update(b[i],x);
ans=max(ans,x);
}
}
}
cout<<ans<<endl; } return ;
}

代码君

D题

目前还不会,不会cdq分治。。。

BestCoder Round #20 部分题解(A,B,C)(hdu5123,5124,5125)的更多相关文章

  1. BestCoder Round #86 部分题解

    Price List 题意: 有n件商品,每天只能买一件,并且会记录账本,问有多少次一定记多了? 题解: 就是求和,最后如果大于和就输出1,否则0. 代码: #include <bits/std ...

  2. hdu 5066 Harry And Physical Teacher(Bestcoder Round #14)

    Harry And Physical Teacher Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  3. bestcoder Round #7 前三题题解

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

  4. BestCoder Round #11 (Div. 2) 题解

    HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  5. BestCoder Round #90 A+B题解!

    BestCoder Round #90 A  Kblack loves flag 题意有点迷不造思路很简单但不造怎么求随机数,纠结了一会后直接粘上题目所给的代码稍加修改A了. const int _K ...

  6. BestCoder Round #11 (Div. 2) 前三题题解

    题目链接: huangjing hdu5054 Alice and Bob 思路: 就是(x,y)在两个參考系中的表示演全然一样.那么仅仅可能在这个矩形的中点.. 题目: Alice and Bob ...

  7. [BestCoder Round #3] hdu 4908 BestCoder Sequence (计数)

    BestCoder Sequence Problem Description Mr Potato is a coder. Mr Potato is the BestCoder. One night, ...

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

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

  9. BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)

    Baby Ming and Weight lifting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

随机推荐

  1. HBase -ROOT-和.META.表结构(region定位原理)

    在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer.什么叫相应的RegionServer?就是管理你要操 ...

  2. 转载:CPU的位数和操作系统的位数

    1. 32位系统最大只能使用3.5G的内存,而64位系统最大能够使用128G内存. 2. 32位CPU只能安装和使用32位.16位的系统和软件,无法使用64位系统及软件. 3. 64位可以安装64位系 ...

  3. gtest编译小结(ubuntu 12.10 , gtest 1.6.0)

    1 下载源码,解压之当前用户的主目录(~/) 2 进入make目录,执行make命令 cd ~/gtest-/make make 3 在ubuntu里编译出错,提示找不到lthread库.修改Make ...

  4. C51函数的递归调用

    前几天在写C51程序时用到了递归,简单程序如下: void WRITE_ADD(uchar addr,uchar wbyte) { START(); //先发送起始信号 WRITE_BYTE(0xa0 ...

  5. PostgreSQL与MySQL比较(转)

    Mysql 使用太广泛了,以至于我不得不将一些应用从mysql 迁移到postgresql, 很多开源软件都是以Mysql 作为数据库标准,并且以Mysql 作为抽象基础的,但是具体使用过程中,发现M ...

  6. A站有一个页面需要PV统计 A站读写该数据 B站读该数据 需要数据同步

    A站弄个缓存,并且开放出一个读取借口给B站 B站读取数据的时候,调用该接口和数据库内的数据累加,然后进行限时即可 ---------------------- 另外其他方法 session服务.mem ...

  7. 01串(dp)

    01串 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 ACM的zyc在研究01串,他知道某一01串的长度,但他想知道不含有“11”子串的这种长度的01串共有多少个, ...

  8. java删除文件夹下所有文件

    package org.sw; import java.io.File; /** * * @author mengzw * @since 3.0 2014-2-26 */ public class D ...

  9. java与.net比较学习系列(7) 属性

    文章摘自:http://www.cnblogs.com/mcgrady/p/3411405.html 说起属性,实际上java中没有属性这个概念,只有字段和方法,但是可以通过私有字段和声明get,se ...

  10. JSTL解析——003——core标签库02

    上一节主要讲解了<c:if/><c:choose/><c:when/><c:otherwise><c:out/>标签的使用,下面继续讲解其它 ...