清北學堂培訓2019.4.4

第一次培訓,心情有點激動(盡管沒了清明節),還見到了各地的dalao們,十分開森

Day 1(李昊dalao)

上午篇

上午呢,主要講了關于高精,快速冪,模意義下的運算,篩素數,費馬小定理以及歐拉定理,歐拉函數。。。

我印象最深刻的,便是dalao的c++必備head(頭文件及各種令人窒息的define)

?讓人頭腦一熱QAQ

高精度(先全部考慮非負數)

高精度主要分為以下幾個部分

1.高精度加法:

思路:模擬豎式運算

注意:進位

優化:壓位

2.高精度減法:

思路:同加法相似,模擬豎式運算,進位變為退位

注意:結果為負數的情況

?

3.高精乘

思路:類似,模擬豎式運算,考慮進位

注意:結果為0的情況

4.高精除以單精(高精除以高精在日常并不常用)

至于負數的情況呢QAQ

加法:

?一個數是負數:變為減法
?兩個數是負數:全部變為正數算加法,最后取負

減法:

?被減數是負數:全部變為正數算加法,最后取負
?減數是負數:減數取負,變為加法
?都是負數:都取負,變為減法,即(-減數)-(-被減數)

乘法:

?統計負數個數s
?都變為非負數計算,若s為奇數,最后取負

除法同理。。。

模意義下的運算

這一個就聽得十分有意思(畢竟我提前了解了一下

這里需注意:無除法運算(很容易遺忘)

性質:

?滿足基本的交換律、分配率、結合律
?對中間結果取模不影響最終答案

快速冪:

1.分治

int calc(int a,int b,int c)
{if(b==1){return a;}int tmp=calc(a,b/2,c);tmp=tmp*tmp%c;if(b&1){tmp=tmp*a%c;}return tmp;
}

2.快速冪

int ans=1;
while(b)
{if(b&1){ans=ans*a%c;}a=a*a%c;b/=2;
}

類似于這樣的操作

費馬小定理/歐拉定理

在模意義下有這個東西:

?C(n, m) = n! / ( (n-m)! * m! )
????????????? = n! * ( (n-m)! * m! )^(p-2)

顯然二者有推廣關系

篩法

前面講過,這里就不一一贅述

歐拉函數

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pr;
const double pi=acos(-1);
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,n,a) for(int i=n;i>=a;i--)
#define Rep(i,u) for(int i=head[u];i;i=Next[i])
#define clr(a) memset(a,0,sizeof a)
#define pb push_back
#define mp make_pair
#define fi first
#define sc second
ld eps=1e-9;
ll pp=1000000007;
ll mo(ll a,ll pp){if(a>=0 && a<pp)return a;a%=pp;if(a<0)a+=pp;return a;}
ll powmod(ll a,ll b,ll pp){ll ans=1;for(;b;b>>=1,a=mo(a*a,pp))if(b&1)ans=mo(ans*a,pp);return ans;}
ll read(){ll ans=0;char last=' ',ch=getchar();while(ch<'0' || ch>'9')last=ch,ch=getchar();while(ch>='0' && ch<='9')ans=ans*10+ch-'0',ch=getchar();if(last=='-')ans=-ans;return ans;
}
//head
#define N 110000
bool p[N];
int prime[N],tot=0,rec[N],phi[N];
int main(){clr(p);rep(i,2,100000){if(!p[i]){prime[++tot]=i;rec[i]=i;}for(int j=1;j<=tot && prime[j]*i<=100000;j++){p[prime[j]*i]=1;rec[prime[j]*i]=prime[j];if(i%prime[j]==0)break;}}rep(i,2,100000)if(rec[i]==i)phi[i]=i-1;elseif(i%(rec[i]*rec[i])==0)phi[i]=phi[i/rec[i]]*rec[i];else phi[i]=phi[i/rec[i]]*(rec[i]-1);rep(i,2,20)printf("%d : %d\n",i,phi[i]);
}

李昊大佬的碼風有些清奇qwq

下午篇

?矩陣

such as:

特殊矩陣:

1.上三角矩陣

2.分塊矩陣

3.對角矩陣

4.對稱矩陣

行列式

?

