noip2011普及組第四題

2021-07-16 13:46:09 字數 516 閱讀 8856

要用棧寫比較方便,速度也還挺快o(n),主要是每遇到乙個非括號符號就插兩個數進數字棧裡,遇到符號就從優先順序入手,比如匹配到加號然後棧裡面有乘號就要先解決棧裡面的乘號,直到遇到『(』符號為止。

有乙個小技巧就是開頭先再字串後面加乙個『)』,再把左括號加入棧內。等下就不用去清棧,可以保證執行完後棧必空。

#include#include#include#define mod 10007

#includeusing namespace std;

int l;

char s[100011];

stackv0,v1;

stackt;

void add()

void mul()

int main()

{ scanf("%d", &l);

scanf("%s", s);

s[l++]=')';s[l]='\0';

t.push('(');v0.push(1);v1.push(1);

for(int i=0;i

表示式的值(NOIP2011 普及組第四題)

對於 1 位二進位制變數定義兩種運算 運算的優先順序是 1.先計算括號內的,再計算括號外的。2.運算優先於 運算,即計算表示式時,先計算 運算,再計算 運算。例如 計算表示式a b c 時,先計算b c,其結果再與a 做 運算。現給定乙個未完成的表示式,例如 請你在橫線處填入數字0 或者1,請問 有...

NOIP2011普及組 瑞士輪

題目 洛谷p1309 codevs1132 vijos p1771 題目大意 要你模擬瑞士輪賽制,求出r輪後第q名選手的編號。解題思路 首先對所有選手按分數從大到小進行排序,然後模擬比賽。因為原本是排好序的,贏的加1分,輸的扣1分,所以贏的人和輸的人也是分別有序的。所以我們可以把每輪贏的人扔進乙個陣...

NOIP 2011普及組 瑞士輪

背景 在雙人對決的競技性比賽,如桌球 羽毛球 西洋棋中,最常見的賽制是淘汰賽和迴圈賽。前者的特點是比賽場數少,每場都緊張刺激,但偶然性較高。後者的特點是較為公 平,偶然性較低,但比賽過程往往十分冗長。本題中介紹的瑞士輪賽制,因最早使用於 1895 年在瑞士舉辦的西洋棋比賽而得名。它可以看作是淘汰賽與...