1,枚举(买股票)

买卖股票的最佳时机
小算是一个“优秀又不甘平庸的韭菜”,想要在股票市场上大赚一笔。这天小算又看中了一只潜力股。现在已知这只股票在n天内的价格为P0,P1,….,Pn-1,小算为了规避风险,只买了一股股票,小算在这n天内只有一次买卖机会,并且不能在买人股票当天或买入股票之前卖出股票,现在请你设计一个程序,计算出小算能获得的最大利润。

输入格式:
第1行为一个整数n,第2行为n个整数P0,P1,….,Pn-1,表示每天的股价。
输出格式:
输出一个整数,即最大利润。
数据范围:
1≤n≤10^5;
1≤pi≤10^4,i=0,1……,n-1。
样例输入:

6
5 8 1 4 6 5
样例输出:

5

代码:

#include using namespace std;int n, a[1000],max1=0;int main() {cin >> n;for (int i = 0; i> a[i];}for (int i = 0; i < n; i++){for (int j = i + 1; j  max1)max1 = a[j] - a[i];}}cout << max1 << endl;return 0;}

1.2贪心:

#include using namespace std;int n, a[1000],max1=0,min1=1000;int main() {cin >> n;for (int i = 0; i> a[i];}for (int i = 0; i max1)max1 = a[i] - min1;if (a[i] < min1)min1 = a[i];}cout << max1 << endl;return 0;}

map遍历

灌溉

#includeusing namespace std; const int N=150;int a[N][N];int b[N][N];int m,n,x;int c;int main(){cin>>n>>m;cin>>x;while(x--){int x,y;cin>>x>>y;a[x][y]=1;}cin>>c;while(c--){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]==1){b[i][max(1,j-1)]=b[i][min(m,j+1)]=b[max(1,i-1)][j]=b[min(n,i+1)][j]=1;}}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(b[i][j]==1)a[i][j]=b[i][j];}}}int ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]==1)ans++;}}cout<

模拟:扫雷:

#includeusing namespace std; const int N=150;int mp[N][N];int ans[N][N]; int main(){int n,m;cin >>n>>m;for(int i=1;i<=n;i++){for(int j=1;j>mp[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(mp[i][j]==1){ans[i][j]=9;continue;}//扫描九宫格 计算方格周围的地雷的数量for(int x=max(1,i-1);x<=min(n,i+1);x++){for(int y=max(1,j-1);y<=min(m,j+1);y++){if(mp[x][y]){ans[i][j]++;}}}}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<

前缀和

#includeusing namespace std;using ll = long long;const ll N = 100001;int a[N], prefix[N];int main(){ll n;cin >> n;for (int i = 1; i > a[i];}for (int i = 1; i > q;while (q--)//查询{ll b, c; cin >> b >> c;cout << prefix[c] - prefix[b - 1] << '\n';}return 0;}