This commit is contained in:
Bluemangoo 2025-01-14 20:19:17 +08:00
commit f606210553
Signed by: Bluemangoo
GPG Key ID: F2F7E46880A1C4CF
17 changed files with 426 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.o

7
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,7 @@
{
"files.associations": {
".env": "env",
"ostream": "cpp",
"iosfwd": "cpp"
}
}

28
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,28 @@
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 生成活动文件",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.o"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}

29
3834/0/0.cpp Normal file
View File

@ -0,0 +1,29 @@
#include <iostream>
using namespace std;
int count(int step, int l, int r, int a[])
{
if (step == 0)
{
if (l + a[0] == r || r + a[0] == l)
{
return 1;
}
return 0;
}
return count(step - 1, l + a[step], r, a) + count(step - 1, l, r + a[step], a);
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
cout << count(n - 1, 0, 0, a) / 2;
}

29
3834/0/0.txt Normal file
View File

@ -0,0 +1,29 @@
对抗赛(compete)
内存限制128 MB
时间限制5.000 S
评测方式:文本比较
命题人jixun2019
提交279
解决182
题目描述
程序设计对抗赛设有 N0<N≤50 的整数)个价值互不相同的奖品,每个奖品的价值分 别为 S1S2S3……Sn均为不超过 100 的正整数)。现将它们分给甲乙两队,为了使得甲 乙两队得到相同价值的奖品,必须将这 N 个奖品分成总价值相等的两组。
编程要求:对给定 N 及 N 个奖品的价值,求出将这 N 个奖品分成价值相等的两组,共有 多少种分法?
例如N = 5S1S2S3……Sn 分别为 13589
则可分为{139}与{58}
仅有 1 种分法;
例如N = 7S1S2S3……Sn 分别为 1234567
则可分为:
{1,6,7}与{2,3,4,5}
{2,5,7}与{1,3,4,6}
{3,4,7}与{1,2,5,6}
{1,2,4,7}与{3,5,6}
有 4 种分法。
输入
输入文件中包含 N 及 S1S2S3……Sn。每两个相邻的数据之间有一个空格隔开
输出
输出文件包含一个整数,表示多少种分法的答案,数据若无解,则输出 0。
样例输入 复制
7
1 2 3 4 5 6 7
样例输出 复制
4

16
3834/1/1.cpp Normal file
View File

@ -0,0 +1,16 @@
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int d, g;
cin >> d >> g;
int bp_life[g]{}, bp_height[g]{}, sum=0;
for (int i = 0; i < g; i++)
{
int t, f, h;
sum += f;
}
}

33
3834/1/1.txt Normal file
View File

@ -0,0 +1,33 @@
垃圾陷阱(well)
内存限制128 MB
时间限制5.000 S
评测方式:文本比较
命题人jixun2019
提交8
解决7
题目描述
卡门——农夫约翰极其珍视的一条Holsteins奶牛——已经落了到“垃圾井”中。“垃圾井”是农夫们扔垃圾的地方它的深度为D (2 <= D <= 100)英尺。
卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。另外,卡门可以通过吃一些垃圾来维持自己的生命。
每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间。
假设卡门预先知道了每个垃圾扔下的时间t(0<t<=1000)以及每个垃圾堆放的高度h(1<=h<=25)和吃进该垃圾能维持生命的时间f(1<=f<=30)要求出卡门最早能逃出井外的时间假设卡门当前体内有足够持续10小时的能量如果卡门10小时内没有进食卡门就将饿死。
输入
第一行为2个整数D 和 G (1 <= G <= 100)G为被投入井的垃圾的数量。
第二到第G+1行每行包括3个整数T(0<T<=1000)表示垃圾被投进井中的时间F(1<=F<= 30),表示该垃圾能维持卡门生命的时间;和 H (1<= H<=25),该垃圾能垫高的高度。
输出
如果卡门可以爬出陷阱,输出一个整数表示最早什么时候可以爬出;否则输出卡门最长可以存活多长时间。
样例输入 复制
20 4
5 4 9
9 3 2
12 6 10
13 1 1
样例输出 复制
13
提示
卡门堆放她收到的第一个垃圾height=9
卡门吃掉她收到的第二个垃圾使她的生命从10小时延伸到13小时
卡门堆放第3个垃圾height=19
卡门堆放第4个垃圾height=20。

35
3834/2/2.cpp Normal file
View File

@ -0,0 +1,35 @@
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m;
cin >> n >> m;
int commit[n]{};
bool ac[n]{};
int ans_ac = 0, ans_time = 0;
for (int i = 0; i < m; i++)
{
int id;
string result;
cin >> id >> result;
if (ac[id - 1])
{
continue;
}
if (result == "AC")
{
ac[id - 1] = true;
ans_ac++;
ans_time += commit[id - 1];
}
else
{
commit[id - 1] += 1;
}
}
cout << ans_ac << " " << ans_time << endl;
}

41
3834/2/2.txt Normal file
View File

