acm_icpc网络赛第一站:牡丹江赛区

sad没想到自己菜成这个样子,虽然第一次打组队赛,本来也没指望出线什么的,结果3人鼓捣了半天除了两个水题,A题太水不说了,一般都是5分钟内解决,最快的好像是2分钟。。神手速orz,a题是chp敲的1A,然后他就去做了c题,后来用记录路径的bfs搜了几次都TLE了,后来c题也不了了之了,然后看到J题过了一大片,果断枚举水过,wa了5次。。在之后我敲了H题,TLE。。sad 纯暴力算法果然不行。。事后学长说是记忆化搜索?反正整个实验室都没出来H题好像。。

A题:

The Himalayas

Time Limit: 2 Seconds       Memory Limit: 65536 KB

As an artist, Bob usually need to travel around the world. He made a lot of sketch of scenery on his journey. A famous spot he have visited recently is the Himalayas. The Himalayas is a mountain range in South Asia separating the plains of the Indian subcontinent from the Qinghai-Tibet Plateau. The Himalayas include over a hundred mountains exceeding 7,200 meters in elevation.

One day, Bob came up with an strange idea. He wanted to know the number of mountain peaks in his paintings. As his best friend, he turned to you for help. You are given a list of N height sampling values Hi. You should determine how many peaks are there. For all i which satisfies 2 <= i <= N - 1, Hi is defined as a peak if and only if Hi-1 < Hi > Hi+1.

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 one integer N (1 <= N <= 50). The next line contains N integers Hi (1 <= Hi <= 8844). It is guaranteed that any two adjacent height sampling values will be different.

Output

For each test case, output the number of peaks.

Sample Input
2
9
1 3 2 4 6 3 2 3 1
5
1 2 3 4 5
Sample Output
3
0
纯暴力。。送人头的

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <cstdlib>
#include <algorithm>
#include <set>
#include <vector>
#include <string>
#include <cmath>
#include <map>
#include <queue>
using namespace std;
#define LL long long
int a[55];
int main()
{
	int n,t;
	scanf("%d",&t);
	while(t--)
	{
	   scanf("%d",&n);
	   for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
	   int cnt=0;
	   for(int i=1;i<n-1;i++)
		if(a[i]>a[i-1]&&a[i]>a[i+1])
			cnt++;
		printf("%d\n",cnt);
	}
	return 0;
}

J题:


Pretty Poem

Time Limit: 2 Seconds       Memory Limit: 65536 KB

Poetry is a form of literature that uses aesthetic and rhythmic qualities of language. There are many famous poets in the contemporary era. It is said that a few ACM-ICPC contestants can even write poetic code. Some poems has a strict rhyme scheme like "ABABA" or "ABABCAB". For example, "niconiconi" is composed of a rhyme scheme "ABABA" with A = "ni" and B = "co".

More technically, we call a poem pretty if it can be decomposed into one of the following rhyme scheme: "ABABA" or "ABABCAB". The symbol AB and C are different continuous non-empty substrings of the poem. By the way, punctuation characters should be ignored when considering the rhyme scheme.

You are given a line of poem, please determine whether it is pretty or not.

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:

There is a line of poem S (1 <= length(S) <= 50). S will only contains alphabet characters or punctuation characters.

Output

For each test case, output "Yes" if the poem is pretty, or "No" if not.

Sample Input
3
niconiconi~
pettan,pettan,tsurupettan
wafuwafu
Sample Output
Yes
Yes
No

暴力枚举。。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <cstdlib>
#include <algorithm>
#include <set>
#include <vector>
#include <string>
#include <cmath>
#include <map>
#include <queue>
using namespace std;
#define LL long long
char str[100];
bool is_ab()
{
	int len=strlen(str);
	for(int i=1;i<len;i++)//枚举a的长度
	{
		int lb=len-3*i;
		if(lb<1)break;
		if(lb%2)continue;
		lb/=2;
		if(lb==i&&!strncmp(str,str+i,i))//考虑a,b相同的情况
			continue;
		char t[555]="\0";
		strncat(t,str,i);//a
		strncat(t,str+i,lb);//b
		strncat(t,str,i);//a
		strncat(t,str+i,lb);//b
		strncat(t,str,i);//a
		if(!strcmp(str,t))
			return 1;
	}
	return 0;
}
bool is_abc()
{
   int len=strlen(str);
   for(int i=1;i<len;i++)//枚举a,b的长度
		for(int j=1;j<len;j++)
        {
   	       int lc=len-3*i-3*j;
   	       if(lc<1)
			continue;
		   if(i==j&&!strncmp(str,str+i,i))continue;//考虑a,b相同
		   if(i==lc&&!strncmp(str,str+2*i+2*j,i))continue;//考虑a,c相同
		   if(j==lc&&!strncmp(str+i,str+2*i+2*j,j))continue;//考虑b,c相同
		   char t[555]="\0";
		   strncat(t,str,i);
		   strncat(t,str+i,j);
		   strncat(t,str,i);
		   strncat(t,str+i,j);
		   strncat(t,str+2*i+2*j,lc);
		   strncat(t,str,i);
		   strncat(t,str+i,j);
		   if(!strcmp(str,t))
			return 1;
        }
        return 0;
}
int main()
{
	int t,p;char c;
	cin>>t;getchar();
	while(t--)
	{
		p=0;
		while((c=getchar())!='\n')
			if(isalpha(c))
				str[p++]=c;
		str[p]='\0';
		if(is_ab()||is_abc())
			puts("Yes");
		else
			puts("No");
	}
	return 0;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值