博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #422 (Div. 2)
阅读量:6544 次
发布时间:2019-06-24

本文共 4130 字,大约阅读时间需要 13 分钟。

A:

给你两个数 (最小的那个<=12)  问这两个数阶乘的GCD

我都吓傻了  

直接fac(min(a,b)) 搞定

//By SiriusRen#include 
using namespace std;int A,B;long long t=1;int main(){ scanf("%d%d",&A,&B); if(A>B)swap(A,B); for(int i=1;i<=A;i++)t=t*i; printf("%I64d\n",t);}

B:

暴力匹配即可

//By SiriusRen#include 
using namespace std;int n,m,ans[2005],ans1=0x3f3f3f3f,ans2;char a[2005],b[2005];int main(){ scanf("%d%d",&n,&m); scanf("%s%s",a+1,b+1); for(int i=1;i<=m-n+1;i++){ int t=0; for(int j=1;j<=n;j++){ if(a[j]!=b[i+j-1])t++; } ans[i]=t; } for(int i=1;i<=m-n+1;i++){ if(ans1>ans[i])ans1=ans[i],ans2=i; }printf("%d\n",ans1); for(int i=1;i<=n;i++)if(a[i]!=b[ans2+i-1])printf("%d ",i);}

C:

我似乎是写麻烦了?

搞了两个vector

vector是按照时间长度塞的

一个按照排序 另一个按照r排序

newr<l或者newl>r中的最小值

搞一个前缀min  一个后缀min

写完调一年

//By SiriusRen#include 
using namespace std;const int N=200050,inf=2e9+1;int n,x,l[N],r[N],c[N],ans=inf;struct Node1{
int l,r,c,s;Node1(){}Node1(int L,int R,int C){l=L,r=R,c=C;}};struct Node2{
int l,r,c,s;Node2(){}Node2(int L,int R,int C){l=L,r=R,c=C;}};vector
vecl[N];vector
vecr[N];bool operator<(Node1 a,Node1 b){
if(a.l!=b.l)return a.l
=0;j--)vecl[i][j].s=min(vecl[i][j+1].s,vecl[i][j].c); for(int j=1;j<=t;j++)vecr[i][j].s=min(vecr[i][j-1].s,vecr[i][j].c); } for(int i=1;i<=n;i++){ int len=r[i]-l[i]+1,len2=x-len; if(len2<0)continue; int t1=lower_bound(vecl[len2].begin(),vecl[len2].end(),Node1(r[i]+1,0,0))-vecl[len2].begin(); int t2=upper_bound(vecr[len2].begin(),vecr[len2].end(),Node2(0,l[i]-1,inf))-vecr[len2].begin()-1; if(t1>=0&&t1
=0&&t2

D:

筛出来每个数的最小质因子

质数就是x*(x-1)/2

非质数:f[i]=(1ll*f[mindiv[i]]*i/mindiv[i]+f[i/mindiv[i]])%mod;

//By SiriusRen#include 
using namespace std;const int N=5000500,mod=1000000007;int mindiv[N],prime[N],f[N],t,l,r,tot,ans,temp=1;int main(){ for(int i=2;i

E:

f[i][j]表示s串匹配到i  用了j次操作

f[i+1][j]=max(f[i+1][j],f[i][j])

f[i+lcp][j+1]=max(f[i+lcp][j+1],f[i][j]+lcp)

lcp直接后缀数组搞了~

(hash也行)

//By SiriusRen#include 
using namespace std;const int N=400050;int cntA[N],cntB[N],A[N],B[N],sa[N],rk[N],tsa[N],ht[N],lens,lent,n,Log[N],g[N][20],P,f[N][50],ans;char s[N];void SA(){ for(int i=1;i<=n;i++)cntA[s[i]]++; for(int i=1;i<=256;i++)cntA[i]+=cntA[i-1]; for(int i=n;i;i--)sa[cntA[s[i]]--]=i; rk[sa[1]]=1; for(int i=2;i<=n;i++)rk[sa[i]]=rk[sa[i-1]]+(s[sa[i]]!=s[sa[i-1]]); for(int l=1;rk[sa[n]]
<<=1){ memset(cntA,0,sizeof(cntA)); memset(cntB,0,sizeof(cntB)); for(int i=1;i<=n;i++)cntA[A[i]=rk[i]]++,cntB[B[i]=(i+l<=n?rk[i+l]:0)]++; for(int i=1;i<=n;i++)cntA[i]+=cntA[i-1],cntB[i]+=cntB[i-1]; for(int i=n;i;i--)tsa[cntB[B[i]]--]=i; for(int i=n;i;i--)sa[cntA[A[tsa[i]]]--]=tsa[i]; rk[sa[1]]=1; for(int i=2;i<=n;i++)rk[sa[i]]=rk[sa[i-1]]+(A[sa[i]]!=A[sa[i-1]]||B[sa[i]]!=B[sa[i-1]]); } for(int i=1,j=0;i<=n;i++){ j=j?j-1:0; while(s[i+j]==s[sa[rk[i]-1]+j])j++; ht[rk[i]]=j; } for(int i=1;i<=n;i++)g[i][0]=ht[i],Log[i]=Log[i>>1]+1; for(int j=1;j<=19;j++){ for(int i=1;i<=n;i++){ g[i][j]=min(g[i][j-1],g[i+(1<<(j-1))][j-1]); } }}int lcp(int x,int y){ if(x==y)return n-x+1; x=rk[x],y=rk[y]; if(x>y)swap(x,y); x++; int t=Log[y-x+1]; return min(g[x][t],g[y-(1<

F:

DFS一下搞定

//By SiriusRen #include 
using namespace std;vector
G[1001];map
, int> idx;int N; double t[1001];void dfs(int x, int l){ int d = G[x].size(); double v = l == 0 ? 0 : 1 + t[x],dt = 2. / d; for (int y : G[x]) if (y != l){ v += dt; while (v >= 2) v -= 2; t[y] = v; printf ("1 %d ",idx[{x,y}]); if (v < 1) printf ("%d %d %.12lf\n",x,y,v); else printf ("%d %d %.12lf\n",y,x,v-1); dfs(y,x); }}int main(){ scanf("%d",&N); for (int i=1;i

 

转载于:https://www.cnblogs.com/SiriusRen/p/7134021.html

你可能感兴趣的文章
dpkg参数
查看>>
AS3!INT
查看>>
简述思科、华为交换机型号字母代表的意思
查看>>
memcache--mysql测试
查看>>
拷贝构造函数、拷贝函数、析构函数
查看>>
实战CGLib系列之proxy篇(一):方法拦截MethodInterceptor
查看>>
php 字符串截取
查看>>
ttcn-3
查看>>
00.java虚拟机的基本结构概念
查看>>
深入浅出 ES6:ES6 与 Babel - Broccoli 的联用
查看>>
ThreadLocal使用出现的问题
查看>>
关于十六进制和八进制负数的问题
查看>>
连接池并发的实现原理
查看>>
创建Pch预编译文件
查看>>
阿里云Centos配置iptables防火墙
查看>>
UML类图几种关系的总结
查看>>
PHP面试题汇总
查看>>
LeetCode (11): Container With Most Water
查看>>
【技巧】easyUI的datagrid,如何在翻页以后仍能记录被选中的行
查看>>
经过强制类型转换以后,变量a, b的值分别为( )short a = 128; byte b = (byte) a;
查看>>