A题链接:
http://codeforces.com/contest/1144/problem/A
题意:
给n个字符串,问如果字符串的每一种字符都只出现一次,且出现的字符在字典序必须,即"fced"是符合要求的,“bad"是不合要求的,如果字符串中仅有一个字符也是符合要求的,符合要求输出"Yes”,否则输出"No";
分析:
水题
代码:
#include<bits/stdc++.h>
using namespace std;
constexpr int maxn = 120;
char s[maxn];
int main(){
int n;
scanf("%d", &n);
while(n --){
set<int> si;
scanf("%s", s);
for(int i = 0; s[i]; i += 1) si.insert(s[i]);
if(*si.rbegin() - *si.begin() + 1 == strlen(s)
&& si.size() == strlen(s)) puts("Yes");
else puts("No");
}
}
B题链接:
http://codeforces.com/contest/1144/problem/B
题意:
给定n个数,对数组进行删除操作,即删除某个元素,但是删除操作必须以“奇偶奇偶奇偶…”的或者“偶奇偶奇偶奇…”的方式进行,问当不能进行删除操作的时候,所剩下的数的可能的最小值;
分析:
水题
代码:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<vector>
#include<queue>
#include<stack>
#include<cmath>
#include<set>
#include<map>
using namespace std;
const int inf=0x7f7f7f7f;
const int maxn=1e1+50;
const int N=4e5+50;
typedef long long ll;
typedef struct{
ll u,v,next,w;
}Edge;
Edge e[N];
typedef struct{
int out,pos;
}Point;
Point p[N];
int cnt,head[N];
inline void add(int u,int v){
e[cnt].u=u;
e[cnt].v=v;
//e[cnt].w=w;
// e[cnt].f=f;
e[cnt].next=head[u];
head[u]=cnt++;
e[cnt].u=v;
e[cnt].v=u;
// e[cnt].w=0;
// e[cnt].f=-f;
e[cnt].next=head[v];
head[v]=cnt++;
}
inline void write(int x)
{
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
}
inline int read()
{
int x = 0;
int f = 1;
char c = getchar();
while (c<'0' || c>'9'){
if (c == '-')
f = -1;
c = getchar();
}
while (c >= '0'&&c <= '9'){
x = x * 10 + c - '0';
c = getchar();
}
return x*f;
}
int n,a[2200],b[2200],odd,even;
string s;
int main() {
cin>>n;
int x;
for(int i=1;i<=n;i++){
cin>>x;
if(x%2!=0){
a[odd++]=x;
}
else b[even++]=x;
}
if(odd==even||odd==even+1||even==odd+1){
cout<<0<<endl;
return 0;
}
int ans=0;
if(odd>even){
sort(a,a+odd);
for(int i=0;i<odd-even-1;i++){
ans+=a[i];
}
}
else if(odd<even){
sort(b,b+even);
for(int i=0;i<even-odd-1;i++){
ans+=b[i];
}
}
cout<<ans<<endl;
return 0;
}
(仅供个人理解)