ImageVerifierCode 换一换
格式:DOCX , 页数:59 ,大小:28.17KB ,
资源ID:5069457      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5069457.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(acm模板byliyangWord格式文档下载.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

acm模板byliyangWord格式文档下载.docx

1、 int num3838 ; void Zreo() memset(num,0,sizeof(num) ; void dig_One() for(int i=1;i=n;i+) numii=1 ;int Mod ;Mat add(Mat A, Mat B) Mat ans ; for(int j=1;jj+) ans.numij=(A.numij+B.numij)%Mod ; return ans ;Mat mult(Mat A,Mat B) ans.Zreo() ; for(int k=1;k=1) if(y&1) ans=mult(ans,x) ; x=mult(x,x) ;Mat A ;

2、 /全局变量Mat get_sum(int k) /计算A+A2+A3+.+AK if(k=1) return A ; else if(k& return add(get_sum(k-1),my_pow(A,k) ; else Mat B=get_sum(k1) ; return add(B , mult(B,my_pow(A,k1) ;【KM二分最佳匹配】const int size=10008 ;const int inf=100000000;int gridsizesize ;int lxsize ,lysize ;int n ,m ; /n ,m 集合X ,Y的元素个数bool vis

3、ited_xsize ,visited_ysize ;int matchsize ;bool dfs(int u) visited_xu=1; for(int v=1;v=m;v+) if(!visited_yv&lxu+lyv=griduv) visited_yv=1 ; if(matchv=-1|dfs(matchv) matchv=u ; return 1; return 0;int KM(int type) /type=0最小权值匹配 ,type=1最大权值匹配 int i ,j ,k ,sum=0; if(type=0) for(i=1; for(j=1; gridij=-gridi

4、j ; memset(ly,0,sizeof(ly) ;i+) lxi=-inf ; lxi=max(lxi,gridij) ; memset(match,-1,sizeof(match) ; while(1) memset(visited_x,0,sizeof(visited_x) ; memset(visited_y,0,sizeof(visited_y) ; if(dfs(k) break ; int d=inf ; if(visited_xi)j+)visited_yj) d=min(d,lxi+lyj-gridij) ; if(d=inf) return -1 ; if(visite

5、d_xi) lxi-=d; if(visited_yi) lyi+=d; if(matchi!=-1) sum+=gridmatchii ; return type?sum:-sum ;【spfa() 差分约束系统】 /加入超级大原点const int size=1008 ;struct Edge int v ; int w ; int next ;edge2*10008 ;int vecsize ,id, in_timesize ,distsize;const int inf=INT_MAX ;inline void add_edge(int u ,int v ,int w) edgeid.

6、v=v ; edgeid.w=w ; edgeid.next=vecu ; vecu=id+ ;void init() memset(vec,-1,sizeof(vec) ; id=0 ; memset(in_time,0, sizeof(in_time) ;bool in_quesize;int spfa(int s) int i , j ,u, v; disti=inf ,in_quei=0; dists=0 ; in_ques=1 ; in_times+ ; queueque ; que.push(s) ; while(!que.empty() u=que.front() ; que.p

7、op() ; in_queu=0 ; for(int e=vecu; e!=-1 ;e=edgee.next) v=edgee.v ; if(distvdistu+edgee.w) distv=distu+edgee.w ;in_quev) in_quev=1 ; in_timev+ ; if(in_timevn) /必须 que.push(v) ; return distn=inf?-2:distn ;int main() int i ,ml, md ,a, b ,w; scanf(%d%d%d,&n,&ml,&md) ; init() ;=ml;a,&b,&w) ; add_edge(a,

8、b,w) ;=md; add_edge(b,a,-w) ; printf(%dn,spfa(1) ; return 0 ;【tarjan算法 缩点最长路】using namespace std ;const int size=150010 ;struct EDGEedgesize ;int id ;int vecsize ,mystacksize ,top;int lowsize ,dfnsize ,idx ,num ;bool instacksize ;int belongsize ;inline void add_edge(int u,int v)int sumsize ;int s,st

9、art ;void tarjan(int u) lowu=dfnu=idx+ ; mystack+top=u ; instacku=1 ;e!=-1; int v=edgee.v ; if(dfnv=-1) tarjan(v) ; lowu=min(lowu,lowv) ; else if(instackv) lowu=min(lowu,dfnv) ; if(lowu=dfnu) num+ ; do v=mystacktop- ; instackv=0 ; belongv=num ; if(v=s) start=num ; sumnum+ ; while(v!=u) ; idx=1 ; top

10、=-1 ; num=0 ; id=0; memset(dfn,-1,sizeof(dfn) ; memset(instack,0,sizeof(instack) ; memset(sum,0,sizeof(sum) ;struct NEWEDGEnew_edgesize ;int new_linksize ,new_id;inline void add_new_edge(int u,int v) new_edgenew_id.v=v ; new_edgenew_id.next=new_linku ; new_linku=new_id+ ;int distsize ; int i ,j ,m,u

11、,v,cas=1; while(scanf(m,&s)!=EOF) while(m-)%d%du,&v) ; if(u=v) continue ; add_edge(u,v) ; if(dfni=-1) tarjan(i) ; disti=0 ; new_id=0 ; memset(new_link,-1,sizeof(new_link) ; for(u=1;uu+) if(belongu!=belongv) add_new_edge(belongu,belongv) ; int visitedsize ; memset(visited,0,sizeof(visited) ; que.push

12、(start) ; diststart=sumstart ; visitedstart=1 ; int ans=diststart; visitedu=0 ; for(int e=new_linku;e=new_edgee.next) v=new_edgee.v ; if(distvdistu+sumv) distv=distu+sumv ; ans=max(ans,distv) ;visitedv)Case %d:n,cas+) ;,ans) ;【二分图判定/黑白染色】 int v; int next;edge2000010;int color1010;int vec1010;int n,m

13、,id,flag;inline void addedge(int u,int v) edgeid.v=v; edgeid.next=vecu; vecu=id; id+;void dfs(int u,int color_type) coloru=color_type; int v=edgee.v; if(colorv=0) dfs(v,3-color_type); else if(colorv=coloru) flag=0; return ; int t,i,j,u,v,cas;%dt); for(cas=1;casy) swap(x,y) ; girli.left=x ; girli.rig

14、ht=y;boyi) ; memset(grid,0,sizeof(grid) ; if(girli.left=boyj&boyj=girli.right) gridij=1 ;,max_match() ;【mapstring,string手写】struct node char name25; char fun85; friend bool operator(const node &a,const node &b) return strcmp(a.name,b.name)0;namesN;int k;int find_name(char *name) int left=0,right=k-1,

15、mid; while(left1; if(strcmp(namesmid.name,name)=0) return mid; else if(strcmp(namesmid.name,name)0) right=mid-1; else if(strcmp(namesmid.name,name)eps) mid=(left+right)/2.0 ; if(fabs(SUM_AGE(mid)-two_PI)two_PI) right=mid; else left=mid ; ,cas) ; if(fabs(SUM_AGE(ans)-two_PI)y?x:y ;double judge(double r) double len=2.0*r*sin(PI/n) ; int i ; if(sidei+sidei+1len) return 4.0*PI ; double temp =(sidei*sidei+sidei+1*sidei+1-le

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2