09 2019 档案
摘要:1:暴力求法,n<15 int C(int n,int m) { int mod=10007; int ans=1; for(int i=n;i>=(n-m+1);i--) ans*=i; while(m) ans/=m--; return ans%mod; } View Code 2:打表 n<1
阅读全文
摘要:1.定义: 对于离线数列d,建立差分数组f,则 f[1]=d[1],f[i]=d[i]-d[i-1] 2.性质 (1):对于各个项,有d[2]=d[1]+ (d[1]-d[1]) =f[1]+f[2],即:d[i]=Σf[i] (2):求数列的前缀和 sum(x)=Σ(i=1,x)Σ(j=1,i)f
阅读全文
摘要:方格涂色问题 n个方格,用红、粉、绿三色涂每个格子,要求相邻的方格不能同色,且首位两格也不同色,求满足要求的涂法 令f(n)=1,2,...,n-1,n, 前n-2个已涂好色,涂n-1有两种情况 (1):n-1与n-2和1的色都不同,无选择,则f(n-1) (2):n-1与n-2不同,与1相同,则n
阅读全文
摘要:1:对原序列进行排序,使其按升序排列。 2:去掉序列中重复的元素。 3:此时序列中各位置的值和位置的序号就是离散化的映射方式。 含重复元素 for(int i=1;i<=n;i++) { cin>>a[i]; b[i]=a[i]; } sort(b+1,b+1+n); int len=unique(
阅读全文
摘要:建树 struct node { int L,R; int w;///区间和 int f; }t[4*n+1]; void build(int k,int L,int R) { t[k].L=L; t[k].R=R; if(L==R) { t[k].w=a[i]; ///叶节点 return ; }
阅读全文
摘要:给n个货物,k辆车,求每辆车的最大装载量的最小值 #include <iostream> #include <queue> #include <cstdio> #include <cstring> using namespace std; typedef long long ll; int n,k;
阅读全文
摘要:Kruskal算法 加边法,初始边数为0,每次选择一条满足条件的最小代价边,加入到最小生成树的边集合里。 适用于简单图 #include <iostream> #include <cstdio> #include <algorithm> using namespace std; int n,m,to
阅读全文
摘要:int getf(int x) { return x==f[x]?x:f[x]=getf(f[x]); } void merge(int x,int y) { x=getf(x),y=getf(y); if(x!=y) f[y]=x; }
阅读全文
摘要:最小堆、向下调整 void siftdown(int i) { int flag=0,t; while(i*2<=n&&!flag) { if(h[[ii]>h[i*2]) t=i*2; else t=i; if(i*2+1<=n) { if(h[t]>h[i*2+1]) t=i*2+1; } if
阅读全文
摘要:S(1) = {"COFFEE"} S(2) = {"CHICKEN"}S(n) = S(n-2) :: S(n-1) 1 ≤ n ≤500,1 ≤ k ≤ min{∣S(n)∣,1012 } 给n和k 求出S(n)从第k位开始往后的10的字符 递归定位,枚举10个位 #include <bits/
阅读全文
摘要:#include <bits/stdc++.h> using namespace std; int n,pl; double a[1001][1001]; int main() { cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=n+1;j++) cin>>
阅读全文
摘要:ll ksc(ll a,ll b,ll mod) { a%=mod,b%=mod; ll ret=a*b-(ll)((long double)a*b/mod+0.5)*mod; return ret<0?ret+mod:ret; }
阅读全文
摘要:DFS 求1到n的最短路径 vis[1]=1; dfs(1,0); void dfs(int cur,int dis) { if(dis>mini) return ; if(cur==n) { mini=min(mini,dis); return ; } for(int i=1;i<=n;i++)
阅读全文

浙公网安备 33010602011771号