社区讨论

第三问的一个幽默事情

P4604[WC2017] 挑战参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mk9f5tuz
此快照首次捕获于
2026/01/11 15:35
上个月
此快照最后确认于
2026/01/15 13:00
上个月
查看原帖
这份代码会 T 掉。
CPP
u32 f[540005];
	void main() {
	    int n;
	    scanf("%d", &n);
	
	    char *s = new char[n + 1];
	    scanf("%s", s);
	
	    u32 ans;
		
		u32 *p = f + 266667;
		p[0] = 1;
		
	    for (int i = 0; i < n; i++){
	    	if (s[i] == '('){
	    		--p;
				p[0] = 0;
			}else if (s[i] == ')'){
				++p;
			}else{
				--p;
				p[0] = 0;
				for (int j = 0; j <= i; j++)
					p[j] += p[j + 2];
			}
		}
		
		ans = p[0];
		
	    printf("%u\n", ans);
	}
这份代码完全不卡常。
CPP
u32 f[540005];
	void main() {
	    int n;
	    scanf("%d", &n);
	
	    char *s = new char[n + 1];
	    scanf("%s", s);
	
	    u32 ans;
		
		u32 *p = f + 266667;
		p[0] = 1;
		
	    for (int i = 0; i < n; i++){
	    	if (s[i] == '('){
	    		--p;
				p[0] = 0;
			}else if (s[i] == ')'){
				++p;
			}else{
				--p;
				p[0] = 0;
				const int awa = std::min(i, n - i);
				for (int j = 0; j <= awa; j++)
					p[j] += p[j + 2];
			}
		}
		
		ans = p[0];
		
	    printf("%u\n", ans);
	}

回复

0 条回复,欢迎继续交流。

正在加载回复...