D1T1:水题
D1T2:
D1T3:换教室
D2T1:组合数问题
题解:
杨辉三角基础应用+二维差分
#include <cstdio> using namespace std; int c[2005][2005],g[2005][2005]; int main() { int T,i,j,k; scanf("%d%d",&T,&k); for (i=0;i<=2000;i++) c[i][0]=1; for (i=1;i<=2000;i++) { for (j=1;j<=i;j++) { c[i][j]=(c[i-1][j]+c[i-1][j-1])%k; if (c[i][j]==0) g[i][j]=1; g[i][j]+=g[i-1][j]+g[i][j-1]-g[i-1][j-1]; } g[i][i+1]=g[i][i];//求前缀和中必不可少的哦 } while (T--) { int n,m; scanf("%d%d",&n,&m); if(m>n) m=n; printf("%d\n",g[n][m]); } }D2T2:蚯蚓
很简单的75送分,用自带的priority_queue,但是这样会T
我们可以发现,如果自己建立三个单调队列,q1未切割的蚯蚓长度,q2切割后较长的蚯蚓长度,q3切割后较短的蚯蚓长度
只要把读入的数据排个序就可以发现这三个都是单调队列
那每次在队首取max,然后弹出。
#include <cstdio> #include <queue> #include <iostream> #include <cstring> #include <cmath> #include <algorithm> #define N 7050005 #define INF 1e9 using namespace std; double p; int q1[N],q2[N],q3[N],h1,t1,h2,t2,h3,t3,qq,a[100005]; void pts75() { priority_queue<int>q; int n,m,qq,u,v,t,x=1,i; scanf("%d%d%d%d%d%d",&n,&m,&qq,&u,&v,&t); p=(double)u/(double)v; for (i=1;i<=n;i++) { int a; scanf("%d",&a); q.push(a); } for(i=1;i<=m;i++) { int now=q.top(); q.pop(); int noww=now+(i-1)*qq; if (i==x*t) { x++;printf("%d ",noww); } int a1=floor((int)noww*p),a2=noww-a1; q.push(a1-i*qq); q.push(a2-i*qq); } printf("\n"); i=1;x=1; while (!q.empty()) { int now=q.top(); q.pop(); if (i==x*t) {x++;printf("%d ",now+m*qq);} i++; } } int findmax(int i) { int a1,a2,a3; if (h1<=t1) a1=q1[h1];else a1=-INF; if (h2<=t2) a2=q2[h2];else a2=-INF; if (h3<=t3) a3=q3[h3];else a3=-INF; if (a1>=a2 && a1>=a3){h1++;return a1+i*qq;} if (a2>=a1 && a2>=a3){h2++;return a2+i*qq;} h3++; return a3+i*qq; } int main() { int n,m,u,v,t,x=1,i; scanf("%d%d%d%d%d%d",&n,&m,&qq,&u,&v,&t); p=(double)u/(double)v; for (i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); for (i=n;i>=1;i--) q1[++t1]=a[i]; h1=1;h2=1;h3=1; for(i=1;i<=m;i++) { int noww=findmax(i-1); if (i==x*t){x++;printf("%d ",noww);} int a1=floor((int)noww*p),a2=noww-a1; q2[++t2]=max(a1,a2)-i*qq; q3[++t3]=min(a1,a2)-i*qq; } printf("\n"); x=1; for (i=1;i<=n+m;i++) { int noww=findmax(m); if (i==x*t) {x++;printf("%d ",noww);} } } D2T3: 愤怒的小鸟