AB没有意义,上代码
A小红的新周赛
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
signed main()
{
ll a,b,c,d,e,f,g;
cin>>a>>b>>c>>d>>e>>f;
cout<<a+b+c+d+e+f<<endl;
}
B小红的字符串
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
signed main()
{
string s;
cin>>s;
vector<string>v;
for(int i=0;i<s.size()-1;i++)
{
string s1="";
char c1=s[i],c2=s[i+1];
s1+=c1;
s1+=c2;
v.emplace_back(s1);
}
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++)
{
cout<<v[i]<<endl;
}
}
C小红的炸砖块
题意:给一个全是石头的矩阵,小红会随机仍炸弹到矩阵里,被炸的地方上面的石头会下来
思路:模拟,被扔的地方向上搜索,直到顶部进行标记,假如遇到已经被标记的地方,在标记下面再标记
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll mp[2000][2000];
signed main()
{
memset(mp, 0, sizeof(mp));
ll n, m, k;
cin >> n >> m >> k;
for (int i = 1; i <= k; i++) {
ll a, b;
cin >> a >> b;
if(mp[a][b]==1)continue;;
while (1)
{
if (mp[a][b] == 1)
{
mp[a+1][b ] = 1;
break;
}
if (a == 1&&mp[a][b]==0)
{
mp[a][b] = 1;
break;
}
a--;
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
if (mp[i][j] == 1)
{
cout << '.' ;
}
else
{
cout << '*';
}
}
cout << endl;
}
}
D小红统计区间(easy)
题意:给一个数组,判断有多少个区间满足区间和大于等于k
思路:本来一看就觉得是线段树,可惜完全忘记线段树咋写了,最后用双指针写的
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ll n, k;
cin >> n >> k;
vector<ll> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
vector<ll> prefixSum(n+1, 0);
for (int i = 1; i <= n; i++) {
prefixSum[i] = prefixSum[i-1] + a[i-1];
}
ll left = 0, right = 1;
ll ans = 0;
while (right <= n) {
ll currentSum = prefixSum[right] - prefixSum[left];
if (currentSum >= k) {
ans += n - right + 1;
left++;
} else {
right++;
}
}
cout << ans << endl;
return 0;
}
浙公网安备 33010602011771号