本题原版:
题目背景:
(一个奇怪的题目背景可以跳过了)
cxk看了一眼幼儿园的历史试卷,就把它扔给了你,然后跑去练习唱,跳,rap,篮球。
人生五十年,与天地相较,如梦似幻
----------------某看起来并不来自中国的历史试卷
在并不众所周知的日本战国历史中,有一场轰轰烈烈的烧烤大会。(具体请在做完题后百度本能寺之变)
题目描述:
明智光秀在京都唯一的出口处放了一把大火,火蔓延到了很多的据点。已知信长距离出口有n个据点,据点i的火力值是ai。信长从l据点走到r据点所受的伤害是Σai(l<=i<=r)。每过一段时间,某个据点的火力值可能会变。为了逃出本能寺(达成zw2的he)在接下来q的时间里,信长会时不时问你从l走到r和从l1走到r1的最大伤害,以便损失更少的体力逃出去,当然这段时间内某些点的火力值会改变。
输入格式:
第一行,两个整数n,q
第二行,n个整数,第i个数为ai
接下来q行,分两种情况。
第1个数为0:输入m,b,代表第i个点的火力值改为b
第1个数为1:输入l,r,l1,r1。这是一次询问
输出格式:
对于每次询问,输出最大的伤害值,换行
但是数据范围过大不好(xiang)讲so它就变成了以下版本
因为数据太高了之后窝也不会所以标程就是个暴力了(玄学估计复杂度暴力能过)
怎么暴力呢?
每读入一个字符串,就暴力的将它与前面的字符串比较,用ans数组记录每个字符串出现的次数。
在比较时,从后往前扫,最终每个字符串出现的次数记录在ans里面,第一次出现该字符串时的编号为下标(极其暴力极其朴素欢迎踩爆标程)
#include<iostream>//bao li O(n^2) #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> using namespace std; int n,all,ans[1005],ans2[1005]; const int mod1=1e9+7; char c[1005][105]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%s",c[i]);bool flag=0; int kans=0,last=i; for(int j=i-1;j>=1;j--) { if(strcmp(c[j],c[i])==0) { kans++; last=j; } } ans[last]+=kans; } int maxn=-1,maxi=-1; for(int i=1;i<=n;i++) { if(ans[i]>maxn) { maxi=i;maxn=ans[i]; } } printf("%s",c[maxi]); }
暴力的标程竟然过了wz小姐姐的数据