@ -0,0 +1,41 @@
https://buctcoder.com/problem.php?cid=3834
ACM 罚时
内存限制128 MB
时间限制5.000 S
评测方式:文本比较
命题人admin
提交898
解决511
题目描述
ACM国际大学生程序设计竞赛是由国际计算机学会主办的一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。参赛队伍最多由三名参赛队员组成竞赛中一般命题10-13题试题描述为英文比赛时间为5个小时前4个小时可以看到实时排名最后一小时封榜无法看到排名。竞赛可以使用C、C++、Python和Java。重点考察选手的算法和程序设计能力选手可携带任何非电子类资料包括书籍和打印出来的程序等。 返回结果 AC (Accepted)表示答案正确WA (Wrong Anwser)表示答案错误。
另外ACM比赛有个“罚时”(Penalty)的概念,首先做的题多的队伍排名更高,做出 题目数量相同的队伍,由罚时来判断。对于一道题目,在这道题目得到 AC 之前,每一次 WA 都会计入一次“罚时”。如果该题最终也没有 AC 则该题不会产生“罚时”
现在,给出一个队伍的提交记录。里面包含了每次提交的“题目序号”以及“评测结果”。请你求出这个队伍最终通过了几题,以及得到几次“罚时”。
输入
第一行输入两个整数n, m代表比赛共
题,队伍共提交
次。(
)
接下来
行,每行一个整数
,以及一个字符串
,代表第
次提交了第
题,状态是
.
(
,
{"AC","WA"})
输出
输出两个整数,分别代表通过的题目数量以及得到的“罚时”数量。
样例输入 复制
2 5
1 WA
1 AC
2 WA
2 AC
2 WA
样例输出 复制
2 2

22
3834/3/3.cpp Normal file
View File

@ -0,0 +1,22 @@
#include<iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int h, n;
cin >> h >> n;
for (int i = 0; i < n; i++)
{
int damage;
cin >> damage;
h -= damage;
if (h <= 0)
{
cout << "Yes";
return 0;
}
}
cout << "No";
}

33
3834/3/3.txt Normal file
View File

@ -0,0 +1,33 @@
打怪兽version-2
内存限制128 MB
时间限制5.000 S
评测方式:文本比较
命题人admin
提交777
解决701
题目描述
有一只怪兽的血量为H
你需要在N回合之内杀死它
第i个回合你可以对其造成
点伤害
问是否可以杀死怪兽(其血量小于等于0即为死亡)
可以输出Yes
否则输出No
输入
H N
.......
1 <= H <= 1e9
1 <= N <= 1e5
1 <=
<=1e4
输出
问是否可以杀死怪兽(其血量小于等于0即为死亡)
可以输出Yes
否则输出No
样例输入 复制
10 3
4 5 6
样例输出 复制
Yes

22
3834/4/4.cpp Normal file
View File

@ -0,0 +1,22 @@
#include<iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n;
cin >> n;
if (n/100==7)
{
cout << "Yes";
return 0;
}
n%=100;
if (n/10==7||n%10==7)
{
cout << "Yes";
return 0;
}
cout << "No";
}

19
3834/4/4.txt Normal file
View File

@ -0,0 +1,19 @@
幸运数字
内存限制1024 MB
时间限制5.000 S
评测方式:文本比较
命题人admin
提交828
解决675
题目描述
富哥最近迷上了数字 7如果一个数的某一位是 7那么富哥则认为这个数是他的幸运数字。
给你一个正整数 N,请判断是不是富哥的幸运数字。
输入
N
100 <= N <= 999
输出
如果这个数是那么输出 Yes ,否则输出 No。
样例输入 复制
117
样例输出 复制
Yes

52
3834/5/5.cpp Normal file
View File

@ -0,0 +1,52 @@
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n);
// int index[1005]{};
// for(int i = 0; i < n; i++){
// cout << a[i] << " ";
// }
int cnt = 0;
for (int i1 = 0; i1 < n - 2; i1++)
{
int last = 0;
for (int i2 = i1 + 1; i2 < n - 1; i2++)
{
bool flag = false;
for (int i3 = max(i2 + 1, last); i3 < n; i3++)
{
if (a[i1] + a[i2] <= a[i3])
{
break;
}
if (a[i2] + a[i3] > a[i1] && a[i1] + a[i3] > a[i2])
{
if (!flag)
{
last = i3;
flag = true;
}
cnt++;
}
}
}
}
cout << cnt;
}

26
3834/5/5.txt Normal file
View File

@ -0,0 +1,26 @@
三角形牧场
内存限制128 MB
时间限制3.000 S
评测方式:文本比较
命题人admin
提交580
解决94
题目描述
和所有人一样奶牛喜欢变化。它们正在设想新造型的牧场。奶牛建筑师John想建造围有漂亮白色栅栏的三角形牧场。
他拥有 n 块木板,每块的长度 A_i 都是整数。
他想要选三块木板,使得它们的长度能够构成一个三角形,请问有多少种选择方法呢?
输入
第一行,一个整数,代表 (3 \leq n \leq 2 \times 10^3)
第二行n 个整数,代表(1 \leq A_i \leq 10^3)
输出
输出一个整数,代表方案数
样例输入 复制
5
1 2 3 4 3
样例输出 复制
5
提示
样例解释:共五种方案:
(1,3,3),(2,3,3),(2,3,4)^{有两个},(3,3,4)

13
3834/6/6.cpp Normal file
View File

@ -0,0 +1,13 @@
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
string s;
char c;
cin >> s >> c;
printf("%s", (s.find(c) == string::npos) ? "false" : "true");
}

20
3834/6/6.txt Normal file
View File

@ -0,0 +1,20 @@
定义函数返回布尔值
内存限制128 MB
时间限制2.000 S
评测方式:文本比较
命题人:外部导入
提交2506
解决1849
题目描述
定义一个函数check(n,d),让它返回一个布尔值。如果数字d在正整数n的某位中出现则送回true否则送回false。
例如check(325719,3)==true
输入
一行整数n和数字d。
输出
一行如果数字d在正整数n的某位中出现输出true否则输出false。
样例输入 复制
325719 3
样例输出 复制
true
来源/分类
一本通第六章例题