关注
// 我的第1题AC代码
#include <iostream>
#include <vector>
using namespace std;
int M, N, P = 0, Q = 0;
void search(vector<vector<int>> &G, int i, int j, int &Max) {
if (i < 0 || i >= M || j < 0 || j >= N)
return;
if (G[i][j] == 1) {
G[i][j] = 0; Max += 1;
search(G, i - 1, j, Max); search(G, i + 1, j, Max);
search(G, i, j - 1, Max); search(G, i, j + 1, Max);
search(G, i - 1, j + 1, Max); search(G, i + 1, j - 1, Max);
search(G, i - 1, j - 1, Max); search(G, i + 1, j + 1, Max);
}
}
int main()
{
scanf("%d,%d", &M, &N);
vector<vector<int>> G(M, vector<int>(N));
for (int i = 0; i < M; ++i)
for (int j = 0; j < N; ++j)
scanf("%d,", &G[i][j]);
for (int i = 0; i < M; ++i) {
for (int j = 0; j < N; ++j) {
if (G[i][j] == 1) {
int Max = 0; P++;
search(G, i, j, Max);
if (Max > Q) Q = Max;
}
}
}
cout << P << "," << Q;
return 0;
}
// 我的第2题AC代码
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct region {
int l, r;
};
region str2region(const string &s) {
struct region res;
int a = s.find(',');
res.l = stoi(s.substr(0, a));
res.r = stoi(s.substr(a + 1, s.length() - 1));
return res;
}
struct compare {
bool operator() (region a, region b) {
if (a.l != b.l)
return a.l < b.l;
else
return a.r < b.r;
}
};
int main() {
int m, a;
string s, r;
vector<region> regions;
cin >> m;
for (int i = 0; i < m; ++i) {
cin >> s;
while ((a = s.find(';')) != -1) {
r = s.substr(0, a);
s = s.substr(a + 1, s.length() - 1);
regions.push_back(str2region(r));
}
regions.push_back(str2region(s));
}
sort(regions.begin(), regions.end(), compare());
for (int i = 0; i < regions.size() - 1; ++i) {
if (regions[i].r >= regions[i + 1].l) {
regions[i].r = regions[i + 1].r;
regions.erase(regions.begin() + i + 1);
--i;
}
}
int i;
for (i = 0; i < regions.size() - 1; ++i)
cout << regions[i].l << ',' << regions[i].r << ';';
cout << regions[i].l << ',' << regions[i].r << endl;
return 0;
}
// 我的第5题AC代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct Anchor {
int s, e;
};
struct compare {
bool operator() (Anchor a, Anchor b) {
if (a.e != b.e)
return a.e < b.e;
else
return a.s < b.s;
}
};
int main() {
int N, M, res = 0, curr = 0;
cin >> N >> M;
Anchor anchor;
vector<Anchor> anchors;
for (int i = 0; i < N; ++i) {
cin >> anchor.s >> anchor.e;
if (anchor.e < anchor.s && anchor.e == 0)
anchor.e += N;
if (anchor.e >= anchor.s)
anchors.push_back(anchor);
}
sort(anchors.begin(), anchors.end(), compare());
for (int i = 0; i < anchors.size(); ++i) {
if (curr <= anchors[i].s) {
res++;
curr = anchors[i].e;
}
}
cout << res << endl;
return 0;
}
// 第3题20% 哎 - -~!浪费了太多时间
/* 我的思路是转换成0-1背包问题的,先取若干张卡,然后用canDivide判断这些卡片
* 能不能被分为和相等的两组,我的直觉感觉我的canDivide有问题,时间紧没有去推导
* 然后canDivide传入的参数已经从大到小排列了的。
*/
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct Card {
int person;
int group;
};
struct compare {
bool operator() (Card a, Card b) {
if (a.person != b.person)
return a.person > b.person;
else
return a.group > b.group;
}
};
bool canDivide(const vector<Card> &cards) {
int res = 0, i;
for (i = 0; i < cards.size(); i++) {
if (res > 0)
res -= cards[i].person;
else
res += cards[i].person;
}
return res == 0;
}
int sumCard(const vector<struct Card> &cards) {
int i;
int sum = 0;
for (int i = 0; i < cards.size(); i++)
sum += cards[i].group;
return sum;
}
int bag(const vector<Card> &cards, vector<Card> curr, int i) {
if (i == cards.size()) {
if (canDivide(curr))
return sumCard(curr);
else
return 0;
}
else {
int a = bag(cards, curr, i + 1);
curr.push_back(cards[i]);
int b = bag(cards, curr, i + 1);
return a > b ? a : b;
}
}
int main() {
int n;
vector<Card> cards, curr;
Card card;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> card.person >> card.group;
cards.push_back(card);
}
sort(cards.begin(), cards.end(), compare());
cout << bag(cards, curr, 0) << endl;
return 0;
}
// 第3题最后没时间了,投机取巧拿了40%
#include <cstdio>
using namespace std;
int main() {
int n;
scanf("%d", &n);
int sum = 0;
for(int i = 0; i < n; ++i) {
int a, b;
scanf("%d %d", &a, &b);
sum += b;
}
printf("%d", sum);
}
// 第4题60% 哎 - -~! 不想说啥了,***难受~! 代码就不发了,惭愧~!!!
查看原帖
点赞 评论
相关推荐
10-19 15:00
文华学院 嵌入式工程师 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
正在热议
# 拼多多求职进展汇总 #
230202次浏览 2025人参与
# 哪些公司校招卡第一学历 #
32310次浏览 100人参与
# 阿里云管培生offer #
57066次浏览 1735人参与
# 25届秋招总结 #
390639次浏览 3897人参与
# ai智能作图 #
18435次浏览 237人参与
# 地方国企笔面经互助 #
6370次浏览 16人参与
# 北方华创开奖 #
65518次浏览 545人参与
# 硬件兄弟们 甩出你的华为奖状 #
77550次浏览 624人参与
# 实习,投递多份简历没人回复怎么办 #
2433503次浏览 34689人参与
# 在职场上,你最讨厌什么样的同事 #
5485次浏览 79人参与
# 实习与准备秋招该如何平衡 #
721802次浏览 8542人参与
# 我的实习求职记录 #
6115399次浏览 83915人参与
# 工作中,你有没有遇到非常爱骂人的领导? #
4601次浏览 47人参与
# 如果再来一次,你还会选择这个工作吗? #
107766次浏览 1083人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
9604次浏览 200人参与
# 腾讯求职进展汇总 #
206975次浏览 1693人参与
# 实习想申请秋招offer,能不能argue薪资 #
35617次浏览 308人参与
# 牛客租房专区 #
4365次浏览 120人参与
# 中兴求职进展汇总 #
467632次浏览 2439人参与
# 华为工作体验 #
109892次浏览 855人参与
# 如果有时光机,你最想去到哪个年纪? #
27422次浏览 569人参与
# 实习中的菜狗时刻 #
280448次浏览 2762人参与