隔了一周才想起来补,可见这一周有多么松懈
A. Two Groups
签到,正数一组,负数一组。
namespace lovelive{
typedef long long LL;
LL s1,s2,n,ai;
void main(){
cin>>n;
s1 = s2 = 0;
for(int i=1;i<=n;i++){
cin>>ai;
if(ai<0)s1 -= ai;
else s2 += ai;
}
cout<<abs(s2-s1)<<endl;
return;
}
}
B. BAN BAN
一开始看成了连续子序列,导致白费力。
构造答案,B不动,尽可能把后面的N和前面的A交换,使得所有的N都出现在任意的A前面。
namespace lovelive{
typedef long long LL;
LL n,cnt;
void main(){
cin>>n;
cout<<(n+1)/2<<endl;
for(int i=0;i<(n+1)/2;i++){
cout<<(i*3+2)<<" "<<((n-i)*3)<<endl;
}
}
}
C. Swap Game
思考过程都在注释里了。
/*******************************************
* 判断策略时默认当前玩家没输
* 1 0 0
* 1 1 0
* 明显准则:
* 1. 如果 a2-an 出现了 0,下一位玩家必输
* 2. 否则,如果 a1 = 1,当前玩家必输
*
* 2 2 1
* 如果Alice 选择了 [3] -> 1 ,
* Bob 将面对: 1 2 1
* Bob 必输
* 如果Alice 选择了 [2] -> 2 ,
* Bob 将面对: 2 1 1,
* Bob 可以将a1变成1,这样Alice必输
* => 由此可得:
* 3. 否则,如果 a2-an 出现了1,下一位玩家必输
*
* 2 2 2
* Alice : (2) (2) [2] => [2] (2) [1]
* Bob : (2) (2) [1] => [1] (2) [1]
* 无论Alice怎么选,轮到她的时候a1必为1,她必输
* => 由此可得:
* 4. 否则,如果 a1 = 2,当前玩家必输
*
* 4 3 2
* 她肯定想把2塞进 a1 里面,这样她就赢了
\******************************************/
namespace lovelive{
typedef long long LL;
LL n,a1,ai,minai;
void main(){
cin>>n>>a1>>minai;
for(int i=3;i<=n;i++){
cin>>ai;
minai = min(minai,ai);
}
if(minai<a1){
cout<<"Alice"<<endl;
}else{
cout<<"Bob"<<endl;
}
return;
}
}