【ZOJ3932 The 16th Zhejiang University Programming ContestF】【水题】Handshakes 每人与之前认识的人握手 最大可能认识人数

原创 2016年04月12日 13:11:48
Handshakes

Time Limit: 2 Seconds      Memory Limit: 65536 KB

Last week, n students participated in the annual programming contest of Marjar University. Students are labeled from 1 to n. They came to the competition area one by one, one after another in the increasing order of their label. Each of them went in, and before sitting down at his desk, was greeted by his/her friends who were present in the room by shaking hands.

For each student, you are given the number of students who he/she shook hands with when he/she came in the area. For each student, you need to find the maximum number of friends he/she could possibly have. For the sake of simplicity, you just need to print the maximum value of the n numbers described in the previous line.

Input

There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:

The first line contains an integer n (1 ≤ n ≤ 100000) -- the number of students. The next line contains n integers a1, a2, ..., an (0 ≤ ai < i), where ai is the number of students who the i-th student shook hands with when he/she came in the area.

Output

For each test case, output an integer denoting the answer.

Sample Input

2
3
0 1 1
5
0 0 1 1 1

Sample Output

2
3

Author: LIN, Xi
Source: The 16th Zhejiang University Programming Contest


#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<ctype.h>
#include<math.h>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<bitset>
#include<algorithm>
#include<time.h>
using namespace std;
void fre() { freopen("c://test//input.in", "r", stdin); freopen("c://test//output.out", "w", stdout); }
#define MS(x,y) memset(x,y,sizeof(x))
#define MC(x,y) memcpy(x,y,sizeof(x))
#define MP(x,y) make_pair(x,y)
#define ls o<<1
#define rs o<<1|1
typedef long long LL;
typedef unsigned long long UL;
typedef unsigned int UI;
template <class T1, class T2>inline void gmax(T1 &a, T2 b) { if (b>a)a = b; }
template <class T1, class T2>inline void gmin(T1 &a, T2 b) { if (b<a)a = b; }
const int N = 1e5+10, M = 0, Z = 1e9 + 7, ms63 = 0x3f3f3f3f;
int casenum, casei;
int n;
int a[N], sum[N];
int main()
{
	scanf("%d", &casenum);
	for (casei = 1; casei <= casenum; ++casei)
	{
		scanf("%d", &n);
		for (int i = 1; i <= n; ++i)scanf("%d", &a[i]);
		sum[n + 1] = 0;
		for (int i = n; i >= 1; i--)sum[i] = sum[i + 1] + (a[i]>0);
		int ans = 0;
		for (int i = 1; i <= n; ++i)gmax(ans, a[i] + sum[i + 1]);
		printf("%d\n", ans);
	}
	return 0;
}
/*
【题意】
n(1e5)个人依次进房间,每个人会与之前在房间的所有人中认识的握手。
告诉你每个人与多少人握了手,让你输出哪个人可能认识的人最多,输出这个最多认识人数。

【类型】
水题

【分析】
直接统计后缀非0数的个数
gamx(ans,a[i]+后缀非0数个数)

【时间复杂度&&优化】
O(n)

*/


版权声明:题解中哪里写错请一定要指出来QwQ 转载还请注明下出处哦,谢谢^_^

(hdu step 8.1.8)Team Queue(一个人排队时,如果前面有他认识的人,那么他可以直接排到他认识的人的后面,否则排在队伍的最后面。求这种情况下的出队情况)

题目:Team QueueTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S...
  • caihongshijie6
  • caihongshijie6
  • 2015年03月24日 10:56
  • 1244

对于计算机语言的认识

一年之前,计算机在我面前像是一个黑盒子,除了看电影、聊天,其他用处一无所知,大学一年的学习,随着时间的推移,对计算机的认识也逐步加深!C++是我接触的第一种计算机语言,之后自学了C语言……现在由于需求...
  • u012492762
  • u012492762
  • 2013年11月08日 00:58
  • 1021

对编程语言的认识

面对众多的编程语言,何处是归路?
  • kiaapeng
  • kiaapeng
  • 2015年06月07日 14:28
  • 821

Android初试--了解和认识Android

1.了解Android        Android一词本义指“机器人”,是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用...
  • guizhaiteng
  • guizhaiteng
  • 2013年09月17日 17:57
  • 1373

对计算机的认识与感想

计算机是如何运行起来的?我们能从中得到什么启示?
  • cugwuhan2014
  • cugwuhan2014
  • 2016年10月27日 17:02
  • 1829

HTML初步认识

HTML初步认识本篇博客给大家带来html最基础的东西,也就是初步认识html,打算从以下几个方面给大家介绍: 认识什么是纯文本文件txt HTML是负责描述文档语义的语言 HTML骨架和基本语法 可...
  • u010624986
  • u010624986
  • 2016年12月16日 23:46
  • 521

ASP.NET的简单认识

ASP.NET是.NET FrameWork的一部分,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们。 指 Active ...
  • u013036404
  • u013036404
  • 2015年07月31日 16:45
  • 1343

对汇编中寄存器的认识

基于IA-32处理器和32位汇编语言 在IA-32处理器中的寄存器分为透明寄存器和可编程寄存器,其中可编程寄存器又可以分为通用寄存器和专用寄存器。 一: IA-32有8个32位通用寄存器,分...
  • CSDN_LYY
  • CSDN_LYY
  • 2015年03月27日 22:05
  • 368

浅谈对软件工程的认识与理解

软件工程涉及的资源有:人力、资金、时间的合理分配,涉及到文化与管理等,及各种规划化。   软件开发是一个把用户需要转化为软件需求,把软件需求转化为软件设计,用软件代码来实现软件设计,对软件代码进行测试...
  • ShareUs
  • ShareUs
  • 2016年03月11日 16:47
  • 11622

谈谈我对资本主义和社会主义的一点认识

对于中国国家制度的性质,主要分3种观点:中国特色社会主义,政治上的社会主义-经济上的资本主义,社会主义的资本化。    对于美国等欧美资本主义国家的性质,主要分3种观点:资本主义、资本主义的高级阶段、...
  • FansUnion
  • FansUnion
  • 2014年10月26日 09:16
  • 1794
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【ZOJ3932 The 16th Zhejiang University Programming ContestF】【水题】Handshakes 每人与之前认识的人握手 最大可能认识人数
举报原因:
原因补充:

(最多只允许输入30个字)