题单链接: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; }
|