codeforces round 416 div2补题
来源:互联网 发布:好听网络歌曲排行榜 编辑:程序博客网 时间:2024/05/21 21:41
第一题,水题
A. Vladik and Courtes
#include<bits/stdc++.h>using namespace std;int main(){long long a,b;cin>>a>>b;long long t1=0,t2=0;for(int i=1;;i++){t1=t1+2*i-1;t2=t2+2*i;if(t1>a){cout<<"Vladik"<<endl;break;}if(t2>b){cout<<"Valera"<<endl;break;}
}}
第二题,我想复杂了想到区间求第k大还写了主席树==其实就是暴力的题
B. Vladik and Complicated Book
#include<bits/stdc++.h> using namespace std; const int maxn=1e4+10; int rt[20*maxn]; int sum[20*maxn],ls[20*maxn],rs[20*maxn]; int a[maxn],b[maxn]; int cnt; void build(int& node,int l,int r) { node=++cnt; sum[node]=0; if(l==r) return ; int mid=(l+r)>>1; build(ls[node],l,mid); build(rs[node],mid+1,r); } void update(int& now,int pre,int l,int r,int p) { now=++cnt; ls[now]=ls[pre]; rs[now]=rs[pre]; sum[now]=sum[pre]+1; if(l==r) return ; int mid=(l+r)>>1; if(p>mid) update(rs[now],rs[pre],mid+1,r,p); else update(ls[now],ls[pre],l,mid,p); } int query(int pre,int now,int l,int r,int k) { if(l==r) return b[l]; int mid=(l+r)>>1; int c=sum[ls[now]]-sum[ls[pre]]; if(k<=c) return query(ls[pre],ls[now],l,mid,k); else return query(rs[pre],rs[now],mid+1,r,k-c); } int main() { int t,n,m,ql,qr,k; cnt=0; scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",a+i); b[i]=a[i]; } sort(b+1,b+1+n); int len=unique(b+1,b+1+n)-(b+1); build(rt[0],1,len); for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+1+len,a[i])-b; for(int i=1;i<=n;i++) update(rt[i],rt[i-1],1,len,a[i]); for(int i=1;i<=m;i++) { scanf("%d %d %d",&ql,&qr,&k); if(k>qr||k<ql) { cout<<"Yes"<<endl; continue; } int tmp=query(rt[ql-1],rt[qr],1,len,k-ql+1); if(tmp==a[k]) cout<<"Yes"<<endl; else cout<<"No"<<endl;}
c.比赛时写到这题就gg了想不出来。
C. Vladik and Memorable Trip
#include<bits/stdc++.h>using namespace std;int a[5100],cnt[5100];int t[5100][5100];int dp[5100];bool vis[5100];int ans;int main(){int n;cin>>n;for(int i=1;i<=n;i++){ cin>>a[i]; cnt[a[i]]++; } memset(t,-1,sizeof(t)); for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));ans=0;int sum=0;for(int j=i;j<=n;j++){if(!vis[a[j]]){ vis[a[j]]=1; ans=ans^a[j]; sum+=cnt[a[j]]; }if(sum==j-i+1){t[i][j]=ans;}}} for(int i=n;i>=1;i--){ dp[i]=dp[i+1];for(int j=i;j<=n;j++){if(t[i][j]!=-1)dp[i]=max(dp[i],dp[j+1]+t[i][j]); }}cout<<dp[1]<<endl;}
阅读全文
0 0
- codeforces round 416 div2补题
- Codeforces Round #409 div2 【A~D√ E待补】
- CodeForces Round #403 补题
- CodeForces Round #401 补题
- codeforces Round #131 div2水题报告
- Codeforces Round #402 (Div2)C题
- Codeforces Round #402 (Div2)D题
- Codeforces Round #402 (Div2)E题
- codeforces round #174 div2
- codeforces round 171 div2
- codeforces round# 177 div2
- Codeforces Round #185(div2)
- Codeforces round#226 div2
- codeforces round 234 DIV2
- codeforces round DIV2
- Codeforces Round #247 Div2
- codeforces round #262 (div2)
- codeforces round #264(div2)
- mysql性能优化-慢查询分析、优化索引和配置
- Java 抽象类和抽象方法
- 安装使用VS2015 communition 版本遇到的坑
- 最短路径(最基础,经典的模板和思想):HDU-2544最短路
- WiFi认证过程需要的协议和服务
- codeforces round 416 div2补题
- SpringMVC执行流程
- Linux总结笔记6-配置Samba服务实现Linux和Windows之间文件共享
- 【机房重构】--datatable转泛型时,部分字段信息不显示
- 在Windows10下安装CPU版本TensorFlow
- [NOIP]正整数的表示
- 【剑指offer-解题系列(33)】把数组排成最小的数
- 【数据结构基础】前序、中序、后序线索化二叉树(非递归实现)
- RAM和ROM