A

题目大意:

给一个字符串s,让每一个字符都向后移动一位,且原来的后一位会消失不见,输出移动完后的字符串。

这道题直接模拟就好了,原来的第一位变为0,第二位变为原来的第一位,第三位变为原来的第二位,第四位变为原来的第三位。(由于字符串只有4个字符,所以用string来定义,和用int来定义没有太大区别)

代码实现:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string S;//int a,b,c,d;
int main(){cin>>S;//cin>>a>>b>>c>>d;cout<<"0"<<S[0]<<S[1]<<S[2];//cout<<"0"<<a<<b<<c;return 0;
}

B

题目大意:

有n个人,给你他们的名和姓,求有没有一个人的名和姓在另一个人的名和姓中出现过,如果出现过,输出No,否则输出Yes。

注意这里不是我们“正常的”人,这里的人或许名会和姓一致。直接用STL里的map,记录出现的名字的次数,有三种情况:

1.名 ! =姓,名>1,姓>1,输出No;

2.名= =姓,名>2,姓>2,输出No;

3.其余情况输出Yes。

(代码中s[i]代表姓,p[i]代表名,mp[s[i]]代表姓出现的次数,mp[p[i]]代表名出现的次数)

代码实现:

#include<iostream>//cin,cout
#include<cstdio>//scanf,printf
#include<cstring>//ring类
#include<cmath>//数学库
#include<cstdlib>//freopen,system等
#include<algorithm>//算法库
#include<stack>//stl栈
#include<string>//ring类
#include<map>//hash映射
#include<queue>//优先队列
#include<iomanip>//输出控制
#include<vector>//容器系列
#include<set>//不常用
#include<deque>//双向容器
#include<bitset>//二进制
using namespace std;
string s[105];
string p[105];
map<string,int> mp;
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>s[i]>>p[i];mp[s[i]]++;mp[p[i]]++;}for(int i=1;i<=n;i++){if(s[i]==p[i]&&mp[s[i]]>=3){printf("No");}else if(s[i]!=p[i]&&mp[s[i]]>=2&&mp[p[i]]>=2){printf("No");return 0;}}printf("Yes");return 0;
}

C

题目大意:

有一个N ,让输出 S_n,已知S_n=S{n-1} - n - S_{n-1}。

数据范围只有 16,就考虑 直接O(2^17) 预处理,然后直接输出。

(vector是个好东西)

代码实现:

#include<iostream>//cin,cout
#include<cstdio>//scanf,printf
#include<cstring>//ring类
#include<cmath>//数学库
#include<cstdlib>//freopen,system等
#include<algorithm>//算法库
#include<stack>//stl栈
#include<string>//ring类
#include<map>//hash映射
#include<queue>//优先队列
#include<iomanip>//输出控制
#include<vector>//容器系列
#include<set>//不常用
#include<deque>//双向容器
#include<bitset>//二进制
using namespace std;
vector<int> a[18];
int main(){int n;cin>>n;a[1].push_back(1);for(int i=2;i<=16;i++){a[i]=a[i-1];a[i].push_back(i);for(int j=0;j<a[i-1].size();j++){a[i].push_back(a[i-1][j]);}}for(int i=0;i<a[n].size();i++){cout<<a[n][i]<<' ';} return 0;
}

D

题目大意:

有一个水平的圆柱体,给定 Q 个查询,按照给定的顺序处理。

查询共有两种类型:

1 x c:将 c 个球插入圆柱的右端,每个球上都写着数字 x。

2 c:取出圆柱最左边的c个球,打印已取出的球上写的数字之和,球永远不会改变它们的顺序。

这道题可以开一个结构体记录插入的个数和数上数字的大小,查询时弹出这个结构体。

代码实现:

#include<iostream>//cin,cout
#include<cstdio>//scanf,printf
#include<cstring>//ring类
#include<cmath>//数学库
#include<cstdlib>//freopen,system等
#include<algorithm>//算法库
#include<stack>//stl栈
#include<string>//ring类
#include<map>//hash映射
#include<queue>//优先队列
#include<iomanip>//输出控制
#include<vector>//容器系列
#include<set>//不常用
#include<deque>//双向容器
#include<bitset>//二进制
#include<fstream>
using namespace std;
struct edge{long long x,y;
};
queue<edge>q;
int main(){long long a;scanf("%lld",&a);for(long long i=1;i<=a;i++){long long b;scanf("%lld",&b);if(b==1){long long m,n;scanf("%lld%lld",&m,&n);q.push(edge{n,m});}else{long long c;long long ans=0;scanf("%lld",&c);while(!q.empty()&&c){edge u=q.front();long long d=u.x;if(c<=d){ans+=c*u.y;q.front().x-=c;c=0;}else{ans+=d*u.y;c-=d;q.pop();}}printf("%lld\n",ans);}}return 0;
}

ABC247ABCD相关推荐

最新文章

  1. 京东金融科技学堂开班,AI 在金融云上有了新成果
  2. java ide编辑器 idea 配置 与 插件
  3. 使用OpenVAS 9进行漏洞扫描
  4. 【选摘】为什么说SAP中没有在制品的盘点
  5. 【深度学习】如何配置一台深度学习工作站?
  6. C++类的使用(三)—— 封装
  7. python3.4 pip必须升级python3.5_在ubuntu上将python3.4升级到python3.6会破坏pip
  8. 一个秒杀系统的设计思考
  9. 电脑系统linux普通用户,Linux操作系统用户管理
  10. 谷歌承诺未来三年将支付10亿美元新闻费用
  11. 新浪微博php7升级实践,PHP7线上system time飙高问题
  12. iOS 浅谈:深.浅拷贝与copy.strong
  13. python2和3切换_python2和python3切换
  14. 【Excel】多条件查找
  15. 阿佐数据分析python小抄【pandas基础数据处理】
  16. 积分商城使用教程之优惠券
  17. 2020年数学建模亚太赛赛后分享总结
  18. uvm中uvm_event, uvm_event_pool的用法
  19. 过去 10 年,阿里在开源圈做了什么?
  20. 1833. 雪糕的最大数量-每日一题

热门文章

  1. java软件开发培训班靠谱吗?好找工作吗?
  2. 远程桌面连接软件 Remote Desktop Manager for Mac
  3. NC57,NC63-NC二开经验总结
  4. Mac charles 配置ssl
  5. 黄金再次失守千八关口 对冲基金空头寸增加
  6. SpringBoot - 构建监控体系01_使用 Actuator 组件实现及扩展系统监控
  7. [雪峰磁针石博客]可爱的python测试开发库
  8. 移动10大跨平台工具
  9. 菜孔孔学python-Day03 冲鸭
  10. 获取网络连接名称“本地连接”的两种方法