题单链接:https://ac.nowcoder.com/discuss/926597

NC207040丢手绢

9.90

如下:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int main(){
int n;
cin>>n;
int a[N];
int sum=0;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
int d=0,j=0,ans=0;;
for(int i=0;i<n;i++){
while(j<n&&a[j]+d<=sum/2){
d=d+a[j];
j++;
}
ans=max(ans,d);
d=d-a[i];
}
cout<<ans;

return 0;
}

NC16589机器翻译【题解】【入门向】

8.5

题目来源:机器翻译

hello

首先明确需求:

//一个内存,输入,存储查字典次数的变量
vector<int>a;//内存容器

for(int i=0;i<n;i++)
{
cin>>b[i];//输入
}

int ans=0;//存储查字典次数的变量

在循环内,我们需要知道是否内存内有和输入重复的元素:

for(auto it=a.begin();it!=a.end();it++) 
{
if(*it==b[i]) flag=0;
}

如果没有重复,我会push进一个输入:

if(flag) 
{
a.push_back(b[i]);ans++;
}

另外,如果内存达到上限,我会把内存第一个元素删掉:

if(a.size()==m+1) a.erase(a.begin());

就OK辽!

//一个内存,输入,存储查字典次数的变量
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<int>a;
int ans=0;
int m,n;
cin>>m>>n;
int b[10000];
for(int i=0;i<n;i++)
{
bool flag=1;
cin>>b[i];
for(auto it=a.begin();it!=a.end();it++)
{
if(*it==b[i]) flag=0;
}
if(flag)
{
a.push_back(b[i]);ans++;
}
if(a.size()==m+1) a.erase(a.begin());
}
cout<<ans;
return 0;
}

hahahaha