把已經買過的遊戲給標記一下,然後從第一款遊戲開始買,如果還可以買並且沒有被標記過那麼買
#include
using
namespace std;
long
long n,ans,num,x;
struct node
a[100010];
inline
intread()
while
(isdigit
(ch)
)res=
(res<<1)
+(res<<3)
+(ch&15)
,ch=
getchar()
;return res*f;
}map<
int,
int>vis;
intmain()
//看看能買幾個
else
if(i+x>num)
break
;
cout<
x=0;
for(
int i=
1;i<=
1e9;i++)if
(!vis[i]
&&i+x<=num)
買哪幾個
我們先用乙個long double 型別的數,存下n的二分之三次的值,然後列舉列舉q的大小,再通過兩個數去算p,分兩種情況,四捨和五入,算出答案,取min
#include
using
namespace std;
long
long n,m,a1,a2;
long
double nf;
double minn=
1000000000.00
;double
abss
(double x)
intmain()
if(t4
} cout<
'/'<
return0;
}
【輸出格式】
所有的組合,每乙個組合佔一行且其中的元素由小到大的順序排列,每個元素佔三個字元的位置,所有的組合也按字典順序。
平淡無奇的爆搜,只是要注意,輸出時候,要有三的場寬
sg函式乙個公平遊戲(impartial game)可以抽象為:在乙個dag上有一枚棋子,兩人輪流移動它,不能移動者輸。
sg函式的定義如下。沒有出度的點的sg值為0,其它點的sg值為它的後繼的sg值的mex。即sg(u)=mex,u→vsg(u)=mex,u→v。
在sg值為0的點上,先手必敗,而在其它點上先手必勝。
資料規模較大時,一般來說,可以通過打表找到sg函式的通項。
其它時候可以遞推求。求mex用trie樹上的跳法。
#include
using
namespace std;
long
long n,m,x;
long
long ans;
int vis[2]
;inline
intmex
(int x,
int y)
inline
intread()
inline
intsg
(int x)
else
return
mex(
sg(x-1)
,sg(x/2))
;}intmain()
if(ans)cout<<
"yjc"
<
else cout<<
"cjy"
<
}return0;
}
參 暑期集訓2期3
直接列舉 3000到3000也沒關係。列舉最後的x,容易發現x 的取值不會在序列取值之外。不開long long 會掛掉30分。題目大意兩排數,你的目標是將數值相同的放到一起。滾動不消耗代價。提起消耗的代價為數值。你需要最小化提起的數值限制,也就是移動的最大值盡可能小 30分演算法 一旦乙個數值使用...
暑期集訓2期5
小李是希望小學六年級的學生,在一次數學課上,張老師出了一道題,小李很快就答出來了。這個題目是這樣的 給定乙個正整數 n,請求出 2 n之間長度最長的 成等差數列的素數 質數 例如 當 n 的值為 40 時,在 2 40 之間的全部素數有 2 3 5 7 11 13 17 19 23 29 31 37...
暑期集訓2期6
如果二叉樹的左右子樹的結構是對稱的,即兩棵子樹皆為空,或者皆不空,則稱該二叉樹是對稱的。程式設計判斷給定的二叉樹是否對稱。例 如下圖中的二叉樹t1是對稱的,t2是不對稱的。二叉樹用順序結構給出,若讀到 則為空,二叉樹t1 abcde,t2 abcd e,如果二叉樹是對稱的,輸出 yes 反之輸出 n...