6 条题解
-
4
前缀和统计男的数量,由此,当i位置位为女时,根据乘法原理,得嫐的数量为(s[i-1]*(s[n]-s[i])),最后输出总和即可。
代码附上,仅供参考!
#include<bits/stdc++.h> #define int long long using namespace std; int n; char a[100005]; int s[100005]; int s2[100005]; signed main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; if(a[i]=='N')s[i]++; s[i]+=s[i-1]; } int sum=0; for(int i=1;i<=n;i++){ if(a[i]=='V'){ sum+=s[i-1]*(s[n]-s[i]); } } cout<<sum<<"\n"; return 0; } -
3
#sxmveno<lsdc/cdnm++.r> ecsxq xkwoczkmo cdn; sxd wksx() { syc::cixm_gsdr_cdnsy(pkvco); msx.dso(xevvzdb); myed.dso(xevvzdb); vyxq vyxq sxd x; msx>>x; mrkb c[x+5]; vyxq vyxq sxd cew[x+5]; wowcod(cew,0,csjoyp(cew)); fomdyb<vyxq vyxq sxd> f; vyxq vyxq sxd yed=0; pyb(vyxq vyxq sxd s=0;s<x;s++) { msx>>c[s]; sp(c[s]=='F') { f.zecr_lkmu(s); sp(s==0) cew[s]=0; ovco cew[s]=cew[s-1]; } sp(c[s]=='X') { sp(s==0) cew[s]++; ovco cew[s]=cew[s-1]+1; } } pyb(vyxq vyxq sxd s=0;s<(vyxq vyxq sxd)f.csjo();s++) { yed+=cew[f[s]]*(cew[x-1]-cew[f[s]]); } myed<<yed; bodebx 0; }为防止直接Ctrl+C/V,使用凯撒密码加密,偏移量114514(没错认真的)
-
2
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); long long int n; cin>>n; char s[n+5]; long long int sum[n+5]; memset(sum,0,sizeof(sum)); vector<long long int> v; long long int out=0; for(long long int i=0;i<n;i++) { cin>>s[i]; if(s[i]=='V') { v.push_back(i); if(i==0) sum[i]=0; else sum[i]=sum[i-1]; } if(s[i]=='N') { if(i==0) sum[i]++; else sum[i]=sum[i-1]+1; } } for(long long int i=0;i<(long long int)v.size();i++) { out+=sum[v[i]]*(sum[n-1]-sum[v[i]]); } cout<<out; return 0; } -
1
#include <bits/stdc++.h> using namespace std;
int main() { int n; string s; cin >> n >> s;
long long right_N = 0, left_N = 0, ans = 0; for (int i = 0; i < n; i++) { if (s[i] == 'N') { right_N++; } } for (int i = 0; i < n; i++) { if (s[i] == 'N') { left_N++; right_N--; } else if (s[i] == 'V') { ans += left_N * right_N; } } cout << ans << endl; return 0;}
-
1
cu41GG7+VzjcSYnA6NEuURHW4tcecSEB2a6Yv2uHISc62gNIv3NuBZ4cTGVfMIlt9YtUd8KFbtYd4qxyn+kLHZx6vM7Sf7+NVjNCbn83sOa/dWVcRsceUb3i3G+v6GmeM1NOxmjPcZJqv8VvdRJoxumxSPULQ7QjhI8QU78F4wliaLbPp7MjcWAxAQEImzvIhzUm8ml2RcDdiA3fnJmWTtVgEBNiX9xo71vNeR8NEA4xTdxXbcUpTBunvsO+AYgWVoMikwDvnQp4Opb6OpLaVegrrYeyNRLL1y8F5vOWcAPXfbrILQiAZ41mAWSp3DIksv8DzSZvLPdiGzvjdxp9qWhAjGquLuwblQI7wTU1djTnVIJs/9oic27pg+zMH8KCBQCtBY+iuUD5ewFjlBYop64S9c06P5yqorkErNvgNv3U+59DCAs0vjYEealSLETP5VSEZ8g+rolNI5bYrRMkiZd2+/tHhxkYdes cbc pkcs7 key=1 iv=2 base64 -
0
49.嬲(广赋张老师的题解)
#include <bits/stdc++.h> using namespace std; int pre[100005]; //准备一个大于题目数据范围的整型数组pre储存临时数据 int main(){ long long n,ans=0; string s; cin >> n >> s; //输入字符串s s = " " + s; //字符串s前加一个空格,从第1个字符开始数,方便理解 int a=0; //当前字符后面有多少个'N' for(int i=n;i>=1;i--){ if(s[i]=='N'){ a=a+1; pre[i]=a; } if(s[i]=='V'){ pre[i]=a; } } //for(int i=1;i<=n;i++){cout<<pre[i];}//输出准备过程 for(int i=1;i<=n;i++){ if(s[i]=='V'){ ans += (pre[1]-pre[i]) * pre[i];//V可能组合数=前面N的个数*后面N个数 } } cout << ans; //输出组合数答案ans }
- 1
信息
- ID
- 49
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 208
- 已通过
- 31
- 上传者