• Luogu 考前模拟Round. 1


    A.情书

    题目:http://www.luogu.org/problem/show?pid=2264

    赛中:sb题,直接暴力匹配就行了,注意一下读入和最后一句话的分句

    赛后:卧槽 怎么只有40

    B.小朋友的球

    题目:http://www.luogu.org/problem/show?pid=1655

    赛中:sb题,第二类斯特林数,加个高精度就行了,我还写了个暴力对拍

    赛后:卧槽 怎么只有80 未知错误怎么回事儿啊

    C.命运的彼方

    题目:http://www.luogu.org/problem/show?pid=2263

    赛中:sb题,poi2008砖块,splay维护中位数,加减数即可,数据范围有点大,算一下好像也能过?

    赛后:卧槽 怎么CE了 又交了4、5遍 怎么还是CE bzoj还能A啊

    1.5h交完3t,然后坐等AK。。。

    最后知道真相的我眼泪掉下来。。。

    我已无力吐槽luogu。。。

    3道sb题,结果一半分都没有,是我太sb还是我太sb。。。

     明信片再见。。。

    UPD:t2 数据出错

           t3 long long 的常数需要在后面加 ll  。。。

    luogu为何连CE都不报,以后还能不能快乐地做比赛了T_T

    UPD:还是贴上代码吧。。。

    A

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<iostream>
     7 #include<vector>
     8 #include<map>
     9 #include<set>
    10 #include<queue>
    11 #include<string>
    12 #define inf 1000000000
    13 #define maxn 500+100
    14 #define maxm 500+100
    15 #define eps 1e-10
    16 #define ll long long
    17 #define pa pair<int,int>
    18 #define for0(i,n) for(int i=0;i<=(n);i++)
    19 #define for1(i,n) for(int i=1;i<=(n);i++)
    20 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
    21 #define for3(i,x,y) for(int i=(x);i>=(y);i--)
    22 #define mod 1000000007
    23 using namespace std;
    24 inline int read()
    25 {
    26     int x=0,f=1;char ch=getchar();
    27     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    28     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
    29     return x*f;
    30 }
    31 string a[200],b[200];
    32 inline bool find(int x,int y)
    33 {
    34     int l1=a[x].length(),l2=b[y].length();
    35     for0(i,l2-l1)
    36      {
    37          int j=i,k=0;
    38          while(a[x][k]==b[y][j])k++,j++;
    39          if(k<l1-1)continue;
    40          return 1;
    41      }
    42     return 0;
    43 }
    44 int main()
    45 {
    46     freopen("input.txt","r",stdin);
    47     freopen("output.txt","w",stdout);
    48     int n=read();
    49     for1(i,n+1)
    50     {
    51         getline(cin,a[i]);
    52         int l=a[i].length();
    53         for0(j,l-1)if(a[i][j]>='A'&&a[i][j]<='Z')a[i][j]+='a'-'A';
    54     }    
    55     int m=1;
    56     for0(i,a[n+1].length()-1)
    57     {
    58         if(a[n+1][i]=='.')m++;
    59         b[m]=b[m]+a[n+1][i];
    60     }
    61     m--;
    62     int ans=0;
    63     for1(i,n)
    64      for1(j,m)
    65       if(find(i,j))ans++; 
    66     printf("%d
    ",ans);
    67     return 0;
    68 }
    View Code

    B

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<iostream>
     7 #include<vector>
     8 #include<map>
     9 #include<set>
    10 #include<queue>
    11 #include<string>
    12 #define inf 1000000000
    13 #define maxn 500
    14 #define maxm 500+100
    15 #define eps 1e-10
    16 #define ll long long
    17 #define pa pair<int,int>
    18 #define for0(i,n) for(int i=0;i<=(n);i++)
    19 #define for1(i,n) for(int i=1;i<=(n);i++)
    20 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
    21 #define for3(i,x,y) for(int i=(x);i>=(y);i--)
    22 #define mod 10000
    23 using namespace std;
    24 inline int read()
    25 {
    26     int x=0,f=1;char ch=getchar();
    27     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    28     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
    29     return x*f;
    30 }
    31 class bigg
    32 {
    33 public:
    34     int num[maxn],len;
    35     bigg(){memset(num,0,sizeof(num));len=0;}
    36     bigg operator =(const bigg &b)
    37     {
    38         memset(num,0,sizeof(num));
    39         len=b.len;
    40         for1(i,len)num[i]=b.num[i];
    41         return (*this);
    42     }
    43     bigg operator =(int b)
    44     {
    45         memset(num,0,sizeof(num));len=0;
    46         while(b)num[++len]=b%mod,b/=mod;
    47         return (*this);
    48     }
    49     bigg operator *(int b)
    50     {
    51         bigg ans;
    52         ans.len=len;
    53         for1(i,len)ans.num[i]=num[i];
    54         int x=0;
    55         for1(i,len)
    56         {
    57             x+=ans.num[i]*b;
    58             ans.num[i]=x%mod;
    59             x/=mod;
    60         }
    61         if(x)ans.num[++ans.len]=x;
    62         return ans;
    63     }
    64     bigg operator +(const bigg &b)
    65     {
    66         bigg ans;ans=0;
    67         ans.len=max(len,b.len);
    68         for1(i,ans.len)
    69         {
    70             ans.num[i]+=num[i]+b.num[i];
    71             ans.num[i+1]=ans.num[i]/mod;
    72             ans.num[i]%=mod;
    73         }
    74         if(ans.num[ans.len+1])ans.len++;
    75         return ans;
    76     }
    77     void print()
    78     {
    79         printf("%d",num[len]);
    80         for3(i,len-1,1)printf("%04d",num[i]);printf("
    ");
    81     }
    82 };
    83 bigg f[120][120];    
    84 int main()
    85 {
    86     freopen("input.txt","r",stdin);
    87     freopen("output.txt","w",stdout);
    88     for1(i,100)f[i][1]=1;
    89     for2(i,2,100)
    90      for2(j,2,i)
    91       f[i][j]=f[i-1][j]*j+f[i-1][j-1];
    92     int n,m;  
    93     while(cin>>n>>m)f[n][m].print();
    94     return 0;
    95 }
    View Code

    C

      1 #include<cstdio>
      2 #include<cstdlib>
      3 #include<cmath>
      4 #include<cstring>
      5 #include<algorithm>
      6 #include<iostream>
      7 #include<vector>
      8 #include<map>
      9 #include<set>
     10 #include<queue>
     11 #include<string>
     12 #define inf 1000000000000000ll
     13 #define maxn 1500000
     14 #define eps 1e-10
     15 #define ll long long
     16 #define pa pair<int,int>
     17 #define for0(i,n) for(int i=0;i<=n;i++)
     18 #define for1(i,n) for(int i=1;i<=n;i++)
     19 #define for2(i,x,y) for(int i=x;i<=y;i++)
     20 using namespace std;
     21 inline ll read()
     22 {
     23     ll x=0,f=1;char ch=getchar();
     24     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
     25     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
     26     return x*f;
     27 }
     28 int fa[maxn],c[maxn][2],n,k,tot=0,rt=0;
     29 ll sum[maxn],s[maxn],v[maxn],a[maxn];
     30 inline void pushup(int x)
     31 {
     32     int l=c[x][0],r=c[x][1];
     33     s[x]=s[l]+s[r]+1;
     34     sum[x]=sum[l]+sum[r]+v[x];
     35 }
     36 inline void rotate(int x,int &k)
     37 {
     38     int y=fa[x],z=fa[y],l=c[y][1]==x,r=l^1;
     39     if(y==k)k=x;else c[z][c[z][1]==y]=x;
     40     fa[x]=z;fa[y]=x;fa[c[x][r]]=y;
     41     c[y][l]=c[x][r];c[x][r]=y;
     42     pushup(y);pushup(x);
     43 }
     44 inline void splay(int x,int &k)
     45 {
     46     while(x!=k)
     47      {
     48         int y=fa[x],z=fa[y];
     49         if(y!=k)
     50          {
     51             if(c[z][0]==y^c[y][0]==x)rotate(x,k);else rotate(y,k);
     52          }
     53         rotate(x,k); 
     54      }
     55 }
     56 inline void ins(int &k,int kk,ll x)
     57 {
     58     if(!k)
     59     {
     60         k=++tot;s[tot]=1;fa[tot]=kk;v[tot]=sum[tot]=x;return;
     61     }
     62     s[k]++;
     63     if(x<=v[k])ins(c[k][0],k,x);else ins(c[k][1],k,x);
     64     pushup(k);
     65 }
     66 inline int find(int k,int x)
     67 {
     68     int l=c[k][0],r=c[k][1];
     69     if(s[l]+1==x)return k;
     70     else if(s[l]>=x)return find(l,x);
     71     else return find(r,x-s[l]-1); 
     72 }
     73 inline int pos(int k,ll val)
     74 {
     75     if(v[k]==val)return k;
     76     else if(val<v[k])return pos(c[k][0],val);
     77     else return pos(c[k][1],val);
     78 }
     79 inline void del(ll val)
     80 {
     81     splay(pos(rt,val),rt);
     82     int x=c[rt][0],y=c[rt][1];
     83     while(c[x][1])x=c[x][1];
     84     while(c[y][0])y=c[y][0];
     85     splay(x,rt);splay(y,c[x][1]);
     86     fa[c[y][0]]=c[y][0]=0;
     87     pushup(y);pushup(x);
     88 }
     89 int main()
     90 {
     91     freopen("input.txt","r",stdin);
     92     freopen("output.txt","w",stdout);
     93     n=read();k=read();
     94     for1(i,n)a[i]=read(); 
     95     ins(rt,0,-1);ins(rt,0,1000000000001ll);
     96     for1(i,k-1)ins(rt,0,a[i]),splay(i+2,rt);
     97     ll ans=inf,x,y;
     98     for1(i,n-k+1)
     99      {
    100         ins(rt,0,a[i+k-1]);splay(i+k+1,rt);
    101         x=find(rt,(s[rt]>>1)+1);y=v[x];
    102         splay(x,rt);
    103         ans=min(ans,s[c[x][0]]*y-sum[c[x][0]]+sum[c[x][1]]-s[c[x][1]]*y);
    104         del(a[i]);
    105         if(ans==1000000000002ll)break;
    106      }
    107     cout<<ans-1000000000002ll<<endl;    
    108     return 0;
    109 }
    View Code
  • 相关阅读:
    Poj 2017 Speed Limit(水题)
    Poj 1316 Self Numbers(水题)
    Poj 1017 Packets(贪心策略)
    Poj 1017 Packets(贪心策略)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2000 Gold Coins(水题)
    poj 2000 Gold Coins(水题)
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/4067076.html
Copyright © 2020-2023  润新知