zoukankan      html  css  js  c++  java
  • 2017/8/7 考试吐槽

    2017 8 7 得分:50

    果然科学定律是不能够违背的……前几天,人品大爆发,考的还像那么回事,但是,带来的副作用是:RP 暴跌……真正需要人品的时候,已经掉光了……我又有什么办法呢……联考挂飞,这就是你!

    A、Passward

    不要吐槽这个拼写……原题如此……

    题面……还是别贴了,找不到啊……直接重述题意+贴相似题目:找出最长的前后缀公共部分,并且这个东西在中间出现过。http://cogs.pro/cogs/problem/problem.php?pid=2688不同的是只有一组数据。

    考试时候脑残啊……写挂了Hash……废了自认为的15分……然后……Hash竟然可以A?!……

    我曾经是个探险家,直到我膝盖中了一箭!from:一条躺在沙滩上的咸鱼……

    不说了都是泪啊啊……

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 const long long BASE=23333;
     7 const int maxn=100005;
     8 unsigned long long HA[maxn],poww[maxn];
     9 char s[maxn];
    10 unsigned long long getha(int l,int r)
    11 {
    12     return HA[r]-HA[l-1]*poww[r-l+1];
    13 }
    14 int len;
    15 bool check(int val)
    16 {
    17     unsigned long long s1=getha(len-val+1,len),s2=getha(1,val);
    18     if(s1!=s2)return 0;
    19     for(int i=2;i<=len-val;i++)
    20     {
    21         unsigned long long s3=getha(i,i+val-1);
    22         if(s3==s1)
    23             return 1;
    24     }
    25     return 0;
    26 }
    27 int haha()
    28 {
    29     freopen("fool.in","r",stdin);
    30     freopen("fool.out","w",stdout);
    31     int n;scanf("%d",&n);
    32     while(n--)
    33     {
    34         scanf("%s",s+1);len=strlen(s+1);
    35         poww[0]=1;
    36         for(int i=1;i<=100000;i++)poww[i]=poww[i-1]*BASE;
    37         HA[0]=0;
    38         for(int i=1;i<=len;i++)
    39         {
    40             HA[i]=HA[i-1]*BASE+s[i]-'a';
    41         }
    42         int ans=0;
    43         for(int i=len-2;i;i--)
    44             if(check(i)){ans=i;break;}
    45         if(!ans)puts("---");
    46         else 
    47         {
    48             for(int i=1;i<=ans;i++)putchar(s[i]);
    49             puts("");
    50         }
    51     }
    52 }
    53 int sb=haha();
    54 int main(){;}
    A

    (就是在这个题基础上过了2688,vscode自动保存退不回去了明明是你懒癌发作不想改回去了啊

    B、就

    没错又是个很无厘头的题面……

    题意:一排$N$个数,找出$K$个不连续的数使相加和最大。

    看到题$SB$的以为这是个数据结构优化DP……大力撸了棵线段树……然后……5分?!!!!!!尼玛啊暴力都没这么少分……我学傻了……

    然后正解竟然是……$STL$优化贪心再加链表合并?!把这个点和左右的点退出来,将他们合并看做一个点,合并出来的再塞回去?!这就带上反悔防止选错了?!这就完了?!正确性显而易见,但是这种窒息操作……唉算了算了,反正智障都是一样的,智商是硬伤,自己脑残怨不了别人……

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<set>
     6 using namespace std;
     7 struct pii
     8 {
     9     int first;
    10     long long second;
    11     bool operator<(const pii &b)const
    12     {
    13         return second>b.second||(second==b.second&&first<b.first);
    14     }
    15 };
    16 set<pii>s;
    17 const int maxn=100005;
    18 int n,L[maxn],R[maxn],k;
    19 long long res,a[maxn];
    20 int haha()
    21 {
    22     scanf("%d%d",&n,&k);
    23     for(int i=1;i<=n;i++)
    24     {
    25         long long x;scanf("%lld",&x);
    26         s.insert((pii){i,x});a[i]=x;
    27         L[i]=i-1,R[i]=i+1;
    28     }
    29     for(int i=1;i<=k;i++)
    30     {
    31         set<pii>::iterator it=s.begin();
    32         pii S=*it;s.erase(it);
    33         res+=S.second;int pos=S.first;
    34         long long tmp=0;
    35         s.erase((pii){L[pos],a[L[pos]]});s.erase((pii){R[pos],a[R[pos]]});
    36         a[pos]=tmp=-S.second+a[L[pos]]+a[R[pos]];
    37         R[L[L[pos]]]=L[R[R[pos]]]=pos;L[pos]=L[L[pos]];R[pos]=R[R[pos]];
    38         //cout<<pos<<" "<<L[pos]<<" "<<R[pos]<<endl;
    39         s.insert((pii){pos,tmp});
    40     }
    41     printf("%lld
    ",res);
    42     while(1);
    43 }
    44 int sb=haha();
    45 int main(){;}
    B

    C、书

    今天就是这么不正常的一天……

    题意:每个书有一定几率被抽到,被抽到时在第几位就耗费多少体力,随后将其放在书的顶部。求无限次操作后抽一本书的期望体力消耗。

    真是道防$AK$好题……考场上推了两个小时啥都没推出来,连样例都手玩都玩不出来,以为自己要$GG$,单题被虐100分了……

    然后……卧槽这个题全场平均分$0$分?!一个点都没人过?!小数据卡爆搜?!卧槽这个题晚上我得好好口胡一波……

     我们按照原题的叙述,设$A[i]$为抽到$i$的概率。我们可以看到,只要抽到了$i$,至少就会造成1的体力消耗。

    然后我们就要找到在这个基础上,其他的书对它造成的额外影响。

    如果我们直接考虑每种情况的话,显然会超时。我们要找一个合理的方法卡时间。

    方法很简单,但却需要费一番脑子:枚举另一本书的情况,然后得出另一本书在这本书前面的概率。

    为什么这样是正确的呢?我们换个角度想一想:如果一本书没有书在前面,那么耗费体力绝对就是$1$;如果说有一本书多压在上面,取出它的体力就要多消耗$1$,因此求额外消费的体力也就是求出期望压在这本书上面书的数量。根据期望的线性性,显然,上面的这个式子是正确的。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 const int mod=1e9+7;
     7 const int maxn=1005;
     8 int n,probablities[maxn];
     9 long long qpow(long long v,int tim)
    10 {
    11     long long tmp=1,t=v;
    12     for(;tim;tim>>=1,t=t*t%mod)
    13         if(tim&1)tmp=tmp*t%mod;
    14     return tmp;
    15 }
    16 int haha()
    17 {
    18     scanf("%d",&n);
    19     for(int i=1;i<=n;i++)
    20     {
    21         long long x,y;scanf("%lld%lld",&x,&y);
    22         x=x*qpow(y,mod-2)%mod;
    23         probablities[i]=x;
    24     }
    25     long long ans=0;
    26     for(int i=1;i<=n;i++)
    27     {
    28         long long sum=1;
    29         for(int j=1;j<=n;j++)
    30             if(j!=i)sum=(sum+probablities[j]*qpow((probablities[i]+probablities[j])%mod,mod-2))%mod;
    31         ans=(ans+sum*probablities[i]%mod)%mod;
    32     }
    33     printf("%lld
    ",ans);
    34 }
    35 int sb=haha();
    36 int main(){;}
    C
  • 相关阅读:
    Electron dialog 对话框的使用
    Electron BrowserView 的使用
    自动化测试相关
    使用chrome开发者工具中的performance面板解决性能瓶颈
    Electron window.open 函数 和 Browser-window-proxy 对象的使用
    Electron webview 标签
    Electron File对象
    Electron 进程
    JAVA日报
    JAVA日报
  • 原文地址:https://www.cnblogs.com/Loser-of-Life/p/7301155.html
Copyright © 2011-2022 走看看