- 阳子墨 的博客
8月集训 DAY7
- @ 2024-8-7 14:02:43
8月集训 DAY7
统计单词数(简单语法——string)
错误原因
无
思路
现将原文章全部转换成大写或小写 再将单词全部转换成大写或小写 让前后都加上空格(这样就不会找到单词中的单词)然后再find()如果是-1 就输出-1 否则就一直找 每找一个cnt++ 最后输出cnt 和 第一个位置
(本题太水沝淼了)
代码
#include<bits/stdc++.h>
using namespace std;
int cnt,xb,xb2;
int main()
{
freopen("cal.in","r",stdin);
freopen("cal.out","w",stdout);
string s,s2;
getline(cin,s2);
getline(cin,s);
for(int i=0;i<s.size();i++)
{
if(s[i]<='Z'&&s[i]>='A') s[i]=s[i]+32;
}
for(int i=0;i<s2.size();i++)
{
if(s2[i]<='Z'&&s2[i]>='A') s2[i]=s2[i]+32;
}
s=" "+s+" ";
s2=" "+s2+" ";
if(int(s.find(s2))==-1) cout<<-1;
else
{
cnt++;
xb=int(s.find(s2));
xb2=xb;
while(xb<s.size())
{
if(int(s.find(s2,xb+1))==-1) break;
xb=int(s.find(s2,xb+1));
cnt++;
}
cout<<cnt<<" "<<xb2;
}
}
瑞士轮(模拟——归并优化)
超时的原因
写的暴力
代码
#include<bits/stdc++.h>
using namespace std;
int n,r,q;
struct man
{
int num;
int fenshu;
int shili;
};
man a[200010],win[100010],lost[100010];
bool cmp(man b,man c)
{
if(b.fenshu!=c.fenshu) return b.fenshu>c.fenshu;
else return b.num<c.num;
}
int main()
{
freopen("ruishi.in","r",stdin);
freopen("ruishi.out","w",stdout);
cin>>n>>r>>q;
for(int i=1;i<=2*n;i++)
{
cin>>a[i].fenshu;
a[i].num=i;
}
for(int i=1;i<=2*n;i++) cin>>a[i].shili;
sort(a+1,a+2*n+1,cmp);
while (r --)
{
int s1=0,s2=0;
s1=0,s2=0;
for(int i=1;i+1<=2*n;i=i+2)
{
if(a[i].shili>a[i+1].shili)
{
a[i].fenshu++;
win[++s1].num=a[i].num;
win[s1].shili=a[i].shili;
win[s1].fenshu=a[i].fenshu;
lost[++s2].num=a[i+1].num;
lost[s2].shili=a[i+1].shili;
lost[s2].fenshu=a[i+1].fenshu;
}
else
{
a[i+1].fenshu++;
win[++s1].num=a[i+1].num;
win[s1].shili=a[i+1].shili;
win[s1].fenshu=a[i+1].fenshu;
lost[++s2].num=a[i].num;
lost[s2].shili=a[i].shili;
lost[s2].fenshu=a[i].fenshu;
}
}
int j1=1,j2=1,oip=1;
j1=1,j2=1,oip=1;
while(j1<=n&&j2<=n)
{
if(cmp(win[j1],lost[j2]))
{
a[oip].num=win[j1].num;
a[oip].fenshu=win[j1].fenshu;
a[oip].shili=win[j1].shili;
j1++,oip++;
}
else
{
a[oip].num=lost[j2].num;
a[oip].fenshu=lost[j2].fenshu;
a[oip].shili=lost[j2].shili;
j2++,oip++;
}
}
while(j1<=n)
{
a[oip].num=win[j1].num;
a[oip].fenshu=win[j1].fenshu;
a[oip++].shili=win[j1++].shili;
}
while(j2<=n)
{
a[oip].num=lost[j2].num;
a[oip].fenshu=lost[j2].fenshu;
a[oip++].shili=lost[j2++].shili;
}
}
cout<<a[q].num;
}