沒有魚,沒有魚餌
沒有魚,有魚餌
有魚,沒魚餌
有魚,有魚餌
每個只能做其中乙個操作,如果在某個點之前已經拿過魚餌,還沒用,就能拿個魚,如果在某個點有魚,就能拿個魚。現在問最多能拿多少條魚?
思路:
貪心,如果有魚那肯定拿魚,魚+1,然後就剩0和1操作了,如果遇到1操作,直接拿魚餌,遇到0操作,看有沒有魚餌,沒魚餌就跳過,有魚餌就魚餌-1,魚+1,最後再加上魚餌數/2
(向下取整)。
能乙個for解決的就別花裡胡哨寫一坨。
#include
using
namespace std;
const
int n=2*
(int
)1e6
+100
;int tc, n, bk[n]
;char s[n]
;int
main()
}else}if
(now>
0) ans+
=now/2;
cout<'\n';}
#ifdef local_define
cerr <<
"time elapsed: "
<<
1.0*
clock()
/ clocks_per_sec <<
" s.\n"
;#endif
return0;
}
題意:
給你乙個字串,現在有兩個操作。
m x當x>0時把字串左邊的x個字元移到右邊去,當x<0時候把右邊-x個字元移到左邊去。
a x問當前字串第x個字元是多少(字串下表1 based)。
題意:
需要動一下腦子的字串簽到題,弄乙個偏移量就沒了。
#include
using
namespace std;
string ts,s;
int q,x;
char op;
intmain()
else
}else
shift%
=len;
}#ifdef local_define
cerr <<
"time elapsed: "
<<
1.0*
clock()
/ clocks_per_sec <<
" s.\n"
;#endif
return0;
}
題意:
給你乙個手的圖形上面的20個點,可能順時針給你也可能逆時針給你這些點,現在問你這個手是左手還是右手。
思路:
可以找到兩條特徵邊,然後判斷一下兩種是右手的情況就行了,否則就是左手。
#include
using
namespace std;
const
double eps=
1e-3
;int tc;
intsgn
(double x)
struct point
point
(double _x,
double _y)
point operator-(
const point &b)
const
double
operator^(
const point &b)
const
double
distance
(point p)
}po[40]
;bool
clockwise
(point a, point b, point c)
intmain()
for(
int i=
20; i<40;
++i) po[i]
=po[i-20]
;bool ok=
false
;//clockwise
for(
int i=
0; i<38;
++i)
cout<<
(ok?
"right"
:"left"
)<<
'\n';}
#ifdef local_define
cerr <<
"time elapsed: "
<<
1.0*
clock()
/ clocks_per_sec <<
" s.\n"
;#endif
return0;
}
2020牛客多校第三場 E
給你乙個a序列,讓你求出對於某個p序列和q序列,pi qi 使得它們花費的費用最少。對於p序列的定義,可以知道,下標和值是交換的,即對於 i,j 這兩個位置,有 pi j,pj i,p pi i,p pj i.即如果p ip i pi 為 j,那麼p jp j pj 一定為i,即讓a陣列裡面的的兩個...
Magic Line(牛客多校第三場)
magic line 首先我先把所有的點按照先橫座標後縱座標 都是由小到大 然後由於題目給的範圍很大,我們可以想到,如果取一條最為豎的線,那麼一定能分開,然後考慮一下最中間的兩個點橫座標相同的情況即可。include include include include include include i...
2019牛客多校第三場
給乙個01字串,求0和1個數相同的最長子序列和子串長度。子串行長度就是 min cnt 0 cnt 1 2 子串的長度也是原題,記錄一下0和1個數差的字首和,然後用乙個陣列記錄前面掃過的0個數和1個數差值的最左位置,字首和的思想更新答案即可。include using namespace std c...