這題就是求乙個區間[l..r],那開始將l=-10000 r=10000
每次輸入一次判斷,如果為」n」,那麼就將符號反轉,如 >→<= = >=→< <=→>
那麼符號處理好後,
①如果為」>」或」>=」,那麼如果當x大於l且小於或等於r,則l=x
如果當x大於r,則輸出」impossible」
②如果為」
如果當x小於l,則輸出」impossible」
(tips:每當列舉」>」或」
有此公式,媽媽再也不用擔心我不能ac了
**如下:
var s:string;
l,r,n,i:longint;
procedure
doit;
var l2,l1,fw:longint;
fh,s1:string;
begin
l2:=pos(' ',s); fh:=copy(s,1,l2-1); s[l2]:=',';
l1:=pos(' ',s);
s1:=copy(s,l2+1,l1-l2-1);
val(s1,fw);
s[l1]:=',';
if s[l1+1]='n'
then
if fh='>'
then fh:='<='
else
if fh='
then fh:='>='
else
if fh='>='
then fh:='
else
if fh='<='
then fh:='>';
if (fh='>')or(fh='>=') then
begin
if fh='>'
then fw:=fw+1;
if (fw>l)and(fw<=r) then l:=fw
else
if fw>r then
begin writeln('impossible'); close(input); close(output); halt; end;
end;
if (fh='
begin
if fh='
then fw:=fw-1;
if (fwand(fw>=l) then r:=fw
else
if (fwthen
begin writeln('impossible'); close(input); close(output); halt; end;
end;
end;
begin
readln(n);
l:=-10000; r:=10000;
for i:=1
to n do
begin
readln(s);
doit;
end;
writeln(l);
end.
2017 6 4 入門組 NO 6 樹
80 做不出100 先來個80分水法 首先將x,y之間有邊的記錄兩個,存在a陣列裡,乙個是x,y,另乙個是y,x 然後將這個a陣列排序,將a i,1 按公升序排序。then 就可以求出每乙個點與多少個點有邊,求出每乙個點的 子點 的區間,用l和r陣列存 再用dfs求出以1作根,每乙個點的father...
2017 6 4 入門組 NO 1 k好數
方法 資料1 n 1000000,時間複雜度最大o 1000000 6 暴力足夠了,於是,便開始碼暴力 迴圈列舉i,將i轉為字串,每一位的判斷是否超過k 如果每一位都沒超過就 1 方法 動態規劃 找一找每一位於上一位的關係,可以發現。設n 236,k 5,如果最後一位的數x大於k,則上一位數,只能取...
C 程式設計入門題目 No 4
題目 輸入某年某月某日,判斷這一天是這一年的第幾天?程式分析 以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。include using namespace std intmain sum sum day 再加上某天的天數 if...