Week13
特殊正方形
输入n,输出n行n列的由+和.组成的正方形,其中最外面一圈全是+,第二圈全是.,…,对于第i圈,如果i是奇数,那么全是+,否则全是.。
输入格式
一行,一个整数n。
输出格式
n 行,为满足题目要求的正方形。注意不要有行末空格。
样例输入
10
样例输出
++++++++++
+........+
+.++++++.+
+.+....+.+
+.+.++.+.+
+.+.++.+.+
+.+....+.+
+.++++++.+
+........+
++++++++++
数据范围
对于100%的数据,保证2≤ n ≤100。
代码
#include
using namespace std;int main(){int n;char ans[105][105];cin >> n;for(int i = 0; i < n; ++i){ //循环n层if(i % 2 == 0){ //加号for(int j = i; j < (n - i); ++j){ //横ans[i][j] = '+';ans[n - i - 1][j] = '+';}for(int j = i; j < (n - i); ++j){ans[j][i] = '+';ans[j][n - i - 1] = '+';}}else{ //点for(int j = i; j < (n - i); ++j){ans[i][j] = '.';ans[n - i - 1][j] = '.';}for(int j = i; j < (n - i); ++j){ans[j][i] = '.';ans[j][n - i - 1] = '.';}}}for(int i = 0; i < n; ++i){for(int j = 0; j < n; ++j){cout << ans[i][j];}if(i != ( n - 1))cout << endl;}//system("pause");return 0;
}
走楼梯2
楼梯有 n 阶,上楼可以一步上一阶,也可以一步上二阶。
但你不能连续三步都走两阶,计算走到第n阶共有多少种不同的走法。
输入格式
一行,一个数字,表示n。
输出格式
输出走楼梯的方式总数。
样例输入
6
样例输出
12
数据规模
对于100%100%的数据,保证n≤50。
代码
#include
using namespace std;int main(){int n;cin >> n;// 分三种情况:// 1. 一步登上第 i 级台阶// 2. 两步登上第 i 级台阶// 3. 连续两次两步登上第 i 级台阶vector> stair(n + 1, vector(3));stair[0][0] = 1;for(int i = 1; i <= n; ++i){stair[i][0] = stair[i - 1][0] + stair[i - 1][1] + stair[i - 1][2]; if(i < 2)continue;stair[i][1] = stair[i - 2][0];stair[i][2] = stair[i - 2][1]; }cout << stair[n][0] + stair[n][1] + stair[n][2] << endl;system("Pause");return 0;
}
走路
有一条很长的数轴,一开始你在00的位置。接下来你要走n步,第i步你可以往右走ai或者bi。
问n步之后,0到m的每个位置,能不能走到?
输入格式
第一行,两个整数n,m。
接下来n行,每行两个整数ai,bi,。
输出格式
一行,一共m+1个数,每个数都是0或1表示能否走到,数字之间不用空格隔开。
输入样例
3 10
1 2
2 6
3 3
输出样例
00000011001
数据规模
对于所有数据,保证1≤n≤100,1≤m≤105,1≤ai,bi≤100,1≤ m ≤105,1≤ai,bi≤1000
代码
#include
using namespace std;int dp[105][100005]; //表示第 i 步是否可以走到的 j 位置
int step[100005][2]; //第 i 步int main(){int n, m;cin >> n >> m;for(int i = 1; i <= n; ++i){cin >> step[i][0] >> step[i][1];}memset(dp, 0, sizeof(dp));dp[0][0] = 1; //第 0 个位置肯定可达for(int i = 1; i <= n; ++i){for(int j = 0; j <= m; ++j){if(dp[i - 1][j]){if(j + step[i][0] <= m)dp[i][j + step[i][0]] = 1;if(j + step[i][1] <= m)dp[i][j + step[i][1]] = 1;}}}for(int i = 0; i <= m; ++i)cout << dp[n][i];return 0;
}
简单分数统计
N� 个好朋友在codeforces上参加一场包含 M�个题目的比赛, 比赛期间codeforces网站一共有 k 次提交。
已知每个题目的分数,
但是由于他们只能查到在比赛期间codeforces总共的提交记录(其他用户提交的其他题目记录也包含在内, 即存在不属于该场比赛的题目),
所以想请你编写一个程序算出他们每个人的分数。
输入格式
第一行三个整数 N, M, K 分别表示好朋友的个数, 题目的个数, 和提交的总次数(其中0 接下来 N 行 第 i 行输入为第 i 个人的id, 接下来 M 行 第 j 行输入为第 j 个题目的名称和分数, 接下来 K 行 第 k 行输入为第 k 次提交的提交者id, 题目名称和结果(“WA” 或 “AC”, 如果"AC"代表通过这个题目, 提交者获得对应分数)。 注: 题目名称和id均为仅包含英文字母和数字的字符串, 题目分数为小于等于 1e6 的正整数. 每一行的多个输入之间用空格隔开。 所有输入的字符串长度 lengtℎ 满足 0 所有用户id和题目名称不存在重名, 用户AC了某个题之后之后不会再重复提交该题, 好朋友们只会提交属于比赛的题目。 输出 N 行, 第 i 行输出第 i 个人的名字和对应分数 (名字和分数用空格隔开)。 beza 过了 metebronca和geometry 拿到 300300 分。 GabrielPessos 没有过题, 所以是 00 分。 还有一些其他选手提交的其他题目忽略不计 德州扑克是目前世界上最流行的扑克游戏,全世界有众多相关的比赛,例如是 WSOP,WPT,EPT等,也让这款游戏的玩法变得层出不穷,丰富多变。 不要被简单的游戏规则而误导,复杂多变的比赛状况,让这款游戏在高水平的竞技中会变得非常复杂,这也让人们为德州扑克给出了这样一句评价 ”用一刻就能学会,但要用一生才能掌握” 。 现在我们并不在乎游戏规则是什么,因为 Alice 是一个德州扑克高手,他对于德州扑克的规则烂熟于心,不过他每次都记不得牌型的大小关系,他知道你是一个编程高手,所以他想让你帮他写一个程序:输入五张牌的大小和花色,输出这五张牌能组成的最大牌型.你能帮帮他吗? 为了降低你的编程难度,我们规定: 下面给出各牌型,(从大到小) 输入两行,每行五个数字,第一行的第 i 个字符表示第 i 张扑克的点数, 第二行的第 i 个数字表示第 i 张扑克花色。(保证输入的牌的点数是非递减的,且所有输入均合法)。 点数和对应输入的数字: 花色和对应输入的数字: 输出这五张牌能组成的最大牌型。 小缘开了一家公司,生意很好,每天都会收到很多订单,自动交易系统会自动给这些订单生成没有重复的订单编号。但是有一天,系统出现了未知的错误,导致当天的订单编号可能有重复的,这可把小缘急坏了。你可以帮助小缘按照规则给这些订单重新编号吗? 按照时间先后顺序给出 N 个正整数作为原订单编号,你需要按照规则依次赋予这些订单新的编号,对于任意一个订单,要找到大于等于其原订单编号且未被使用过的(没有被之前的订单作为新的订单编号)的最小整数,作为它的新订单编号。 例如: 原订单编号依次为1 2 3 1,则新订单编号应该为1 2 3 4 (前3个订单的原订单编号都没有使用过,所以用其原订单编号即可,对于第四个订单,原订单编号为1,而1, 2, 3都已经被使用过,所以新订单编号为4)。 第一行输入一个整数 N (1≤N≤5×105)(1≤5×105)。 第二行输入 N 个数 ai(1≤ai≤109)(1≤109) 作为原订单编号。 输出一行,包含 N 个整数为新的订单编号。 有n个同学正在排队打饭,第i个同学排在从前往后第i个位置。但是这天食堂内只有一个食堂阿姨,为了使同学们都能尽快的吃上饭,每一个同学在打完一份饭之后就会排在队伍的末尾先吃着打到的饭,我们知道第i个同学的饭量为ai,也就是说第i个同学要吃ai份饭才能吃饱,当一位同学吃饱后,他就会立刻离开食堂,不会排在队伍的末尾。食堂阿姨想知道,在打完k份饭之后,队伍的样子是怎样的,但是食堂阿姨数学不太好,想让你帮忙想想办法。 第一行给出两个整数n,k。 第二行给出n个整数a1,a2,…an1,2,…。 如果食堂阿姨打饭数少于k,请输出"-1"。 否则按照队伍顺序输出每一个同学的编号。 数据保证1≤n≤105, 0≤k≤1014, 1≤ai≤109。 你有n个任务,其中第i个任务,在si开始,ei时刻结束,如果做这个任务,你能获得wi的收益。 但是你在一个时刻只能做一个任务,问选择哪些任务,能让你的收益尽量大。 注意:你在上一个任务结束后马上开始下一个任务是可以的。 第一行一个整数n。 接下来n行,每行三个整数si,ei,wi�。 一个数,表示答案。 对于所有数据,保证1≤n≤103,1≤si 有一个n×n的网格,有些格子是可以通行的,有些格子是障碍。 一开始你在左上角的位置,你可以每一步往下或者往右走,问有多少种走到右下角的方案。 由于答案很大,输出对109+7109+7取模的结果。 第一行一个正整数n。 接下来n行,每行n个正整数,11表示可以通行,00表示不能通行。 一个整数,表示答案。 对于100%100%的数据,保证2≤n≤100,左上角右下角都是可以通行的。输出格式
样例输入
2 2 4
GabrielPessoa
beza
metebronca 100
geometry 200
beza metebronca AC
ffern numbertheory AC
GabrielPessoa geometry WA
beza geometry AC
样例输出
GabrielPessoa 0
beza 300
样例解释
代码
#includeAlice的德州扑克
输入格式
输出格式
样例输入1
10 11 12 13 14
1 1 1 1 1
样例输出1
ROYAL FLUSH
样例输入2
10 11 12 13 14
1 2 1 3 4
样例输出2
STRAIGHT
样例输入3
6 6 6 7 7
1 2 3 1 3
样例输出3
FULL HOUSE
样例输入4
3 3 6 6 9
1 2 1 2 1
样例输出4
FOLD
代码
#include订单编号
输入格式
输出格式
样例输入1
6
2 3 4 1 1 1
样例输出1
2 3 4 1 5 6
样例输入2
3
1000000000 1000000000 1000000000
样例输出2
1000000000 1000000001 1000000002
样例输入3
6
4 5 1 2 1 1
样例输出3
4 5 1 2 3 6
代码
#include饿饿 饭饭
输入格式
输出格式
样例输入1
3 3
1 2 1
样例输出1
2
样例输入2
4 10
3 3 2 1
样例输出2
-1
样例输入3
7 10
1 3 3 1 2 3 1
样例输出3
6 2 3
数据规模
代码
#include任务分配
输入格式
输出格式
样例输入
3
1 3 100
2 4 199
3 5 100
样例输出
200
数据规模
代码
#include路径计数
输入格式
输出格式
样例输入
3
1 1 1
1 0 1
1 1 1
样例输出
2
数据规模
代码
#include本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
