数学
ndsffx501ccy
这个作者很懒,什么都没留下…
展开
-
[Poj3737]UmBasketella (三分法)
#include #include #define eps 10e-6 const double pi = acos(double(-1)); double S; inline double cal(double r) { double R=(S-r*r*pi)/pi/r; double H=sqrt(R*R-r*r); return r*r*pi*H/3.0;原创 2014-08-04 20:44:26 · 380 阅读 · 0 评论 -
Codechef Little Elephant and Painting (期望+动态规划)
f[i][j]表示上色i #include #include #include using namespace std; int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-原创 2014-10-31 22:28:48 · 259 阅读 · 0 评论 -
ZOJ 1577 GCD & LCM (GCD)
考虑p=mx,q=nx。gcd(p,q)=x意味着gcd(m,n)=1。[p,q]=y=p*q*x意味着m*n=y/x 所以只要找到所有的m、n,满足(m,n)=1,m*n=y/x即可。枚举就可以过。也可以计算y/x质因数的种类t,则答案就是2^t。原创 2014-10-26 21:03:09 · 281 阅读 · 0 评论 -
Vijos P1753 HackSon的趣味题 (GCD)
#include #include using namespace std; int n,a0,a1,b0,b1,tot,pri[100001]; bool pd[100001]; long long ans=0; void getprime() { for(int i=2; i<=40000; i++) { if(!pd[i])pri[++tot]=i;原创 2014-10-27 19:50:39 · 262 阅读 · 0 评论 -
2818: Gcd (欧拉函数)
#include #include using namespace std; const int N=10000011; int n,tot,pri[N],phi[N]; long long ans,f[N]; bool mark[N]; void getphi(){ phi[1]=1; for(int i=2;i<=n;i++){ if(!mark[i])pri[++tot]=i,phi原创 2014-11-10 13:02:13 · 587 阅读 · 0 评论 -
Codechef Party Mystery
#include #include using namespace std; int t,a,b; int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } int main(){ scanf("%d",&t); while(t--){ scanf("%d%d",&a,&b); printf("%d\原创 2014-10-24 18:51:26 · 222 阅读 · 0 评论 -
Codechef It Is Axis Time
#include #include #include #define ll long long using namespace std; char ch[1000001]; int T,n; ll all() { ll ans=(ll)n*((n-1)/2); if(n%3==0)ans-=n/3*2; return ans; } ll del() { ll ans原创 2014-10-24 22:05:13 · 175 阅读 · 0 评论 -
Vijos P1781 同余方程 (exgcd)
#include #include using namespace std; int a,b,x,y; void exgcd(int a,int b){ if(!b){x=1,y=0;return;} exgcd(b,a%b); int t=x;x=y;y=t-a/b*y; } int main(){ cin>>a>>b; exgcd(a,b); w原创 2014-10-27 19:53:30 · 218 阅读 · 0 评论 -
1101: [POI2007]Zap (Mobius反演)
令 Ans(原创 2014-08-31 22:45:11 · 289 阅读 · 0 评论 -
【noip模拟赛】数位和乘积
#include #include using namespace std; int n,k,t,a1,a2,a3,a4,a[32][20][20][12][105],x[105],y[105],ans[105]; void add(int *a,int *b){ for(int i=1;i<=100;i++)a[i]+=b[i]; for(int i=1;i<=100;i++)a[i+1]+原创 2014-09-13 23:05:31 · 272 阅读 · 0 评论 -
【poj3070】Fibonacci (矩阵乘法+快速幂)
#include #include #include using namespace std; int a[2][2],b[2][2],n; void mul(int a[2][2],int b[2][2],int ans[2][2]){ int t[2][2]; memset(t,0,sizeof(t)); for(int i=0;i<=1;i++) for(int j=0;j<=1;原创 2014-03-16 12:38:32 · 330 阅读 · 0 评论 -
3251: 树上三角形
#include #include #include #define ll long long using namespace std; int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+c原创 2014-10-31 20:55:27 · 245 阅读 · 0 评论 -
1770: [Usaco2009 Nov]lights 燈 (高斯消元)
#include #include using namespace std; int n,m,tot,Ans=50,f[41][41],ans[41]; void gauss(){ int i,j,k; for(i=1;i<=n;i++){ j=i; while(j<=n&&!f[j][i])j++; if(j>n)continue; if(i!=j)for(k=1;k<=n+原创 2014-10-01 17:06:58 · 260 阅读 · 0 评论 -
1857: [Scoi2010]传送带 (三分法)
三分法套三分法。 #include #define eps 1e-3 #define dinf 1000000000 using namespace std; double ax,ay,bx,by,cx,cy,dx,dy,va,vb,vc,k1,b1,k2,b2,len1,len2,rev1=1,rev2=1; inline double F(double x,double k,double b原创 2014-09-06 22:05:52 · 445 阅读 · 1 评论 -
2178: 圆的面积并 (Simpson积分)
#include #include #include #include #include #define eps 1e-13 inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getc原创 2014-08-11 22:30:50 · 477 阅读 · 0 评论 -
1441: Min (Gcd)
#include using namespace std; int n,x,ans; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&x); ans=__gcd(abs(x),ans); } printf("%d",ans); return 0; }原创 2014-08-11 23:00:11 · 363 阅读 · 0 评论 -
1009: [HNOI2008]GT考试 (Kmp+Dp+矩阵乘法+快速幂)
#include using namespace std; inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getchar(); } while (ch >= '0'原创 2014-08-14 18:38:50 · 403 阅读 · 0 评论 -
2982: combination (Lucas定理)
#include using namespace std; typedef long long ll; const int p=10007; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9')原创 2014-08-26 10:10:27 · 420 阅读 · 0 评论 -
2134: 单选错位 (概率与期望)
#include int n,A,B,C,a[10000001]; double ans; int main(){ scanf("%d%d%d%d%d",&n,&A,&B,&C,a+1); for(int i=2;i<=n;i++)a[i]=((long long)a[i-1]*A+B)%100000001; for(int i=1;i<=n;i++)a[i]=a[i]%C+1; fo原创 2014-08-31 23:03:08 · 529 阅读 · 0 评论 -
2301: [HAOI2011]Problem b (Mobius反演)
#include using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return原创 2014-09-02 13:40:30 · 370 阅读 · 0 评论 -
1799: [Ahoi2009]self 同类分布 (数位DP+记忆化搜索)
枚举各位数字之和进行记忆化搜索,原创 2014-09-04 21:33:30 · 386 阅读 · 0 评论 -
1257: [CQOI2007]余数之和sum
#include using namespace std; long long ans; int n,k,r; int main(){ cin>>n>>k; if(n>k)ans=(long long)(n-k)*k,n=k; for(int i=1;i<=n;i=r+1){ int t=k/i;r=k/t; if(r>=n)r=n; ans+=(lon原创 2014-09-11 20:13:53 · 544 阅读 · 0 评论 -
3029: 守卫者的挑战 (DP+概率)
#include #include #include using namespace std; struct data{ double p; int v; }a[201]; inline bool cmp(data a,data b){ return a.v>b.v; } int n,l,K; double ans,f[201][201][201]; int main(){ scanf("原创 2014-09-11 20:14:44 · 402 阅读 · 0 评论 -
3036: 绿豆蛙的归宿 (Dfs+期望)
#include using namespace std; struct edge{ int to,next,v; }e[500001]; int n,m,cnt,d[100001],head[100001]; double f[100001]; bool vis[100001]; void ins(int u,int v,int w){ e[++cnt]=(edge){v,head[u],w原创 2014-09-11 20:17:35 · 522 阅读 · 0 评论 -
1477: 青蛙的约会 (扩展欧几里得算法)
#include #include #define ll long long #define inf 0x7fffffff using namespace std; inline ll extend_gcd(ll a,ll b,ll &x,ll &y){ if(b==0){x=1;y=0;return a;} else{ int t=extend_gcd(b,a%b,y,x); y-=原创 2014-07-14 21:54:16 · 413 阅读 · 0 评论 -
1076: [SCOI2008]奖励关 (概率与期望&&状态压缩动态规划)
#include #include using namespace std; double F[101][65536]; int N,K,t; int v[20],d[20],p[20]; int main() { for(int i=1;i<=16;i++)p[i]=1<<(i-1); scanf("%d%d",&N,&K); for(int i=1;i<=K;i++)原创 2014-07-14 22:27:22 · 444 阅读 · 0 评论 -
1303: [CQOI2009]中位数图
#include #include using namespace std; int num[100001],sum[100001],l[200001],r[200001]; int n,b,point,ans; int main() { scanf("%d%d",&n,&b); for(int i=1;i<=n;i++) { scanf("%d",&num原创 2014-07-14 22:24:40 · 478 阅读 · 0 评论 -
2190: [SDOI2008]仪仗队
#include #include #define N 40001 using namespace std; int n,tot,ans,phi[N],prime[N]; bool mark[N]; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();原创 2014-06-05 14:21:33 · 327 阅读 · 0 评论 -
2705: [SDOI2012]Longge的问题
#include #include #define LL long long using namespace std; inline LL phi(int n){ if(n==1)return 1; LL ans=1; for(LL i=2;i*i<=n;i++) if(n%i==0){ int k=0; w原创 2014-06-05 23:39:58 · 394 阅读 · 0 评论 -
[Bzoj3505][Cqoi2014]数三角形
#include #include using namespace std; int n,m; long long c[1001*1001+1][4],ans,tmp; int read() { int x=0;char ch=getchar(); while(ch'9'){ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'原创 2014-05-15 20:55:26 · 624 阅读 · 0 评论 -
【wikioi1250】Fibonacci数列
#include #include #include using namespace std; int a[2][2],b[2][2],n,q,_; void mul(int a[2][2],int b[2][2],int ans[2][2],int q){ int t[2][2]; memset(t,0,sizeof(t)); for(int i=0;i<=1;i++) for(int原创 2014-03-16 12:39:13 · 418 阅读 · 0 评论 -
NOIP2006数列
#include using namespace std; long long n,k,sum,mul[11]={1}; bool add[11]; int main(){ int i=10,j=1024; scanf("%d%d",&k,&n); while(i>=0){ if(n/j==1)add[i]=true; i--;n%=j;j/=2; } for(i=1;i<=10原创 2014-03-31 21:50:38 · 448 阅读 · 0 评论 -
【wikioi1287】矩阵乘法
#include #include using namespace std; long long a[201][201],b[201][201],c[201][201]; int ai,aj,bi,bj; int main(){ scanf("%d%d",&ai,&aj); for(int i=1;i<=ai;i++) for(int j=1;j<=aj;j++) scanf("%l原创 2014-03-16 12:37:47 · 372 阅读 · 0 评论 -
NOIP2000计算器的改良
#include #include #include using namespace std; char ch[10001],al; bool neg,alp,rev; int a,b,t=1; int main(){ scanf("%s",ch+1);ch[strlen(ch+1)+1]='+'; for(int i=1;i<=strlen(ch+1);i++){ if(ch[i]=='原创 2014-03-30 00:11:02 · 533 阅读 · 0 评论 -
[Bzoj1192][HNOI2006]鬼谷子的钱袋
#include int n,ans=1; int main(){ scanf("%d",&n); for(int i=1;;i++){ ans*=2; if(ans>n){ printf("%d",i); return 0; } } }原创 2014-04-27 11:54:55 · 535 阅读 · 0 评论 -
[Bzoj1002][FJOI2007]轮状病毒
#include #include using namespace std; struct data{ int a[101],len; }; int n; data mul(data a,int k) { for(int i=1;i<=a.len;i++) a.a[i]*=k; for(int i=1;i<=a.len;i++)原创 2014-05-06 19:49:13 · 487 阅读 · 0 评论 -
【wikioi1732】Fibonacci数列 2
#include #include #include using namespace std; long long a[2][2],b[2][2],n,_; void mul(long long a[2][2],long long b[2][2],long long ans[2][2]){ long long t[2][2]; memset(t,0,sizeof(t)); for(long原创 2014-03-16 12:39:50 · 397 阅读 · 0 评论 -
3505: [Cqoi2014]数三角形
#include #include using namespace std; int m,n; long long f[1002*1002][4],ans,tmp; void calc(){ f[0][0]=1; for(int i=1;i<=m*n;i++){ f[i][0]=1; for(int j=1;j<=3;j++) f[i][j]=f[i-1][j-1]+f[i-1]原创 2014-06-05 15:20:30 · 399 阅读 · 0 评论 -
1211: [HNOI2004]树的计数 (prufer编码,排列组合,质因数分解)
明明的烦恼简化版。 #include #include #include #include #include #include #define inf 0x7fffffff #define ll long long using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9')原创 2014-07-21 23:30:23 · 569 阅读 · 0 评论 -
2875: [Noi2012]随机数生成器 (矩阵乘法,快速幂,快速乘)
#include #define ll long long struct M{ll x,y;}t; ll m,x0,n,g; inline ll mult(ll t,ll k){ ll res=0; for(;k;k>>=1,t=(t<<1)%m) if(k&1)res=(res+t)%m; return res; } M operator * (const M &a,const M &原创 2014-07-22 11:42:33 · 369 阅读 · 0 评论