最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

CodeforcesRound#281(Div.2)_html/css

来源:懂视网 责编:小采 时间:2020-11-27 15:59:11
文档

CodeforcesRound#281(Div.2)_html/css

CodeforcesRound#281(Div.2)_html/css_WEB-ITnose:这场题也不难。 不过自己一直犯逗。 不是题目看错就是数组开小。 A,B,C,D都还挺水的,E其实也挺简单,只不过我当时没想明白。 C的话, 枚举所有可能的d即可,复杂度是排序的nlogn D的话, 对于奇数来说,黑方只需要跟白方对称走就一定能赢 偶数的
推荐度:
导读CodeforcesRound#281(Div.2)_html/css_WEB-ITnose:这场题也不难。 不过自己一直犯逗。 不是题目看错就是数组开小。 A,B,C,D都还挺水的,E其实也挺简单,只不过我当时没想明白。 C的话, 枚举所有可能的d即可,复杂度是排序的nlogn D的话, 对于奇数来说,黑方只需要跟白方对称走就一定能赢 偶数的

这场题也不难。


不过自己一直犯逗。 不是题目看错就是数组开小。

A,B,C,D都还挺水的,E其实也挺简单,只不过我当时没想明白。


C的话, 枚举所有可能的d即可,复杂度是排序的nlogn


D的话, 对于奇数来说,黑方只需要跟白方对称走就一定能赢

偶数的话, 白方往1,2走一步就变成了奇数的情况,然后黑方咋走,白方就对称走就行。所以最后白方一定能赢


E

对于给出的t, a, b

我们先把特判的搞定,

无非是t = 1,a=1的情况

根据b是否等于1来特判


然后其他情况就要看方程了

a0+a1t+a2t^2+...=a

a0+a1a+a2a^2+...=b


然后移项得

a1+a2t + a3t^2+...= (a-a0)/t

a1+a2a + a3a^2+...=(b-a0) /a

会发现这个问题是可以递归解的。

这里a0的值有要求

(a-a0) %t ==0

(b-a0)%a==0

也就是说a0%a == b % a, a0 % t == a % t

然后就发现其实枚举a0的量非常少

对于a0%a == b%a有a0= k * a + b %a0

a0 <= b && a0 <= a

会发现k=0或者1,而且必须满足a0 % t == a % t


然后接下来就是递归了。就得出答案了



#include #include #include #include #include #include #include #define MAXN 55555#define MAXM 222222#define INF 1000000001using namespace std;int gao(long long a, long long b, long long c, long long d) { if(b == 0 && d == 0) return 1; if(b == 0 || d == 0) return 0; long long ans = 0; for(long long i = 0; i <= 1; i++) { long long a0 = i * c + d % c; if(a0 > b || a0 > d) break; if((b - a0) % a == 0) { ans += gao(a, (b - a0) / a, c, (d - a0) / c); } } return ans;}int main() { long long t, a, b; scanf("%I64d%I64d%I64d", &t, &a, &b); if(t == 1 && a == 1) { if(b == 1) { puts("inf"); } else puts("0"); } else printf("%d\n", gao(t, a, a, b)); return 0;}

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

CodeforcesRound#281(Div.2)_html/css

CodeforcesRound#281(Div.2)_html/css_WEB-ITnose:这场题也不难。 不过自己一直犯逗。 不是题目看错就是数组开小。 A,B,C,D都还挺水的,E其实也挺简单,只不过我当时没想明白。 C的话, 枚举所有可能的d即可,复杂度是排序的nlogn D的话, 对于奇数来说,黑方只需要跟白方对称走就一定能赢 偶数的
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top