Warning: session_start(): open(/tmp/sess_7b233f02a3ff42163cd57e846c468ea5, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Writing /data/wiki/data/cache/d/de2edb2fcb553ea79b79c722a4e13dbc.captchaip failed

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:manespace:codeforces_round_652_div2 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:manespace:codeforces_round_652_div2

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
2020-2021:teams:manespace:codeforces_round_652_div2 [2020/06/27 23:15]
iuiou
2020-2021:teams:manespace:codeforces_round_652_div2 [2020/06/27 23:16] (当前版本)
iuiou
行 102: 行 102:
 考虑完一局中必胜与必输,注意这含义是可以凭借自己的意愿在先手时必胜或必输。如果在上一句满足必胜必输都可以,则比赛完全掌控在 考虑完一局中必胜与必输,注意这含义是可以凭借自己的意愿在先手时必胜或必输。如果在上一句满足必胜必输都可以,则比赛完全掌控在
 先手的手里,之后先手可以随意获胜或输掉来获得最终的结果。如果上一句既没有办法获胜有没有办法一定输,那么比赛掌握在对方手里,对方可以操控比赛,上一句可以必胜且没办法输,则对方先手,结果要取反,上一句不能保证赢但是必输,则自己先手。这样最后可以得到答案。(双方都会尽量让自己掌握比赛的主导权) 先手的手里,之后先手可以随意获胜或输掉来获得最终的结果。如果上一句既没有办法获胜有没有办法一定输,那么比赛掌握在对方手里,对方可以操控比赛,上一句可以必胜且没办法输,则对方先手,结果要取反,上一句不能保证赢但是必输,则自己先手。这样最后可以得到答案。(双方都会尽量让自己掌握比赛的主导权)
 +
 +<​hidden>​
 +<code c++>
 +#include <​bits/​stdc++.h>​
 +using namespace std;
 +const int maxn=1e5+13;​
 +typedef long long ll;
 +int win[maxn];//​记录每一局是否肯定赢 ​
 +int lose[maxn];//​记录每一局是否肯定输 ​
 +ll s[maxn],​e[maxn];​
 +bool getwin(ll s,ll e)//​能否根据自己的意愿让先手赢 ​
 +{
 + if(e&​1)
 + {
 + if(s%2==0)
 + {
 + return 1;
 + }
 + else return 0;
 + }
 + else
 + {
 + if(2*s>​e) ​
 + {
 + if(s&1) return 1;
 + else return 0;
 + }
 + else if(4*s>​e) return 1;
 + else return getwin(s,​e/​4);​
 + }
 +}
 +bool getlose(ll s,ll e)//​能否根据自己的意愿让先手输 ​
 +{
 + if(2*s>​e) return 1;
 + else return getwin(s,​e/​2);​
 +}
 +int main()
 +{
 + int t;
 + scanf("​%d",&​t);​
 + lose[0]=1;
 + for(int i=1;​i<​=t;​i++) scanf("​%lld%lld",&​s[i],&​e[i]);​
 + for(int i=1;​i<​=t;​i++)
 + {
 + if(lose[i-1]&&​win[i-1])
 + {
 + return printf("​1 1"),0;
 + }
 + else if(!lose[i-1]&&​!win[i-1])
 + {
 + return printf("​0 0"),0;
 + }
 + else if(lose[i-1])
 + {
 + win[i]=getwin(s[i],​e[i]);​
 + lose[i]=getlose(s[i],​e[i]);​
 + }
 + else
 + {
 + win[i]=!getwin(s[i],​e[i]);​
 + lose[i]=!getlose(s[i],​e[i]);​
 + }
 + }
 + printf("​%d %d",​win[t],​lose[t]);​
 +}
 +</​code>​
 +</​hidden>​
2020-2021/teams/manespace/codeforces_round_652_div2.1593270944.txt.gz · 最后更改: 2020/06/27 23:15 由 iuiou