原题目链接:https://codeforces.com/contest/1257/problem/C
C. Dominated Subarray
题意:如果一个数组中一个元素的个数比其他都多,且这个元素个数最少为2,求这个数组中的子数组,使得子数组也满足这样一个规律。
#include<bits/stdc++.h>
using namespace std;
void solve(){
int n;
scanf("%d",&n);
map<int,int> m;
int ans=1e9;
long long x;
for(int i=0;i<n;i++){
cin>>x;
if(m.find(x)!=m.end()){
ans=min(ans,i-m[x]+1);
}
m[x]=i;
}
if(ans==1e9)ans=-1;
cout<<ans<<endl;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
solve();
}
}
D. Yet Another Monster Killing Problem
题意:
你玩电脑游戏。在这个游戏中,你带领一群m个英雄,你必须清除一个地牢里的n个怪物。每个怪物的特点是它的力量ai。每个英雄的特点是他的权力pi和耐力si。英雄们一天天地清扫地牢。在每天的开始,你选择一个英雄(准确的一个)谁将进入今天的地牢。当英雄进入地牢时,他会遇到前几天没有被打败的第一个怪物的挑战(所以,如果英雄已经打败了k个怪物,英雄就会和k+1的怪物战斗)。当英雄与怪物战斗时,有两种可能的结果:如果怪物的力量严格大于英雄的力量,英雄将从地牢中撤退。今天结束;否则,怪物就被打败了。打败一个怪物后,英雄要么继续与下一个怪物战斗,要么离开地牢。他离开地牢,如果他已经打败了与他这一天耐力相等的怪物数量(因此,第i个英雄每天不能打败超过si个怪物),或者如果所有的怪物都被打败了——否则,他与下一个怪物战斗。当英雄离开地牢时,当前的一天结束。你的目标是打败最后一个怪物。你完成目标所需要的最短天数是多少?每天你必须使用一个英雄;有些英雄可能根本不与怪物战斗。每个英雄可以被使用任意次数。
rrrr