2017.10.17一试
来源:互联网 发布:西南大学网络教育官网 编辑:程序博客网 时间:2024/06/05 04:50
何处望江南。。。
越考越虚。。。就是这种感觉。。。
T1
其实只是一个简单的差分而已。
但我——
莫名RE。为何在本机上各种正常的代码,会在评测时崩溃呢?
Emm…Accepted or not Accepted(Runtime Error) ,that is the question.
然后把读入优化改成了Scanf。啊,过了。
呜呼哀哉,呜呼,呜噗哀哉。
代码如下:
//I want something just like this.#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<ctime>#include<cmath>#include<algorithm>#include<cctype>#include<iomanip>#include<queue>#include<map>using namespace std;int chr[1440];int n;int x;int h1,m1,h2,m2;char s;int ans;int read(){ int sum=0,f=1;char ch; for(ch=getchar();(ch>'9'||ch<'0')&&ch!='-';ch=getchar()); if(ch=='-') {f=-1;ch=getchar();} for(;ch>='0'&&ch<='9';ch=getchar()) sum=(sum<<3)+(sum<<1)+ch-48; return sum*f;}inline void write(int x){ if(x<0) putchar('-'),x=-x; if(x>9) write(x/10); putchar(x%10+'0');}int main(){ ios::sync_with_stdio(false); cin.tie(0); //freopen("chair.in","r",stdin); //freopen("chair.out","w",stdout); int lt,ct; n=read(); for(int i=1;i<=n;i++) { x=read();scanf("%d:%d",&h1,&m1); ct=h1*60+m1; scanf("%d:%d",&h2,&m2); lt=h2*60+m2; for(int j=ct;j<lt;j++) { chr[j]+=x; } } ans=0; for(int i=1;i<=1440;i++) { ans=max(ans,chr[i]); } write(ans); return 0;}
T2
N^2暴力模拟40分。
对于AC代码:
快使用双向链表呼呼哈hie。
用双向链表将多个子串连接起来,同理连接字串内的数字。每次O(1)删除不和谐的数,然后再依次检查合并或删除子串。
代码如下:
//I want something just like this.#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<ctime>#include<cmath>#include<algorithm>#include<cctype>#include<iomanip>#include<queue>#include<map>using namespace std;const int N=100005;const int INF=0x7fffffff;struct node{ int val,pos;}b[N];int t,n;int cnt,tmp;int a[N],del[N],in[N];int bz;inline int read(){ int i=0,f=1; char c; for(c=getchar();(c<'0'||c>'9')&&c!='-';c=getchar()); if(c=='-') c=getchar(),f=-1; for(;c>='0'&&c<='9';c=getchar()) i=(i<<3)+(i<<1)+c-'0'; return i*f;}int main(){ t=read(); while(t--) { memset(del,0,sizeof(del)); memset(in,0,sizeof(in)); n=read(); a[0]=-INF,a[n+1]=INF; for(int i=1;i<=n;++i) a[i]=read(); for(int i=1;i<=n;++i) if(a[i-1]>a[i]||a[i]>a[i+1]) del[i]=1; cnt=0; for(int i=1;i<=n;++i) if(del[i]) { if(i>1&&!del[i-1]&&!in[i-1]) ++cnt,b[cnt]=(node){a[i-1],i-1},in[i-1]=1; if(i<n&&!del[i+1]&&!in[i+1]) ++cnt,b[cnt]=(node){a[i+1],i+1},in[i+1]=1; } bz=1; while(bz) { bz=0;b[0].val=-INF,b[cnt+1].val=INF; for(int i=1;i<=cnt;i++) { in[b[i].pos]=0; if(b[i-1].val>b[i].val||b[i].val>b[i+1].val) bz=1,del[b[i].pos]=1; } tmp=0; for(int i=1;i<=cnt;++i) if(del[b[i].pos]) { int p=b[i].pos; if(p>1&&!del[p-1]&&!in[p-1]) b[++tmp]=(node){a[p-1],p-1},in[p-1]=1; if(p<n&&!del[p+1]&&!in[p+1]) b[++tmp]=(node){a[p+1],p+1},in[p+1]=1; } else ++tmp,b[tmp]=b[i]; cnt=tmp; } cnt=0; for(int i=1;i<=n;++i) if(!del[i]) ++cnt; cout<<cnt<<endl; for(int i=1;i<=n;++i) if(!del[i]) cout<<a[i]<<" "; cout<<endl; } return 0;}
T3
区间DP。
对于00或11,可以合并成一个 大O 或 大l ,同时记录每个点的点权。
DP[L][R]表示[L,R]的球全部消除的最小次数。NUM[i]表示点i的点权。
转移方程分4种情况讨论。
#PS:有大佬妙妙的搜索搜到了60分?!
代码如下:
//I want something just like this.#include<iostream>#include<algorithm>#include<cctype>#include<cstdio>#include<queue>#include<cstring>using namespace std;const int N=505;int t;int len,cnt;int ch[N],num[N],f[N][N];char s[N];inline int read(){ int i=0,f=1; char ch; for(ch=getchar();(ch<'0'||ch>'9')&&ch!='-';ch=getchar()); if(ch=='-') f=-1,ch=getchar(); for(;ch>='0'&&ch<='9';ch=getchar()) i=(i<<1)+(i<<3)+ch-'0'; return i*f;}inline void work(){ memset(f,127,sizeof(f)); memset(num,0,sizeof(num)); cin>>s+1; len=strlen(s+1);cnt=0; for(int i=1;i<=len;++i) if(s[i]!=s[i-1]) ++cnt,ch[cnt]=s[i],num[cnt]=1; else ++num[cnt]; for(int i=cnt;i>=1;--i) for(int j=i;j<=cnt;++j){ if(i==j){ f[i][j]=3-num[i]; continue; } if(ch[i]==ch[j]){ f[i][j]=f[i+1][j-1]+max(0,3-num[i]-num[j]); if(num[i]+num[j]<4) for(int k=i+2;k<j;k+=2) if(num[k]==1) f[i][j]=min(f[i][j],f[i+1][k-1]+f[k+1][j-1]); } for(int k=i;k<j;++k) f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]); } cout<<f[1][cnt]<<endl;}int main(){ t=read(); while(t--) work(); return 0;}
总之,对于此次考试,嘛。。。总而言之。。。
呜呼,我说不出话!
————————————————————–by 鲁迅先生
阅读全文
1 0
- 2017.10.17一试
- 2017.10.16一试
- 2017.10.14一试
- 2017.10.13一试
- 2017.10.11一试
- 2017.10.19一试
- 2017.10.20一试
- 2017.10.23一试
- 2017.10.24一试
- 2017.10.28一试
- 2017.10.30一试
- 开心一试
- 机试练习题一
- 扫雷【SCOI2005一试】
- Jloi 2015 一试
- ZJOI2016一试游记
- ZJOI2017一试游记
- GDOI2017模拟一试
- 9.Java流程控制
- 获取hive表最新分区
- 10-17盒子缓冲运动,显示盒子淡入淡出,offset、style.xx、的区别,页面窗口滚动
- VMware Vsphere 6.0安装部署 (三) vCenter Server安装
- 文QT5下载安装教程
- 2017.10.17一试
- codeforces 570A【python】
- Linux基本命令详解
- 输入一个三位数的整数
- 时光机穿梭
- 横向越权与纵向越权
- GP通过外部表装载数据时遇到ERROR:extra data after last expected column解决方法
- 求和
- arcgis for javascript 版本切换时部分笔记