2017.07.14 训练2
来源:互联网 发布:saa7130监控软件 编辑:程序博客网 时间:2024/05/19 13:55
电大training7 div2:
补题:https://vjudge.net/contest/170559#problem/G
这题很好,,还是看别人代码。。大概又懂了 hash和
上代码。
这里有挺多自己不会的和不熟的。1:前缀和,2:hash,3:把字母个数怎么变为abc
const int maxn=4050;char s[maxn],t[maxn];int s1[maxn][27],s2[maxn][27];const ULL seed=23,seed2=1e9+7;ULL gethash(int *v){ ULL h=seed; for(int i=0;i<=25;++i){ h*=seed2; h+=v[i]; }return h;}map<ULL,int>mp;int main(){ sf("%s%s",s+1,t+1); int n=strlen(s+1),m=strlen(t+1); for(int i=1;i<=n;++i){ memcpy(s1[i],s1[i-1],sizeof(s1[i-1])); s1[i][s[i]-'a']++;//前缀和 } for(int i=1;i<=m;++i){ memcpy(s2[i],s2[i-1],sizeof(s2[i-1])); s2[i][t[i]-'a']++; } int ans=0; for(int len=1;len<=min(n,m);++len){ mp.clear(); for(int i=1;i+len-1<=n;++i){ int a[26]; for(int j=0;j<=25;++j){ a[j]=s1[i+len-1][j]-s1[i-1][j]; } mp[gethash(a)]++; } for(int i=1;i+len-1<=m;++i){ int b[26]; for(int j=0;j<=25;++j){ b[j]=s2[i+len-1][j]-s2[i-1][j]; } if(mp[gethash(b)]){ans=len;break;} } } pf("%d\n",ans);}
https://vjudge.net/contest/170559#problem/F
这题本来也说是水题的。。。但是自己没想出来。 而且刚看别人的代码还看不懂。。
int l[2*maxn],r[2*maxn];struct Node{ int pos; int id; bool friend operator<(Node a,Node b){ return a.pos<b.pos; }}node[maxn];int main(){ int n,m; sf("%d%d",&n,&m); rep(i,1,200000)l[i]=r[i]=i; rep(i,1,m){ sf("%d%d",&node[i].pos,&node[i].id); } sort(node+1,node+1+m); rep(i,1,m){ int x=node[i].id,y=node[i].id+1; l[y]=l[x]=min(l[x],l[y]); r[y]=r[x]=max(r[x],r[y]); } rep(i,1,n){ pf("%d%c",r[i]-l[i]+1,i==n?'\n':' '); }}
补题 scut training 2:https://vjudge.net/contest/170300#problem/C
复习了下kmp。。。http://www.cnblogs.com/c-cloud/p/3224788.html
然后这题很巧妙。还是多做题才能知道。。
char s[maxn];int nxt[maxn];int cnt[maxn];int vis[maxn];int main(){ int n,q; sf("%d%d",&n,&q); sf("%s",s); int i,k=0; for(i=1;i<n;++i){ while(k>0&&s[i]!=s[k])k=nxt[k-1]; if(s[i]==s[k])k++; nxt[i]=k; } while(q--){ int op;sf("%d",&op); if(op==1){ sf("%s",s+n); n++; while(k>0&s[i]!=s[k])k=nxt[k-1]; if(s[i]==s[k])k++; nxt[i]=k; cnt[++i]=cnt[k];//即是原来的 n+1, 反正就是那个位置的满足后缀数 }else if(op==2){ if(!vis[i]){ vis[i]=1; cnt[i]++; } }else{ pf("%d\n",cnt[n]); } }}
cf D https://vjudge.net/problem/CodeForces-831D
这个地方的贪心想不出来。。。
LL a[maxn],b[maxn];void solve(){ sort(a+1,a+n+1); sort(b+1,b+k+1); LL ans=2*inf; for(int i=1;i<=k-n+1;++i){ LL sum=0; for(int j=1;j<=n;++j){ sum=max(sum,abs(a[j]-b[i+j-1])+abs(b[i+j-1]-p)); } ans=min(sum,ans); } cout<<ans<<endl;}int main(){ sf("%d%d%d",&n,&k,&p); rep(i,1,n)sf("%d",&a[i]); rep(i,1,k)sf("%d",&b[i]); solve();}
阅读全文
0 0
- 2017.07.14 训练2
- 训练集---训练赛14
- FJNU-14级MCS-ACM训练#2
- 寒假训练---训练赛2--Fighting
- 寒假训练--训练赛2--Good Luck!
- 寒假训练--训练赛2--加密术
- 2017.07.16 训练3
- 训练3 习题14
- 训练日记-14
- Capstone训练营14
- 训练2 习题2
- 搜索专题训练(2)
- 数学专题训练2
- 矩阵训练2
- QUST每周训练2
- 暑假训练.2
- PTA训练(2)
- 训练2 11题
- webService的demo
- centos7安装R
- php抓取微信的图文内容
- 写给希望从事人工智能领域的各位
- block,inline和inline-block概念和区别
- 2017.07.14 训练2
- Opencv系列之cv::mat到Iplimage
- 如何让你的妆容精致一点点
- FastJson学习笔记
- 波士顿咨询报告:人工智能不仅会增加失业,还可能加剧社会不平等【智库2861】
- 机器学习(Machine Learning)&深度学习(Deep Learning)学习资料总结
- Matrix POJ
- js漂浮订单信息
- 情商2-给拒绝找个合适的理由