2016 PSUT Coding Marathon(gym100989)
A, C签到题
Gym 100989B
题意:给一个算LCS时得到的DP矩阵,然后根据这个矩阵让你算出两个符合条件的字符串
思路 :因为字符串长度<=25,然后可以先假设A字符串就是abcdef....,然后根据A算B就行。b[j]未确定时,令b[j]=a[i]即可;遇到b[j]已确定的情况就改变a[i],以及所有跟a[i]相同的字符。
/*************************************************************************File Name: B.cppID: obsoles1PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月18日 星期一 11时58分21秒************************************************************************/
#include<bits/stdc++.h>
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)
#define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))
#define ll long long
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
#define pb push_back
using namespace std;
const int N=110;
int dp[N][N];
char a[N],b[N];
bool vis_b[N];int main(){int n,m,i,j,k;while(~scanf("%d%d",&n,&m)){for(i=0;i<n+1;++i)for(j=0;j<m+1;++j)scanf("%d",&dp[i][j]);for(i=0;i<n;++i)a[i]='a'+i;a[n]=b[m]='\0';Mem0(vis_b);for(i=1;i<=n;++i)for(j=1;j<=m;++j)if(dp[i][j]==dp[i-1][j-1]+1 && dp[i][j]!=Max(dp[i-1][j],dp[i][j-1])){if(!vis_b[j]){b[j-1]=a[i-1];vis_b[j]=1;}else{for(k=0;k<m;++k)if(b[k]==a[i-1])b[k]=b[j-1];for(k=0;k<n;++k)if(a[k]==a[i-1] && k!=i-1)a[k]=b[j-1];a[i-1]=b[j-1];}}bool flag[26];Mem0(flag);for(i=0;i<n;++i)flag[a[i]-'a']=1;int tmp;for(i=0;i<26;++i)if(!flag[i]){tmp=i;break;}//cout<<"tmp="<<tmp<<endl;for(i=1;i<=m;++i)if(!vis_b[i])b[i-1]='a'+tmp;printf("%s\n%s\n",a,b);}
}
Gym 100989D
题意:食堂从门口到里面按顺序摆了n张桌子,从1标号到n,分别可坐ai个人。q次操作,in x代表进来x人,他们要坐同一张桌子,工作人员会把他们带到他们能坐下的椅子最少的桌子,如果没有他们能坐的桌子他们就不在食堂吃了;out x代表x号桌的人走了。(比赛时题意理解错了,这题其实是道大水题,不用set也很简单,我用来熟悉set的操作)
思路:用set<pair<int,int>>维护,set中先按first,再按second有序。lower_bound查找按set定义的大小。
/*************************************************************************File Name: D.cppID: obsoles1PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月18日 星期一 11时59分19秒************************************************************************/
#include<bits/stdc++.h>
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)
#define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))
#define ll long long
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
#define pb push_back
using namespace std;
const int N=1e5+10;
int a[N];
set<pair<int,int>> table;
set<pair<int,int>>::iterator it;int main(){int n,q,i,x,pos;char op[5];while(~scanf("%d%d",&n,&q)){for(i=1;i<=n;++i){scanf("%d",a+i);table.insert({a[i],i});}while(q--){scanf("%s%d",op,&x);if(op[0]=='i'){it=table.lower_bound({x,0});if(it!=table.end()){printf("%d\n",it->second);table.erase(it);}else puts("-1");}else table.insert({a[x],x});}}
}
Gym 100989E
题意:给定a,b两个字符串,问a,b是否一致,若b长度>=8,则b可以有一个字符与a不一样或比a少一个。
思路:注意读题,多一个字符是不被允许的
/*************************************************************************File Name: E.cppID: obsoles1PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月18日 星期一 12时12分48秒************************************************************************/
#include<bits/stdc++.h>
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)
#define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))
#define ll long long
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
#define pb push_back
using namespace std;
const int N=110;
char s1[N],s2[N];int main(){int len1,len2,i;while(~scanf("%s%s",s1,s2)){len1=strlen(s1),len2=strlen(s2);if(len1==len2){int cnt=0;for(i=0;i<len1;++i)if(s1[i]!=s2[i])cnt++;if(cnt==0 || (cnt==1 && len1>=8))puts("yes");else puts("no");}else if(len1-len2==1 && len1>=8){bool flag=1;for(i=0;i<len2;++i)if(s1[i]!=s2[i])break;for(;i<len2;++i)if(s1[i+1]!=s2[i])flag=0;if(flag)puts("yes");else puts("no");}else puts("no");}
}
Gym 100989F
题意:
/*************************************************************************File Name: F.cppID: obsoles1PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月18日 星期一 12时30分42秒************************************************************************/
#include<bits/stdc++.h>
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)
#define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))
#define ll long long
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
#define pb push_back
using namespace std;
const int N=1e5+10;
int cnt[N],pos[N];int main(){int n,m,q,i,x,p;while(~scanf("%d%d%d",&n,&m,&q)){Mem0(cnt);int ans=0;for(i=1;i<=n;++i){scanf("%d",&pos[i]);if(!cnt[pos[i]])ans++;cnt[pos[i]]++;}//cout<<"ans="<<ans<<endl;while(q--){scanf("%d%d",&x,&p);cnt[pos[x]]--;if(!cnt[pos[x]])ans--;if(!cnt[p])ans++;cnt[p]++;pos[x]=p;printf("%d\n",m-ans);}}
}
/*************************************************************************File Name: G.cppID: obsoles1PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月18日 星期一 16时12分08秒************************************************************************/
#include<bits/stdc++.h>
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)
#define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))
#define ll long long
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
#define pb push_back
using namespace std;
const int N=1e5+10;
ll a[N];int main(){ll k,av,sum,sav,maxn;int i,m;ios::sync_with_stdio(0);while(cin>>m>>k){sum=maxn=0;for(i=0;i<m;++i){cin>>a[i];//cout<<"a["<<i<<"]="<<a[i]<<endl;sum+=a[i];maxn=Max(maxn,a[i]);}av=(sum+m-1)/m;ll low=av,high=maxn,mid,ans;while(low<=high){mid=(low+high)>>1;//cout<<"low="<<low<<" high="<<high<<" mid="<<mid<<endl;sav=0;for(i=0;i<m;++i){if(a[i]>mid)sav+=a[i]-mid;}//cout<<"sav="<<sav<<" k="<<k<<endl;if(sav<=k)ans=mid,high=mid-1;else low=mid+1;}cout<<ans<<endl;}
}
题意:又是找零问题。面额有1,5,10,20,50。初始没钱,问能否在不改变队伍顺序的情况下成功找零。
/*************************************************************************File Name: H.cppID: obsoles1PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月18日 星期一 12时43分58秒************************************************************************/
#include<bits/stdc++.h>
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)
#define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))
#define ll long long
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
#define pb push_back
using namespace std;int main(){int n,k,cnt1,cnt5,cnt10,cnt20,cnt50;int x1,x5,x10,x20,x50,charge;while(~scanf("%d",&n)){cnt1=cnt5=cnt10=cnt20=cnt50=0;bool flag=1;for(int i=0;i<n;++i){scanf("%d%d%d%d%d%d",&k,&x1,&x5,&x10,&x20,&x50);cnt1+=x1,cnt5+=x5,cnt10+=x10;cnt20+=x20,cnt50+=x50;charge=x1*1+x5*5+x10*10+x20*20+x50*50-k;while(charge>=50 && cnt50)charge-=50,cnt50--;while(charge>=20 && cnt20)charge-=20,cnt20--;while(charge>=10 && cnt10)charge-=10,cnt10--;while(charge>=5 && cnt5)charge-=5,cnt5--;while(charge>=1 && cnt1)charge--,cnt1--;if(charge)flag=0;}if(flag)puts("yes");else puts("no");}
}
/*************************************************************************File Name: J.cppID: obsoles1PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月18日 星期一 12时57分04秒************************************************************************/
#include<bits/stdc++.h>
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)
#define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))
#define ll long long
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
#define pb push_back
using namespace std;
const int N=110;
int k[N],mp[N][N],n;
char op[N][2];void Print(int ch,int d){int i;for(i=0;i<d;++i)printf(" ");if(k[ch])printf("%s ",op[ch]);else printf(" ");if(ch)printf("object%d\n",ch);else puts("project");if(op[ch][0]=='-'){for(i=0;i<k[ch];++i)Print(mp[ch][i],d+1);}
}int main(){int i,j;while(~scanf("%d",&n)){for(i=0;i<=n;++i){scanf("%s%d",op[i],&k[i]);for(j=0;j<k[i];++j)scanf("%d",&mp[i][j]);}Print(0,0);}
}
/*************************************************************************File Name: L.cppID: obsoles1PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月18日 星期一 13时49分22秒************************************************************************/
#include<bits/stdc++.h>
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)
#define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))
#define ll long long
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
#define pb push_back
using namespace std;
const int N=30;
int a[N];
struct node{int x,step,i;
}s,t;int main(){int n,i,j,sum,sum2;char op[2];while(~scanf("%d",&n)){//cout<<"n="<<n<<endl;scanf("%d",a);sum=sum2=a[0];for(i=1;i<n;++i){scanf("%s%d",op,a+i);sum2+=a[i];if(op[0]=='-')a[i]=-a[i];sum+=a[i];}queue<node> q;s.x=a[0],s.step=0,s.i=1;q.push(s);int ans=N;while(!q.empty()){s=q.front();q.pop();//cout<<"s.x="<<s.x<<" i="<<i<<endl;if(s.x==0 && s.i==n)ans=Min(ans,s.step);if(s.i<=n){t=s;t.x+=a[t.i++];q.push(t);t=s;t.x-=a[t.i++],t.step++;q.push(t);}}if(ans==N)puts("-1");else printf("%d\n",ans);}
}
2016 PSUT Coding Marathon(gym100989)相关推荐
- 在VM虚拟机Windows Server r2上部署安装Microsoft Dynamics CRM 2016 步骤详解(一)
应公司需求,最近在学微软的Dynamics CRM.在搭建环境的过程中也遇到了一些雷坑,在这里分享一下安装部署过程当中所遇到的一些问题, 安装Microsoft Dynamics CRM 2016的几 ...
- 2016全球数据新闻奖(DJA)颁布, 12个获奖作品全剖析
就在一天前,2016数据新闻奖(DataJournalism Awards, DJA)在全球编辑网络(Global Editors Network)年度峰会上隆重揭晓! 数据新闻奖由跨平台媒体社区全球 ...
- 2016年下半年总结(连载)!
2016年下半年总结(连载!) ① 10月总结 夜深人静的时候.一个的时候总喜欢多想. 这一个月真是过得快啊,不免又说起了老套而又真实的话.此刻:2016/10/29/23:34. 开 ...
- 渣基础:比照Hawstein学Cracking the coding interview(1)
<C++ Primer 第五版>书实在是太长,太厚了.总是看了十几页就看累了,坚持不了多久,想了想还是别勉强自己,决定把它当工具书查看,或者积累足够的C++经验后再翻阅一遍. 目前的打算是 ...
- 论文阅读《Representation learning with contrastive predictive coding 》(CPC)对比预测编码
论文地址:Representation Learning with Contrastive Predictive Coding 目录 一.Background(背景) 二.Motivation and ...
- SFDC 微服务实践之路 2016.12.10 杭州(整理)--转
原文地址:http://mp.weixin.qq.com/s/8cC4Ewt6yPjnxdYxuNZlFQ 微服务是什么? 微服务是一种细粒度(Fine-Grain)的SOA 或许在座的高朋了解过其概 ...
- 2016 Unicode Conference拾遗(一)
在刚结束的2016Unicode Conference上,来自Google的Kat Momoi先生分享了他的topic--Releasecriteria and mobile i18n testing ...
- 阿里巴巴2016 实习生招聘练习题(二)
1.阿里巴巴国际站的股票代码是1688,这个数字具有这样的特性,首先是个首位为1的4位数,其次恰巧有且仅有1个数字出现了两次.类似的数字还有:1861,1668等.这样的数字一共有()个. 答案:43 ...
- leetcode585. 2016年的投资(SQL)
写一个查询语句,将 2016 年 (TIV_2016) 所有成功投资的金额加起来,保留 2 位小数. 对于一个投保人,他在 2016 年成功投资的条件是: 他在 2015 年的投保额 (TIV_201 ...
最新文章
- SAP QM初阶之检验批系统状态中的CTCM该如何消除?
- 该怎样才能将PDF转换成HTML
- Py之cairocffi:cairocffi的简介、安装、使用方法之详细攻略
- vlan间ACL和VACL的区别
- Insider Dev Tour 2019 全球巡演 苏州站
- no crontab for root 问题解决方法
- 【Flink】Flink 源码之OperatorChain
- MyEclipse配置TomCat环境(图文详解)
- 机器人机构学基础(朱大昌)第二章部分习题答案
- Android apk签名详解——AS签名、获取签名信息、系统签名、命令行签名
- 【深度】美俄机器人集群军事作战应用研究现状!三大关键技术体系分析
- PHPExcel出现 Formula Error的解决方案
- chrome导入\导出登录密码
- 淘宝 模拟 登录 总结 【QQ 346767073 】
- 卸载k8s和docker
- Android GLSurfaceView详解
- 【已解决】Error: `brew cask` is no longer a `brew` command. Use `brew <command> --cask` instead.
- php实现自动计算器,PHP实现简易计算器功能
- 树莓派魔镜——树莓派无显示器安装系统并连接vnc
- oracle视图分页查询,视图以及oracle分页,练习
热门文章
- ml-agents项目实践(一)
- 和家亲平台——4G智能设备接入Andlink协议
- 趣味数学:赚了多少和两只火鸡
- ai钢笔工具怎么描线_AI钢笔如何绘制生动轮廓线(在AI软件中,如何用钢笔工具绘制出有生动轮廓线的图形?)...
- 2021年登高架设新版试题及登高架设考试平台
- STM32 Systick实现us和ms定时的两种方式
- 资产重大变更未发现,安全负责人需要担责吗?
- SIMcom嵌入式Linux平台通用配置
- mysql_upgrade 升级_MySQL 8.0.16 告别mysql_upgrade升级方式
- 增大肌肉块-14大金律