站外题求救
  • 板块学术版
  • 楼主aaron0919
  • 当前回复14
  • 已保存回复14
  • 发布时间2023/7/10 09:13
  • 上次更新2023/11/3 10:49:47
查看原帖
站外题求救
818165
aaron0919楼主2023/7/10 09:13

我只能想到用栈实现, 怎么实现??

mymy codecode

#include<bits/stdc++.h>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
#define heap priority_queue
using namespace std;
typedef long long ll;
inline ll read() {
	char c = getchar();
	ll x = 0, y = 1;
	while(c < 48 || c > 57) y = c == 45 ? -1 : 1, c = getchar();
	while(c >= 48 && c <= 57) x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
	return x * y;
}

const int N = 1e3 + 10;
const int INF = 0x3f3f3f3f;

int n, len, cnt;
char s[N];
double a[N];
double st[N];
int main() {
	n = read();
	scanf("%s", &s[1]);
	len = strlen(s + 1);
	for(int i = 1; i <= n; i++) scanf("%lf", &a[i]);
	for(int i = 1; i <= n; i++) {
		if(s[i] == '(') {
			/*pass*/;
		}
		else if(s[i] == ',') {
			st[++cnt] = -2;
		}
		else if(s[i] == ')') {
			/*pass*/;
		}
		else {
			if(st[cnt] == -2) {
				cnt -= 2;
				st[cnt] = 1 - (1 - st[cnt]) * (1 - a[s[i] + 'A' - 1]);
			}
			else if(st[cnt] == -1) {
				/*pass*/;
			}
		}
	}
	printf("%.4lf", st[1]);
	return 0;
}

/*
求串联断电的公式为1-(1-x)*(1-y)
并联为x*y
*/
2023/7/10 09:13
加载中...