「LYOI2016 Summer」Equation 题解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「LYOI2016 Summer」Equation 题解相关的知识,希望对你有一定的参考价值。

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。

题目链接:https://ly.men.ci/problem/43

题目描述

求方程 a1*x1−a2*x2+a3*x3−a4*x4+a5*x5−a6*x6=0的解的个数,x∈(0,k],k<=6001()()??x?1??a?2??x?2??+a?3??x?3??a?4??x?4??+a?5??x?5??a?6??x?6??=0 在 xi∈[0,k] x_i \in [0, k] x?i??[0,k] 内有多少组正整数解。

输入格式

一行七个整数 k,a1,a2,a3,a4,a5,a61??,a?2??,a?3??,a?4??,a?5??,a?6??。

输出格式

一行一个整数,原方程有多少正整数解。

样例

输入格式

10 -24 74 -25 22 -7 -22

输出格式

5

 

分析:

一开始没看到范围以为这是数学题...k<=600的话,O(n^3)是可以接受的。

把题目中给出的式子移项,变成a1*x1+a3*x3+a5*x5=a2*x2+a4*x4+a6*x6

枚举左边的三个x,计算出左边所有可能值,然后再枚举右边的三个x,如果与左边有相同的话就ans+=相同值的个数

暴力判断显然是不行的,可以用STL的map。此题开了O2优化,不至于TLE。

时间复杂度O(n^3 * logn)

 

AC代码:

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<map>
 6 
 7 inline void read(int &x)
 8 {
 9     char ch = getchar(),c = ch;x = 0;
10     while(ch < 0 || ch > 9) c = ch,ch = getchar();
11     while(ch <= 9 && ch >= 0) x = (x<<1)+(x<<3)+ch-0,ch = getchar();
12     if(c == -) x = -x;
13 }
14 
15 std::map<long,long> mp;
16 int ans,k,a1,a2,a3,a4,a5,a6;
17 long long tmp;
18 
19 int main()
20 {
21     read(k);
22     read(a1),read(a2),read(a3),read(a4),read(a5),read(a6);
23     for(register int x = 1;x <= k;++ x)
24         for(register int y = 1;y <= k;++ y)
25             for(register int z = 1;z <= k;++ z)
26             {
27                 tmp = 1LL*a1*x+1LL*a3*y+1LL*a5*z;
28                 mp[tmp] ++;
29             }
30     for(register int x = 1;x <= k;++ x)
31         for(register int y = 1;y <= k;++ y)
32             for(register int z = 1;z <= k;++ z)
33             {
34                 tmp = 1LL*a2*x+1LL*a4*y+1LL*a6*z;
35                 if(mp.count(tmp))
36                     ans += mp[tmp];
37             }
38     printf("%d\n",ans);
39     return 0;
40 }

 

以上是关于「LYOI2016 Summer」Equation 题解的主要内容,如果未能解决你的问题,请参考以下文章

「LYOI2016 Summer」Graph 题解

LYOI2016 Summer 一次函数 (线段树)

[OI - 模拟考] LYOI2018模拟考N

BZOJ4896 [Thu Summer Camp2016]补退选

Petrozavodsk Summer-2016. Warsaw U Contest, XVI Open Cup Onsite.

bzoj4896 [Thu Summer Camp2016]补退选