2017.11.2测试
来源:互联网 发布:java byte转16进制 编辑:程序博客网 时间:2024/06/05 15:44
分数:100+90+20=210 (shui的一批的数据点了个踩)
嘉年华倒计时
↑↑这个不是我↑↑
题解
T1 arrange
给出N段在同一天之内的时间,问如何取到除始末点外互不重合的时间段的数量的最大值
动规、贪心都可以,甚至还有倍增dalao
#include<bits/stdc++.h>#define ll long longusing namespace std;int read(){ int x=0,f=1; char c=getchar(); while(!isdigit(c)){ c=getchar(); if(c=='-')f=-1; } while(isdigit(c)){ x=(x<<3)+(x<<1)+c-'0'; c=getchar(); } return x*f;}int x,y,n,cnt,tmp;struct node{ int l,r;}e[200005];int f[2005];bool comp(const node &a,const node &b){ if(a.r!=b.r)return a.r<b.r; return a.l<b.l;}int main(){// freopen("arrange.in","r",stdin);// freopen("arrange.out","w",stdout); int tmp; n=read(); for(int i=1;i<=n;i++){ x=read();y=read(); tmp=x*60+y; e[i].l=tmp; x=read();y=read(); tmp=x*60+y; e[i].r=tmp; } sort(e+1,e+n+1,comp); cnt=1; for(int i=1;i<=1440;i++){ f[i]=f[i-1]; while(e[cnt].r==i){ f[i]=max(f[i],f[e[cnt].l]+1); cnt++; } } cout<<f[1440];}
T2 seq
一个由非负整数组成的序列A
给出L、R,求A的所有长度介于L到R之间的子序列中元素平均值的最大值
考试的时候90是baoli过的
评讲的时候一群江湖dalao纷纷涌现
以下,一位
#include<bits/stdc++.h>#define ll long longusing namespace std;int read(){ int x=0,f=1; char c=getchar(); while(!isdigit(c)){ c=getchar(); if(c=='-')f=-1; } while(isdigit(c)){ x=(x<<3)+(x<<1)+c-'0'; c=getchar(); } return x*f;}int n,l,r,tot,maxm=0;int nb[20005],f[20005];double maxx=0;struct node{ int x; int pos; bool operator < (const node &a)const { return x>a.x; }}a[30005];int main(){// freopen("seq.in","r",stdin);// freopen("seq.out","w",stdout); memset(a,0,sizeof(a)); memset(f,0,sizeof(f)); n=read();l=read();r=read(); for(int i=1;i<=n;i++){ a[i].x=read(); a[i].pos=i; f[i]=f[i-1]+a[i].x; } if(l==1){ for(int i=1;i<=n;i++){ maxm=max(maxm,a[i].x); } cout<<maxm<<".0000"; return 0; } for(int i=l;i<=min(2*l,r);i++){ for(int j=1;j<=n-i+1;j++) { double d=(double)(f[i+j-1]-f[j-1])/i; maxx=max(maxx,d); } } printf("%.4f",maxx);}
T3 palin
给出俩字符串s、t
按原顺序从任意从中取字符组成新串,求新串的最长回文子序列的长度
最终自己用的DP
表示一串从前取到了第i位,从后取到了第k位;二串从前取到了第j位,从后取到了第l位时新串回文子序列的最长长度
转移的时候稍加判断,特别是某条串最后只剩中间字符的时候,就A了
#include<bits/stdc++.h>using namespace std;char s[55],c[55];int n,m,x,maxx=0;int f[55][55][55][55];int main(){ memset(f,0,sizeof(f)); scanf("%s",s+1); n=strlen(s+1); scanf("%s",c+1); m=strlen(c+1); for(int i=1;i<=n+1;i++){ for(int j=1;j<=m+1;j++){ for(int k=n;k>=0;k--){ for(int l=m;l>=0;l--){ x=f[i][j][k][l]; if(i<k){ if(s[i]==s[k]){ f[i+1][j][k-1][l]=max(f[i+1][j][k-1][l],x+2); } } if(j<l){ if(c[j]==c[l]){ f[i][j+1][k][l-1]=max(f[i][j+1][k][l-1],x+2); } } if(i<=k&&j<=l){ if(s[i]==c[l]){ f[i+1][j][k][l-1]=max(f[i+1][j][k][l-1],x+2); } if(c[j]==s[k]){ f[i][j+1][k-1][l]=max(f[i][j+1][k-1][l],x+2); } } } } } } for(int i=1;i<=n+1;i++){ for(int j=1;j<=m+1;j++){ for(int k=n+1;k>=1;k--){ for(int l=m+1;l>=1;l--){ x=f[i][j][k][l]; if(i>k&&j>l)maxx=max(maxx,x); if(i==k&&j>l)maxx=max(maxx,x+1); if(j==l&&i>k)maxx=max(maxx,x+1); } } } } cout<<maxx;}
阅读全文
0 0
- 测试测试-测试测试2
- 2017.11.2测试
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 测试2
- 简单实现I/O文件复制
- python核心编程(一)
- Codevs1228苹果树
- 机器学习第三章
- 问题 A: 输出梯形
- 2017.11.2测试
- ServletRequestListener请求的监听事件
- Hibernate中set元素相关属性详解
- 【caffe】caffenet在windows下训练以及遇到的一系列问题——【caffe学习二】
- leetcode:Integer to Roman 浅谈古罗马OI生活之数字的研究
- iOS 播放GIF动画
- 一周学习简单总结(二)
- js 数组转json,json转数组
- MVP注册登录