看懂题解之后代码量还是蛮小的...
|
|
vfk做法太吓人啦……跪烂……
P.S.:那个做法取膜次数太多会$WA$爆70,用$2147483647$验过之后再找一个大素数即可…… $UPD$:大视野老爷机害人害己……这个代码拿到那里$T$了…… |
|
#include<map>
#include<set> #include<list> #include<deque> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<complex> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define LL long long #define RG register using namespace std; int mod[5]={12343,19997,21121,13577,15683}; LL a[110],n,m,cnt,sum; LL ans[1000010]; char s[110][10010]; void make(LL MOD){ for(int i=1;i<=n+1;++i){ LL x=0,len=strlen(s[i]);int f=1; for(int j=0;j<len;++j){ if(s[i][j]=='-')f=-1; else x=x*10+s[i][j]-48,x%=MOD; }a[i]=(x*f)%MOD; } }bool yes[1000010]; int main(){ freopen("equationa.in","r",stdin); freopen("equationa.out","w",stdout); scanf("%lld%lld",&n,&m); for(RG int i=1;i<=n+1;++i)scanf("%s",s[i]);memset(yes,true,sizeof(yes)); for(int i=1;i<=5;++i){ make(mod[i]); for(RG int k=1;k<=mod[i];++k){ sum=0; for(RG int j=n+1;j;--j)sum=sum*k+a[j],sum=(sum+mod[i])%mod[i]; if(sum)yes[k]=false; } for(int k=mod[i]+1;k<=m;++k) yes[k]=yes[k-mod[i]]; }for(int i=1;i<=m;++i)if(yes[i])ans[++ans[0]]=i; for(RG int i=0;i<=ans[0];++i)cout<<ans[i]<<'\n'; return 0; }
题目 1808 [NOIP 2014]解方程
2017-07-01 22:53:06
|
|
只过了5个点..........why......
|
|
|
|
乘法之前不取模 这样错好几次了……
题目 1808 [NOIP 2014]解方程
2016-11-04 15:31:50
|
|
选了8个素数...压力略大......
|
|
|
|
自己都觉得自己的码风恶心..
|
|
题目 1808 [NOIP 2014]解方程
2016-10-06 19:23:27
|
|
我天呢!我竟然和phx学长犯的一模一样的错误!白让我调了半小时,不看评论太浪费时间了!
题目 1808 [NOIP 2014]解方程
2016-10-06 15:00:34
|
|
70分知足了
题目 1808 [NOIP 2014]解方程
2016-10-06 14:51:03
|
|
论多重hash的玄学性。。。
|
|
质数取太大就没的优化了
|
|
我看模拟抱着AC希望的人还不少
题目 1808 [NOIP 2014]解方程
2015-10-16 21:36:19
|
|
突破1000分留念
|
|
...这个OJ不开优化是不是也自带了一些优化开关...别的OJ超时的题..在这儿秒过....
题目 1808 [NOIP 2014]解方程
2015-07-25 17:30:46
|
|
坑啊,调了半天原来是x没有取模
|
|
|
|
好了金策(JCVB)的满分做法就是现在这个了……首先确定大体做法是hash,然后,类似大步小步算法,先找出一个素数$p_0$,求出模$p_0$剩余系中可能是答案的同余等价类,然后再随机取一些素数在$[1, m]$中对所有可能是答案的模$p_0$同余等价类中的元素进行检验。时间复杂度$O(n (\frac{mn}{p_0} + p_0))$,用不等式知识容易证明$p_0$取在$\sqrt{mn}$附近是最优的($O(n\sqrt{mn} )$ )。
|