你搁这出脑筋急转弯呢T_T
给出一棵以 1 为根的有根树,一开始每个节点都是白色的。David 和 Adam 在树上博弈,David 先手,每次每个人需要选择树上一个白色的点,并把这个点以及其到根路径上的所有点染成黑色。无法操作的人输。
假定两人均绝顶聪明,你需要求出谁会获胜。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#include<iostream> using namespace std; int main() { cout<<"David"<<endl; return 0; }
|
脑筋急转弯二号
定义基环树为n个节点、n条边的、没有自环和重边的无向连通图。
定义一个图的直径是任意两点最短路的最大值。
小红想知道,n个节点构成的所有基环树中,最小的直径是多少?
1 2 3 4 5 6 7 8 9 10
| #include<iostream> using namespace std; int main() { int n; cin>>n; if(n!=3)cout<<2<<endl; else cout<<1<<endl; return 0; }
|
小红拿到了一个字符串,字符串仅由小写字母和’?’字符组成。
小红会将每个’?’替换成任意小写字母。她希望最终字符串变成回文串。
小红想知道,有多少种不同的方案?答案请对1e9+7取模。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include<iostream> using namespace std; const int N = 200010, MOD = 1e9 + 7;
string s;
int main() { cin >> s; int l = 0, r = s.length() - 1; long long ans = 1; while (l <= r) { if (s[l] == '?' || s[r] == '?') { if (s[l]==s[r]) ans *= 26,ans%=MOD; } else { if (s[l] != s[r]) { ans = 0; break; } } l++, r--; } cout << ans << endl; return 0; }
|