7-1 自动打包机 (15 分)
#include<bits/stdc++.h>
using namespace std;
queue<int> q;
int main(){
int n,w,x,sum=0,cnt_box=0,cnt_g=0,cnt=0;
cin>>n>>w;
for(int i=0;i<n;i++){
cin>>x;
if(sum+x<w) {
cnt++;
sum+=x;
}
else if(sum+x==w){
cnt_g+=cnt+1;
cnt_box++;
sum=0;
cnt=0;
}
}
cout<<cnt_box<<" "<<cnt_g;
return 0;
}
7-2 用药统计 (20 分)
#include<bits/stdc++.h>
using namespace std;
map<string,int> mp;
struct hh{
int num,k;
set<string> s;
};
int main(){
int n,max_=-1;
string yao,max_s;
cin>>n;
vector<hh> bingli(n);
for(int i=0;i<n;i++){
cin>>bingli[i].num>>bingli[i].k;
for(int j=0;j<bingli[i].k;j++){
cin>>yao;
mp[yao]++;
bingli[i].s.insert(yao);
}
}
for(auto it=mp.begin();it!=mp.end();it++){
if(it->second>max_) {
max_=it->second;
max_s=it->first;
}
}
cout<<max_s<<" "<<max_<<endl;
for(int i=0;i<n;i++){
if(bingli[i].s.find(max_s)!=bingli[i].s.end())
printf("%04d\n",bingli[i].num);
}
}
7-3 五彩斑斓的黑 (20 分)
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,cnt=0;
string s;
set<string> sp,sh;
cin>>n;
string array[n];
for(int i=0; i<n; i++) {
cin>>s;
sp.insert(s);
array[i]=s;
}
cout<<sp.size()<<endl;
for(int i=0; i<n; i++) {
if(sh.find(array[i])==sh.end()){ //set中还没有加入这个
if(cnt>0) cout<<" ";
cout<<array[i];
sh.insert(array[i]);
cnt++;
}
if(cnt==sp.size()) break;
}
return 0;
}
7-4 假新闻 (20 分)
做到这里脑子很困,测试点2运行超时,看了半个小时没查出原因…
#include<iostream>
#include<map>
using namespace std;
int web[10001]= {0};
map<int,int> ans;
int main() {
int n,m,max_=0,max_net;;
cin>>n>>m;
for(int i=0; i<m; i++) { //6个事
map<int,int> mp;
for(int j=0; j<n; j++) { //n个网
cin>>web[j];
mp[web[j]]++;
}
int k=0,views[n];
for(int j=0; j<n; j++) {
views[j]=n-mp[web[j]];
k=max(views[j],k);
}
for(int j=0; j<n; j++) {
if(views[j]==k) ans[j]++;
}
}
for(int i=0; i<n; i++) {
if(ans[i]>max_) {
max_net=i+1;
max_=ans[i];
}
}
cout<<max_net;
return 0;
}
7-5 静态链表的秩 (25 分)
#include<bits/stdc++.h>
using namespace std;
map<int,int> mp;
int main(){
int n,end_,next_i;
cin>>n;
int cnt=n;
int ans[n];
for(int i=0;i<n;i++){
cin>>next_i;
mp[next_i]=i;
}
int previous_index=mp[-1];
while(cnt){
ans[previous_index]=cnt;
previous_index=mp[previous_index];
cnt--;
}
for(int i=0;i<n;i++){
if(i>0) cout<<" ";
cout<<ans[i];
}
return 0;
}
比较简单的一次