目录
1.特殊正方形:
2.走楼梯2:
3.走路:
4.简单分数统计:
5.Alice的德州扑克:
6.订单编号:
7.饿饿 饭饭:
8.任务分配:
题目
输入n,输出n行n列的由+和.组成的正方形,其中最外面一圈全是+,第二圈全是.,…,对于第i圈,如果i是奇数,那么全是+,否则全是.。
输入格式
一行,一个整数n。
输出格式
n行,为满足题目要求的正方形。注意不要有行末空格。
样例输入
10
样例输出
++++++++++
+........+
+.++++++.+
+.+....+.+
+.+.++.+.+
+.+.++.+.+
+.+....+.+
+.++++++.+
+........+
++++++++++
数据范围
对于100%的数据,保证2≤n≤100。
本题直接按照题目中的规律进行赋值,将二维字符组赋值为相应的字符即可。
#include
using namespace std;
int main(){
int n;
char a[1005][1005] = {'a'};
cin>>n;
int t= n;
char c;
while(n>=t/2){
if((t-n)%2 == 0) c = '+';
else c = '.';
for(int i=t-n;i
楼梯有 n 阶,上楼可以一步上一阶,也可以一步上二阶。
但你不能连续三步都走两阶,计算走到第n阶共有多少种不同的走法。
输入格式
一行,一个数字,表示n
输出格式
输出走楼梯的方式总数。
本题是典型dp题,但是由于有限制条件:不能连续上3次两级台阶,所以需要对此进行标记约束,通过走2步的次数进行dp
#include
using namespace std;
typedef long long ll;
const int N = 1e6+9;
ll dp[55][5];
int main()
{
int n;
cin>>n;
dp[1][0] = 1;
dp[1][1] = 0;
dp[1][2] = 0;
dp[2][0] = 1;
dp[2][1] = 1;
dp[2][2] = 0;
for(int i = 3;i<=n;i++)
{
dp[i][0] = dp[i-1][0]+dp[i-1][1]+dp[i-1][2];
dp[i][1] = dp[i-2][0];
dp[i][2] = dp[i-2][1];
}
cout<
有一条很长的数轴,一开始你在00的位置。接下来你要走n步,第i步你可以往右走ai或者bi。
问n步之后,00到m的每个位置,能不能走到?
输入格式
第一行,两个整数n,m。
接下来n行,每行两个整数ai,b。
输出格式
一行,一共m+1个数,每个数都是0
或1
表示能否走到,数字之间不用空格隔开。
本题类似01背包问题,直接从后往前确定是否能走到即可
#include
#include
using namespace std;
const int N = 10001000;
int n, m;
bool st[110][N];
int main()
{
cin >> n >> m;
st[0][0] = true;
for ( int i = 1; i <= n; i ++ )
{
int a, b;
cin >> a >> b;
if (a > b) swap(a, b);
for ( int j = m; j >= a; j -- )
{
st[i][j] |= st[i - 1][j - a];
if (j >= b) st[i][j] |= st[i - 1][j - b];
}
}
for ( int i = 0; i <= m; i ++ )
{
if (st[n][i]) cout << "1";
else cout << "0";;;
}
return 0;
}
NN 个好朋友在codeforces上参加一场包含 MM 个题目的比赛, 比赛期间codeforces网站一共有 kk 次提交。
已知每个题目的分数,
但是由于他们只能查到在比赛期间codeforces总共的提交记录(其他用户提交的其他题目记录也包含在内, 即存在不属于该场比赛的题目),
所以想请你编写一个程序算出他们每个人的分数。
输入格式
第一行三个整数 NN, MM, KK 分别表示好朋友的个数, 题目的个数, 和提交的总次数(其中0 接下来 NN 行 第 ii 行输入为第 ii 个人的id, 接下来 MM 行 第 jj 行输入为第 jj 个题目的名称和分数, 接下来 KK 行 第 kk 行输入为第 kk 次提交的提交者id, 题目名称和结果("WA" 或 "AC", 如果"AC"代表通过这个题目, 提交者获得对应分数)。 注: 题目名称和id均为仅包含英文字母和数字的字符串, 题目分数为小于等于 1e61e6 的正整数. 每一行的多个输入之间用空格隔开。 所有输入的字符串长度 lengthlength 满足 0 所有用户id和题目名称不存在重名, 用户AC了某个题之后之后不会再重复提交该题, 好朋友们只会提交属于比赛的题目。 输出格式 输出 NN 行, 第 ii 行输出第 ii 个人的名字和对应分数 (名字和分数用空格隔开)。 简单使用set查找得分即可。 德州扑克是目前世界上最流行的扑克游戏,全世界有众多相关的比赛,例如是 WSOP,WPT,EPT等,也让这款游戏的玩法变得层出不穷,丰富多变。 不要被简单的游戏规则而误导,复杂多变的比赛状况,让这款游戏在高水平的竞技中会变得非常复杂,这也让人们为德州扑克给出了这样一句评价 ”用一刻就能学会,但要用一生才能掌握” 。 为了降低你的编程难度,我们规定: 输入的牌都是来源于同一副扑克牌 输入的牌的点数都是非递减的 所有花色没有大小之分 下面给出各牌型,(从大到小) 皇家同花顺(ROYAL FLUSH):五张顺连的牌(点数连续单调递增),且最大的一张牌是A(Ace),并且五张牌的花色相同 同花顺(STRAIGHT FLUSH):五张顺连的牌(点数连续单调递增),不规定最大的一张牌是A(Ace),并且五张牌的花色相同 四条(FOUR OF A KIND):至少四张牌的点数相同 葫芦(FULL HOUSE):至少三张牌的点数相同,并且除此之外还有两张牌的点数相同 同花(FLUSH):五张牌的花色都相同 顺子(STRAIGHT):五张顺连的牌(点数连续单调递增),不要求五张牌的花色相同 特别注意:由于 Alice 是个谨慎的人,所以比 三条(THREE OF A KIND) (包括三条) 小的牌型 Alice 不在乎他们的大小关系,你只需要告诉 Alice 弃牌就行 输入格式 第二行的第 ii 个数字表示第 ii 张扑克花色。(保证输入的牌的点数是非递减的,且所有输入均合法)。 点数和对应输入的数字: 2−102−10 对应 2 - 10 J(Jack)J(Jack) 对应 11 Q(Queen)Q(Queen) 对应 12 K(King)K(King) 对应 13 A(Ace)A(Ace) 对应 14 花色和对应输入的数字: 黑桃 (Spades) 对应 1 方片 (Diamonds) 对应 2 红桃 (Hearts) 对应 3 梅花 (Clubs) 对应 4 输出格式 如果最大是皇家同花顺输出 "ROYAL FLUSH" 如果最大是同花顺输出 "STRAIGHT FLUSH" 如果最大是四条输出 "FOUR OF A KIND" 如果最大是葫芦输出 "FULL HOUSE" 如果最大是同花输出 "FLUSH" 如果最大是顺子输出 "STRAIGHT" 如果最大的牌型小于等于三条输出"FOLD",劝 Alice 弃牌 输出不包括引号 按照题意进行模拟即可,根据题目条件对应大小。 小缘开了一家公司,生意很好,每天都会收到很多订单,自动交易系统会自动给这些订单生成没有重复的订单编号。但是有一天,系统出现了未知的错误,导致当天的订单编号可能有重复的,这可把小缘急坏了。你可以帮助小缘按照规则给这些订单重新编号吗? 按照时间先后顺序给出 NN 个正整数作为原订单编号,你需要按照规则依次赋予这些订单新的编号,对于任意一个订单,要找到大于等于其原订单编号且未被使用过的(没有被之前的订单作为新的订单编号)的最小整数,作为它的新订单编号。 例如: 原订单编号依次为1 2 3 1,则新订单编号应该为1 2 3 4 (前3个订单的原订单编号都没有使用过,所以用其原订单编号即可,对于第四个订单,原订单编号为1,而1, 2, 3都已经被使用过,所以新订单编号为4)。 输入格式 第二行输入 NN 个数 aiai (1≤ai≤109)(1≤ai≤109) 作为原订单编号。 输出格式 本题数据卡的比较死,标注答案使用vector加二分进行计算。 讲解可以参照视频:【算法Camp】【每日一题】Namomo Spring Camp 2022 Div2 第6天题解(数据结构、set)_哔哩哔哩_bilibili 有nn个同学正在排队打饭,第ii个同学排在从前往后第ii个位置。但是这天食堂内只有一个食堂阿姨,为了使同学们都能尽快的吃上饭,每一个同学在打完一份饭之后就会排在队伍的末尾先吃着打到的饭,我们知道第ii个同学的饭量为aiai,也就是说第ii个同学要吃aiai份饭才能吃饱,当一位同学吃饱后,他就会立刻离开食堂,不会排在队伍的末尾。食堂阿姨想知道,在打完k份饭之后,队伍的样子是怎样的,但是食堂阿姨数学不太好,想让你帮忙想想办法。 输入格式 第二行给出nn个整数a1,a2,......ana1,a2,......an。 输出格式 否则按照队伍顺序输出每一个同学的编号 由于打的次数非常多,直接考虑需要打几轮,使用二分法。 最后注意要按顺序输出,需要调整一下最后几个人位置。 你有nn个任务,其中第ii个任务,在sisi开始,eiei时刻结束,如果做这个任务,你能获得wiwi的收益。 但是你在一个时刻只能做一个任务,问选择哪些任务,能让你的收益尽量大。 注意:你在上一个任务结束后马上开始下一个任务是可以的。 输入格式 接下来nn行,每行三个整数si,ei,wisi,ei,wi。 输出格式 样例输入 典型贪心算法,直接寻找最优解就可以。
#include
5.Alice的德州扑克:
现在我们并不在乎游戏规则是什么,因为 Alice 是一个德州扑克高手,他对于德州扑克的规则烂熟于心,不过他每次都记不得牌型的大小关系,他知道你是一个编程高手,所以他想让你帮他写一个程序:输入五张牌的大小和花色,输出这五张牌能组成的最大牌型.你能帮帮他吗?
输入两行,每行五个数字,第一行的第 ii 个字符表示第 ii 张扑克的点数,
输出这五张牌能组成的最大牌型。
#include
6.订单编号:
第一行输入一个整数 NN (1≤N≤5×105)(1≤N≤5×105)。
输出一行,包含 NN 个整数为新的订单编号。
#include
7.饿饿 饭饭:
第一行给出两个整数nn,kk。
如果食堂阿姨打饭数少于k,请输出"-1"。
#include
8.任务分配:
第一行一个整数nn。
一个数,表示答案。
3
1 3 100
2 4 199
3 5 100
样例输出
200
数据规模
对于所有数据,保证1≤n≤103,1≤si
#include