解题思路:
基本的博弈都可以用递归来求解,这道题由于想不到有效解法,则用 递归+优化
1. 尝试所有走法,把局面交给对手,如果对手的局面是必输,则当前局面必胜;
2. 尝试所有走法后,还是赢不了那 当前局面比输
递归思路:
dfs(局面s){
尝试走一步s变成s1,把s1交给对手
如果存在一个s1局面必输:返回赢了;
返回必输;
}
不优化 只有50%成绩
优化思路:1.优先当前可选的数字大的卡片(数字越大,则约倍数在100内越少,所以递归的层数就越少)
2.常数优化,递归之前预处理每张卡片的下一次可选卡片集合
注意事项:
这个C语言网不知为什么代码AC不了一直超时17%,我去蓝桥杯官网提交了两次都600msAC了
参考代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <stack> #define _for(i,a,b) for(int i=a;i<b;i++) #define _unfor(i,a,b) for(int i=a;i>=b;i--) #define mset(a,val,n) for(int i=0;i<n;i++)a[i]=val; #define FO freopen("out.txt","w",stdout) #define RI(a) scanf("%d",&a) using namespace std; typedef long long LL; int a[111],b[111],c='A'; vector<int> G[111]; int ri(){ int x=0; while(!isdigit(c))if((c=getchar())=='\n')return 0; while(isdigit(c)){x=x*10+c-'0';c=getchar();} return x; } int dp(int i){ if(!a[i])return 0; a[i]--; int len=G[i].size(); _for(k,0,len){ int j=G[i][k]; if((!(i%j)||!(j%i))&&a[j]) if(!dp(j)){a[i]++;return 1;} } a[i]++; return 0; } int main(){ int x; while(x=ri()){ a[x]++; if(c=='\n')break; } //预处理 _for(i,1,101) _unfor(j,100,1)if((!(i%j)||!(j%i))&&a[j]) G[i].push_back(j); // while(x=ri()){ b[x]++; if(c=='\n')break; } _for(i,1,101)if(b[i]) if(!dp(i)){printf("%d\n",i);return 0;} printf("%d\n",-1); return 0; }
0.0分
7 人评分
朱朱同学。一个一个来,你他妈的那个垃圾,我他妈真的无语呀,凭什么?凭什么?凭什么你个垃圾?都是你你个小瘪三,就你拍你会写代码,你他妈没实力,就他妈别逼逼,好不好?我无语了好吧。再见,小明,上他妈你谁呀你?这个
不是不是我说这不对吧?你他妈你个傻逼垃圾袋吗我他妈真的无语他妈你个垃圾玩意儿我真的他妈很无语啊你知道吗你就你他妈就你们词汇呀我他妈你这么垃圾就别给我写了吗天天逼逼逼的妈妈天天写你妈,真的无语,你个什么垃圾东西,我他妈就你也配啊,天天逼逼逼,妈的,就你瞎逼逼呀,你个小逼,我他妈真的无语,我他妈一群死你妈逼的,我他妈把你鸡巴鸡巴大家不要去超市买他买垃圾东码真的无语
他的输入文件应该增加了一些,卡数据量了...
stephen 2023-04-23 17:43:04 |
什么狗屎垃圾袋吗,真他妈无语,你个废物,我他妈的大家不要看他的体节,给他评差评,我擦折算比例结构比肩背东西,只有八十三分踩你妈
stephen 2023-04-23 17:52:15 |
不是不是我说这不对吧?你他妈你个傻逼垃圾袋吗我他妈真的无语他妈你个垃圾玩意儿我真的他妈很无语啊你知道吗你就你他妈就你们词汇呀我他妈你这么垃圾就别给我写了吗天天逼逼逼的妈妈天天写你妈,真的无语,你个什么垃圾东西,我他妈就你也配啊,天天逼逼逼,妈的,就你瞎逼逼呀,你个小逼,我他妈真的无语,我他妈一群死你妈逼的,我他妈把你鸡巴鸡巴大家不要去超市买他买垃圾东码真的无语
stephen 2023-04-23 17:54:24 |
低调点,你什么实力妈了个逼的,真的是操你这死人代吗?哎呀,还错你,你肯定我要打你的官司的,我啊,你这是犯法的喔,是不是有病啊?我打死你啊。死人死人mk真的是跟周成轩一个德性。还跟梁思涵一个德性。真的是啊,跟杜少轩谈两次啊。不好意思,说错了,真的是坏的要死,我真的是打死你呀,周成轩喜欢梁诗涵。变态,那个变态真的是坏的要死,我推小瘪三。
小黑子这里没你的坤蛋吃 2023-05-04 17:42:42 |
我擦6
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:611 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:626 |
WU-C语言程序设计教程(第三版)课后习题12.1 (C++代码)浏览:1024 |
【求[X,Y]内被除3余1并且被除5余3的整数的和】 (C语言代码)浏览:703 |
字符逆序 (C语言代码)浏览:645 |
1157题解浏览:769 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:585 |
sizeof的大作用 (C语言代码)浏览:1592 |
模拟计算器 (C++代码)浏览:885 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:721 |