有n名游客在西湖游玩,现在他们要上船观光。游客编号1到n。船的最大承重为W。第i个人的重量为c[i]。现在有若干次游客上下船的操作,请统计一下整个过程中船所承受过的最大总重量是多少。
单组测试数据。
第一行输入三个整数n(1<=n<=20), m(1<=m<= 500 ) 和 W(1<=W<= 10000)。
接下来n行输入n名游客的重量c[i](1<=c[i]<=1000)。
接下来m行,每行一个1到n之间的整数,表示游客的编号。表示该游客的上/下船,如果该游客已经在船上,那么该游客就下船,反之就上船。刚开始的时候所有游客都不在船上。
输出一个整数表示整个上下船过程中,船所受到的最大重量。如果最大重量超过了船的最大承重能力,输出Oh, My God!
样例输入1
2 2 10
5
7
1
2
样例输入2
3 6 10
2
5
7
2
1
2
3
1
3
样例输出1
Oh, My God!
样例输出2
9
通过这个题目,主要学会了给结构体初始化内部变量,思路也不是很难想。直接上代码吧
更新:现在发现struct结构体与class类差别很小,其实所谓结构体赋初值,本质上其实就是相当于类的构造函数
讲解代码
#include<iostream>
using namespace std;class peron{private :string s;int age;bool ox;public:peron(){s="wang";age=15;ox=true;}void print(){cout<<s<<" "<<age<<" "<<ox<<endl;}};int main()
{peron per1;per1.print();peron per2;per2.print();}
输出:wang 15 1
wang 15 1
原题代码如下:
#include<iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define ll long long
#define pi 3.141592654
struct node
{ll a;bool r;node()//初始化r,使其全部为真{r=true;}
};
node ans[10000];
int main()
{ll n,m,w;ll j;cin>>n>>m>>w;ll sum=0;ll max1=-1000000;for(ll i=1;i<=n;i++){cin>>ans[i].a;}while(m--){cin>>j;if(ans[j].r==true) {ans[j].r=false;sum+=ans[j].a;}else {sum-=ans[j].a;ans[j].r=true;}if(sum>max1) max1=sum;if(sum>w) {cout<<"Oh, My God!";return 0;}}cout<<max1;}
本文发布于:2024-01-31 19:20:22,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170670002530774.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |