寒假集训【1.26】
| 1月26日 | ||
| 時間段 | 記錄 | 備注 |
| 8:00---8:30 | ? ? ? ?請假 ? ? ? | ? |
| 8:30---9:00 | ? | |
| 9:00----9:30 | ? | |
| 9:30---10:00 | ? | |
| 10:00—10:30 | ? | |
| 10:30---11:00 | ? | |
| 11:00---11:30 | ? | |
| 11:30---13:30 | 午休? | ? |
| 13:30---14:00 | 看書+3道小例題 | ? |
| 14:00—14:30 | ? | |
| 14:30—15:00 | ? | |
| 15:00—15:30 | 費解的開關(guān) | ? |
| 15:30---16:00 | ? | |
| 16:00---16:30 | ? | |
| 16:30---17:00 | 漢諾塔問題 | ? |
| 17:00---18:30 | ? | ? |
| 18:30—21:30 | 漢諾塔問題 | ? |
| Sumdiv(分治) | ? | |
| ? | ||
| 整理今日 | ? | |
?
分享交流:
?
(待書寫)
?
附:可以貼各種資料或題解
費解的開關(guān)
若固定了第一行,則若改變第i行某位數(shù)字,若i-1行已經(jīng)固定,則只能點擊i+1行的該位置上的數(shù)字才可以。
遞歸妙!!!!真的妙。
?
漢諾塔問題
1、漢諾塔三塔問題?d[n]=2*d[n-1]+1
2、漢諾塔四塔問題?f[n]=min{x*f[i]+d[n-i]}
3、漢諾塔m盤n塔問題。f[i][j]=minf[k][j]?2+f[i?k][j?1]。設(shè)f[i][j]為有i個盤子j個柱子時的最少步數(shù).?那么肯定是把一些上面盤子移動到某根不是j的柱子上,?然后把剩下的盤子移動到j(luò),?然后再把上面的盤子移動到j(luò).?于是就有遞推式f[i][j]=min{f[k][j]?2+f[i?k][j?1],f[i][j]}
?
Sumdiv
求A^B的所有約數(shù)之和mod 9901
?
?
1、(看到滿串公式就腦殼疼)理解不了為啥用乘法分配律就可以從約數(shù)集合得到那個式子,后來在onglu大佬的幫助之下成功理解(在線%神仙)。
2、后面那個分治法求sum真的是妙啊,等比數(shù)列這么一提,妙,真的妙。經(jīng)過二分再配合快速冪,時間復(fù)雜度瞬間下降(書上是O(logc),然鵝我不會算(霧,妙啊)。
3、然后我就卡死在實現(xiàn)上了qaq。
4、分解質(zhì)因數(shù)竟然不會寫了,素數(shù)篩也忘了(我可能是個廢人)晚上重學(xué)素數(shù)篩。
5、想得腦殼疼。最終在某位大佬的某篇博客的幫助下,寫出來了(不容易啊qaq)
6、數(shù)學(xué)真妙啊!
?
我jio的很有必要貼一下我的AC代碼
#include<bits/stdc++.h> using namespace std; const int maxn=5000+3; const int mod=9901; inline int read(){int s=0,w=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();} while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar(); return s*w; } int A,B,cnt,prime[maxn]; long long factor[100][2];//0存因子,1存次方. void getprime( );//素數(shù)篩 int getfactors(long long x);//分解質(zhì)因數(shù) long long ksm(long long a,long long b);//快速冪 long long sum(long long p,long long n);//核心公式 int main(){ int A,B; A=read(); B=read(); getprime(); long long ans=1; getfactors(A); for(int i=0;i<cnt;i++){ ans*=(sum(factor[i][0],B*factor[i][1])%mod); ans%=mod; } printf("%d",ans); return 0; } void getprime( ){ memset(prime,0,sizeof(prime)); for(int i=2;i<=maxn;i++){ if(!prime[i]) prime[++prime[0]]=i; for(int j=1;j<=prime[0]&&prime[j]<maxn/i;j++){ prime[prime[j]*i]=1; if(i%prime[j]==0) break; } } } int getfactors(long long x){ cnt=0; long long tmp=x; for(int i=1;prime[i]<=tmp/prime[i];i++){ factor[cnt][1]=0; if(tmp%prime[i]==0){ factor[cnt][0]=prime[i]; while(tmp%prime[i]==0){ factor[cnt][1]++; tmp/=prime[i]; } cnt++; } } if(tmp!=1){ factor[cnt][0]=tmp; factor[cnt++][1]=1; } return cnt; } long long ksm(long long a,long long b){ long long res=1; long long tmp=a%mod; while(b){ if(b&1){ res*=tmp; res%=mod; } b>>=1; tmp*=tmp; tmp%=mod; } return res; } long long sum(long long p,long long n){ if(p==0)return 0; if(n==0)return 1; if(n&1){ return((1+ksm(p,n/2+1))%mod*sum(p,n/2)%mod)%mod; } else return((1+ksm(p,n/2+1))%mod*sum(p,n/2-1)+ksm(p,n/2)%mod)%mod; }?
轉(zhuǎn)載于:https://www.cnblogs.com/Shayndel/p/10330204.html
總結(jié)
以上是生活随笔為你收集整理的寒假集训【1.26】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Python] Tkinter的食用方
- 下一篇: [WPF]使用Fody提高效率