• bzoj 4008、4011、1499


    全是扒题解,,,太弱了。。。

    不乱BB了。

    4008

     1 #include <bits/stdc++.h>
     2 #define LL long long
     3 #define lowbit(x) x&(-x)
     4 #define inf 0x3f3f3f3f
     5 #define eps 1e-5
     6 #define N 100005
     7 using namespace std;
     8 inline int ra()
     9 {
    10     int x=0,f=1; char ch=getchar();
    11     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
    12     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
    13     return x*f;
    14 }
    15 int T;
    16 int n,r,d[255];
    17 double p[255];
    18 double f[255][255],pw[255][255];
    19 int main(int argc, char const *argv[])
    20 {
    21     T=ra();
    22     while (T--)
    23     {
    24         n=ra(); r=ra();
    25         memset(f,0,sizeof(f));
    26         for (int i=1; i<=n; i++)
    27         {
    28             scanf("%lf",&p[i]);
    29             d[i]=ra();
    30         }
    31         double ans=0;
    32         for (int i=1; i<=n; i++)
    33         {
    34             pw[i][0]=1;
    35             for (int j=1; j<=r; j++) pw[i][j]=pw[i][j-1]*(1-p[i]);
    36         }
    37         f[0][r]=1;
    38         for (int i=0; i<n; i++)
    39             for (int j=0; j<=r; j++)
    40             {
    41                 f[i+1][j]+=f[i][j]*pw[i+1][j];
    42                 if (j-1>=0)
    43                 {
    44                     f[i+1][j-1]+=f[i][j]*(1-pw[i+1][j]);
    45                     ans+=f[i][j]*(1-pw[i+1][j])*d[i+1];
    46                 }
    47             }
    48         printf("%.10lf
    ",ans);
    49     }
    50     return 0;
    51 }

    4011

     1 #include <bits/stdc++.h>
     2 #define LL long long
     3 #define lowbit(x) x&(-x)
     4 #define inf 0x3f3f3f3f
     5 #define eps 1e-5
     6 #define N 100005
     7 using namespace std;
     8 inline int ra()
     9 {
    10     int x=0,f=1; char ch=getchar();
    11     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
    12     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
    13     return x*f;
    14 }
    15 const int mod=1e9+7;
    16 LL ans=1;
    17 int n,m,x,y,cnt;
    18 int head[100005],d[100005],b[100005];
    19 LL f[100005],ine[200005];
    20 vector<int> st;
    21 struct edge{
    22     int to,next;
    23 }e[200005];
    24 void insert(int x, int y)
    25 {
    26     e[++cnt].next=head[x]; e[cnt].to=y; head[x]=cnt;
    27 }
    28 void dp()
    29 {
    30     f[y]=ans;
    31     for (int i=1; i<=n; i++) if (!d[i]) st.push_back(i);
    32     while (!st.empty())
    33     {
    34         int now=st.back(); st.pop_back();
    35         f[now]=f[now]*ine[b[now]]%mod;
    36         for (int i=head[now];i;i=e[i].next)
    37         {
    38             f[e[i].to]=(f[e[i].to]+f[now])%mod;
    39             d[e[i].to]--;
    40             if (!d[e[i].to]) st.push_back(e[i].to);
    41         }
    42     }
    43 }
    44 int main(int argc, char const *argv[])
    45 {
    46     n=ra(); m=ra(); x=ra(); y=ra();
    47     ine[1]=1;
    48     for (int i=2; i<=m+1; i++) ine[i]=(-ine[mod%i]*(mod/i)+mod)%mod;//??
    49     for (int i=1; i<=m; i++)
    50     {
    51         int xx=ra(),yy=ra();
    52         insert(xx,yy);
    53         d[yy]++;
    54     }
    55     d[y]++;
    56     for (int i=1; i<=n; i++) b[i]=d[i];
    57     for (int i=2; i<=n; i++)
    58         ans=ans*d[i]%mod;
    59     d[y]--;
    60     if (y==1) {printf("%lld
    ",ans); return 0;}
    61     dp();
    62     ans=(ans-f[x]+mod)%mod;
    63     printf("%lld
    ",ans);
    64     return 0;
    65 }

    1499

     1 #include <bits/stdc++.h>
     2 #define LL long long
     3 #define lowbit(x) x&(-x)
     4 #define inf 0x3f3f3f3f
     5 #define eps 1e-5
     6 #define N 100005
     7 using namespace std;
     8 inline int ra()
     9 {
    10     int x=0,f=1; char ch=getchar();
    11     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
    12     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
    13     return x*f;
    14 }
    15 char a[205][205];
    16 int f[205][205];
    17 int xx[]={0,-1,1,0,0},yy[]={0,0,0,-1,1};
    18 int q[205],pos[205],head,tail;
    19 int n,m,sx,sy,K,ans;
    20 void push(int now, int val)
    21 {
    22     if (val==-inf) return;
    23     while (val-now>q[tail] && head<=tail) tail--;
    24     q[++tail]=val-now;
    25     pos[tail]=now;
    26 }
    27 void dp(int p, int x, int y, int d, int T)
    28 {
    29     head=1,tail=0; int now=1;
    30     while (x<=n && y<=m && x>=1 && y>=1)
    31     {
    32         if (a[x][y]=='x') head=1,tail=0;
    33             else push(now,f[x][y]);
    34         while (now-pos[head]>T && head<=tail) head++;
    35         if (head<=tail) f[x][y]=q[head]+now;
    36             else f[x][y]=-inf;
    37         ans=max(ans,f[x][y]);
    38         x+=xx[d]; y+=yy[d];
    39         now++;
    40     }
    41 }
    42 int main(int argc, char const *argv[])
    43 {
    44     n=ra(); m=ra(); sx=ra(); sy=ra(); K=ra();
    45     for (int i=1; i<=n; i++) scanf("%s",a[i]+1);
    46     for (int i=1; i<=n; i++)
    47         for (int j=1; j<=m; j++)
    48             f[i][j]=-inf;
    49     f[sx][sy]=0;
    50     for (int i=1; i<=K; i++)
    51     {
    52         int x=ra(),y=ra(),d=ra();
    53         if (d==1) for (int j=1; j<=m; j++) dp(i,n,j,d,y-x+1);
    54         if (d==2) for (int j=1; j<=m; j++) dp(i,1,j,d,y-x+1);
    55         if (d==3) for (int j=1; j<=n; j++) dp(i,j,m,d,y-x+1);
    56         if (d==4) for (int j=1; j<=n; j++) dp(i,j,1,d,y-x+1);
    57     }
    58     printf("%d
    ",ans);
    59     return 0;
    60 }
  • 相关阅读:
    SQL中 SET QUOTED_IDENTIFIER OFF语句的作用
    System.Data.SQLite
    关于SQL Server的SET ANSI_NULLS的问题
    压缩解压缩下载多个文件
    提示源文件路径不存在
    Jquery颜色选择器
    MVC中使用DropDownListFor
    jquery ajax 跨域请求
    纪念帖:博客开张,发帖留念!
    解压缩:解压之后中文文件名乱码
  • 原文地址:https://www.cnblogs.com/ccd2333/p/6523100.html
Copyright © 2020-2023  润新知