?需要學一下逆序對(皮一下很舒服

可以學一下這本書@工程數學線性代數

矩陣逆元

說到逆元,以下是洛谷P3811求乘法逆元的正解

#include<bits/stdc++.h>
using namespace std;
int n,p,inv[25000528];
int main()
{scanf("%d%d",&n,&p);inv[1]=1;for(int i=2;i<=n;i++){inv[i]=(long long)(p-p/i)*inv[p%i]%p;    }for(int i=1;i<=n;i++){printf("%d\n",inv[i]);}return 0;
}

?還講了一堆十分神奇的東西:

矩陣樹定理

?一個圖的鄰接矩陣G:對于無向圖的邊(u,v),G[u][v]++,G[v][u]++
?一個圖的度數矩陣D:對于無向圖的邊(u,v),D[u][u]++,D[v][v]++
?而通過這兩個矩陣就可以構造出圖G的基爾霍夫矩陣:C=D-G.
?Matrix Tree定理:將圖G的基爾霍夫矩陣去掉第i行和第i列(i可以取任意值,可以證明所得到的結果相同),得到(n-1)*(n-1)的矩陣,對這個矩陣進行行列式的值求解,abs(det(A))即為圖G的生成樹個數。

讓人十分慌張。。。

有向圖 - 矩陣樹定理

?樹形圖:以i點為根節點的樹形圖有(n-1)條邊,從i節點出發可以到達其他所有(n-1)個節點.
?定義: 有向圖的鄰接矩陣G:對于有向圖的邊(u,v),G[u][v]++.
?有向圖的度數矩陣D:對于有向圖的邊(u,v),D[v][v]++.
?尤其需要注意的是:有向圖的度數矩陣指的是一個點的入度,而不是出度。
?而有向圖的基爾霍夫矩陣的構造方式是一模一樣的:C=D-G.
?有向圖Matrix Tree定理:
?將有向圖G的基爾霍夫矩陣去掉第i行和第i列,得到(n-1)*(n-1)的矩陣,對這個矩陣進行行列式的值求解,abs(det(A))就是以i為根的樹形圖的個數。

讓人更加慌張。。。

so:這一下午就在慌張中過去了QAQ

之后還會有題目的整理鴨!!!

?

轉載于:https://www.cnblogs.com/gongcheng456/p/10656667.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536568.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536568.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536568.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

國二c語言作弊用u盤,計算機等級考試可以插u盤嗎(全國計算機等級考試報名系統官網)...

&#xff1a;不可以 會有嘀嘀嘀的報警聲的&#xff1a;我以前考時不讓帶的&#xff0c;人家讓你不能用優盤的話電腦會控制沒法用的。&#xff1a;首先肯定回你&#xff0c;不可以帶優盤或者其他作弊設備。很多計算機二級考點會把主機箱鎖死&#xff0c;根本插不了優盤。在你進入…

「SCOI2011」棘手的操作

傳送門 Description 有\(N\)個節點&#xff0c;標號從\(1\)到\(N\)&#xff0c;這\(N\)個節點一開始相互不連通。第$ i\(個節點的初始權值為\)a_i$ &#xff0c;接下來有如下一些操作&#xff1a; U x y 加一條邊&#xff0c;連接第 \(x\) 個節點和第\(y\) 個節點。 A1 x v 將…

swft c 語言 數組,如何在swift中實現數組的深拷貝

在Objective-C中如果想將一個數組賦值給另外一個數組&#xff0c;同時想讓兩個數組之間相互獨立(即改變其中的一個數組&#xff0c;不影響另外的一個)&#xff0c;有很多的辦法&#xff0c;比如我們可以直接copy,用類方法創建新數組。這樣得到的數組和原來的數組就是兩個完全獨…

tomcat CATALINA_HOME與CATALINA_BASE的區別

區別 https://blog.csdn.net/cfydaniel/article/details/41351927 Tomcat啟動分析(我們為什么要配置CATALINA_HOME環境變量&#xff09; http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html轉載于:https://www.cnblogs.com/Andrew520/p/10664921.html

android 廣告欄效果,實現android廣告欄效果

public classBannerLayout extendsRelativeLayout {privateViewPager mViewPager; // 輪播容器// 指示器(圓點)容器privateLinearLayout indicatorContainer;privateDrawable unSelectedDrawable;privateDrawable selectedDrawable;private intWHAT_AUTO_PLAY 1000;private boo…

自我練習

<!doctype html><html><head><meta charset"utf-8"><title>無標題文檔</title><link rel"icon" href"../HTMLWork/day03/psb.ico.ico" type"img/*"></head><body> <a na…

android studio按鈕槽函數,AndroidStudio按鈕Button退出程序

AndroidStudio 3.1.41.創建一個新的項目&#xff0c;項目名稱為Button&#xff0c;界面為activity_button.xml2.打開activity_button.xml3.點擊HelloWorld標簽&#xff0c;按Delete刪除4.左側組件欄選擇Common - Button5.將Button組件拖到界面上&#xff0c;大概中間的位置6.右…

cobbler介紹與部署

cobbler介紹 Cobbler是一個Linux系統安裝的服務&#xff0c;可以通過網絡啟動(PXE)的方式來快速安裝、重裝物理服務器和虛擬機&#xff0c;同時還可以管理DHCP&#xff0c;DNS等。 Cobbler可以使用命令行方式管理&#xff0c;也提供了基于Web的界面管理工具(cobbler-web)&#…

android wifi視頻監控軟件,WiFi環境下Android智能視頻監控系統研究與實現

摘要&#xff1a;在互聯網飛速發展和移動互聯網強勢崛起的時代,科技產品服務于普通生活是新興行業必然的發展趨勢;監控系統是物聯網時代各個領域必然爭取的可控制系統。隨著無線技術和移動終端設備的高歌猛進,移動終端智能無線視頻監控系統成為時下監控領域發展的熱點方向。無線…

android 本地地址轉換為url,android本地mipmap圖片轉url、絕對路徑轉URL URL URI File Path 轉換...

標簽&#xff1a; url uri file pathFile to URI:File file ...;URI uri file.toURI();File to URL:File file ...;URL url file.toURI().URL();URL to File:URL url ...;File file new Path(url.getPath()).toFile();URI to URL:URI uri ...;URL url uri.toURL();URL …

ORACLE數據庫導出導入數據

準備工作&#xff1a; 1、登錄管理員system 2、create directory dbdata as C:\oracle\tempData;--創建備份文件夾 3、grant read,write on directory dbdata to gsjk2018;--授權讀寫為用戶 --導出(每次修改文件名)expdp gsjk2018/gsjk2018_vimtech10.0.73.32:1521/orcl direct…

linux sed名寧,Linux shell利用sed批量更改文件名的方法

微子網絡與大家分享了在Linux shell中使用sed批量更改文件名的方法。希望你看完這篇文章有所收獲。大家一起討論一下。示例去除特定字符目標&#xff1a;把2017-01-01.jpg和2018-01-01.jpg變成20170101.jpg和20180101.jpg方法&#xff1a;用空值替換全部for filein ls | grep …

android手機給iphone越獄,一臺ROOT后的安卓手機:可以用來給iOS 13越獄了

iOS 13時代的越獄工具主要包括unc0ver和Checkra1n兩款&#xff0c;前者最新的v4.2.1版本已經支持A9到A13設備從除了支持的設備和系統多&#xff0c;unc0ver的一大優勢在于可在iOS設備上獨立完成越獄操作&#xff0c;Checkra1n則需要借助電腦&#xff0c;包括重啟失效后也是如此…

502 Bad Gateway The server returned an invalid or incomplete response

問題描述&#xff1a;最近在登陸某大學網站時&#xff0c;網站如下&#xff1a; https://yzb.tju.edu.cn/ 發現登錄不進去&#xff0c;報了502 Bad Gateway The server returned an invalid or incomplete response這個錯誤。 問題解決&#xff1a;將https改為http&#xff0…

iOS VIPER架構(三)

路由是實現模塊間解耦的一個有效工具。如果要進行組件化開發&#xff0c;路由是必不可少的一部分。目前iOS上絕大部分的路由工具都是基于URL匹配的&#xff0c;優缺點都很明顯。這篇文章里將會給出一個更加原生和安全的設計&#xff0c;這個設計的特點是&#xff1a; 路由時用p…

android camera滑動,Android怎么實現小米相機底部滑動指示器

Android怎么實現小米相機底部滑動指示器發布時間&#xff1a;2021-04-15 14:39:38來源&#xff1a;億速云閱讀&#xff1a;94作者&#xff1a;小新這篇文章給大家分享的是有關Android怎么實現小米相機底部滑動指示器的內容。小編覺得挺實用的&#xff0c;因此分享給大家做個參考…

laravel安裝laravel-ide-helper擴展進行代碼提示(二)

一、擴展的地址 https://github.com/barryvdh/laravel-ide-helper二、安裝擴展 1、引入庫&#xff1a; composer require barryvdh/laravel-ide-helper composer require doctrine/dbal如果只想在開發環境上使用&#xff0c;請加上--dev composer require --dev barryvdh/larav…

android md 顏色,安卓MD(Material Design)規范

Md規范是一種設計風格&#xff0c;并不特指規范。是一種模擬紙張的手法。一、核心思想把物理世界的體驗帶進屏幕。去掉現實中的雜質和隨機性&#xff0c;保留其最原始純凈的形態、空間關系、變化與過度&#xff0c;配合虛擬世界的靈活特性&#xff0c;還原最貼近真實的體驗&…

Mariadb修改root密碼

2019獨角獸企業重金招聘Python工程師標準>>> 默認情況下&#xff0c;新安裝的 mariadb 的密碼為空&#xff0c;在shell終端直接輸入 mysql 就能登陸數據庫。 如果是剛安裝第一次使用&#xff0c;請使用 mysql_secure_installation 命令初始化。 # mysql_secure_inst…

【譯】Googler如何解決編程問題

本文是Google工程師Steve Merritt的一篇博客&#xff0c;向大家介紹他自己和身邊的同事解決編程問題的方法。 原文地址&#xff1a;blog.usejournal.com/how-a-googl… 在本文中&#xff0c;我將完整的向你介紹一種解決編程問題的策略&#xff0c;這個策略是我在日常工作中一直…