2017/8/7 考试吐槽
Posted Loser Of Life
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(){;}
(就是在这个题基础上过了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\n",res); 42 while(1); 43 } 44 int sb=haha(); 45 int main(){;}
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\n",ans); 34 } 35 int sb=haha(); 36 int main(){;}
以上是关于2017/8/7 考试吐槽的主要内容,如果未能解决你的问题,请参考以下文章