目录
前言
本人目前大二,第一次参加ccpc线下赛,去年参加线上赛的时候跟队友拿了一个铜牌(手速慢了四题是可以手速银但我们被诈骗题卡了),今年四题拿了银60名中等银还可以。
解题情况
Problem A. 小水獭游河南
输入文件: standard input 输出文件: standard output
时间限制: 1 second
空间限制: 256 megabytes
小水獭来到河南旅游,它认为一个字符串 s 是 HENAN 的当且仅当存在两个非. 空. 字符串 a 和 b 满 足如下三个条件:a 由小写字母组成,且 a 中每种字母只出现了一次。 b 由小写字母组成,且 b 是回文串,也就是说将 b 翻转后得到的字符串和 b 相同。将 a 和 b 顺序拼接得到的字符串和 s 相同,也就是说 s = a + b。 例如 henan 是 HENAN 的,因为 henan=he+nan,此外也可分解为 hena+n。但 hhnan 和 ysmihoyocom 不是 HENAN 的。 现在给定一个字符串,请你帮助小水獭判断它是不是 HENAN 的
输入格式本题包含多组数据 。第一行包含一个整数 T(1 ≤ T ≤ 103),表示数据组数。 对于每组数据: 一行包含一个由小写字母组成的字符串 s(1 ≤ |s| ≤ 105),表示小水獭询问的字符串。 保证所有数据的 P|s| ≤ 105。
输出格式 对于每组数据: 输出一行包含一个字符串。如果 s 是 HENAN 的,输出 HE;否则输出 NaN
思路
对前二十六个字符进行分隔每次判断后面的字符串是否能满足回文串的条件
Problem B. Art for Rest
输入文件:
standard input
输出文件: standard output
时间限制: 1 second
空间限制: 256 megabytes
给定一个长度为 n 的非负整数序列 a1, a2, . . . , an,记作 A。 对于正整数 k,按照以下方式得到序列 A′ k将 A 划分为 n/k 段,第 i 段为 ak(i−1)+1, ak(i−1)+2, . . . , amin{ki,n} 每一段升序排序后依次连接得到 A′ k。 试求有多少个 k 满足 1 ≤ k ≤ n,且对于任意 1 ≤ i < j ≤ n 有 A′ k,i ≤ A′ k,j。
输入格式
第一行包含一个正整数 n(1 ≤ n ≤ 106),表示非负整数序列 A 的长度。 第二行包含 n 个非负整数 a1, . . . , an(0 ≤ ai ≤ 109),表示给定的序列 A。
输出格式
一行包含一个整数,表示答案。
思路:用前缀最大值来表示i前面的最大值与i+1的后缀最小值相比较判断,但是考场上想的是线段树来处理一个区间的最大值和最小值可惜时间不够没写出来
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int r=1e6+10;
int a[r],b[r],c[r];
signed main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
b[i]=max(b[i-1],a[i]);
}
c[n]=a[n];
for(int i=n-1;i>=1;i--){
c[i]=min(c[i+1],a[i]);
}
int res=0;
for(int i=1;i<=n;i++)
{
int w=0;
for(int j=i+1;j<=n;j+=i){
if(c[j]<b[j-1])w=1;
}
if(w==0)res++;
}
cout<<res;
}
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。