关注
// 我的第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% 哎 - -~! 不想说啥了,***难受~! 代码就不发了,惭愧~!!!
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
- 1... 本科四段大厂实习,暑期五个offer,我的暑期结束了,秋招前集邮atmd、上海四毒3.2W
- 2... 一文讲清新手到底要不要写《苍穹外卖》和《黑马点评》?1.1W
- 3... 黑马点评大总结1.0W
- 4... 实习/试用期转正,如何写好答辩文档?4529
- 5... 拼多多PDD-5.5服务端研发实习生二面面经4459
- 6... 节后上班第一天,我的精神状态be like……3764
- 7... Java后端5月还会有机会吗3370
- 8... 只有真正上战场了,才知道自己多菜!3265
- 9... 拼多多17-20号信息确认3191
- 10... 拼多多信息确认2718
正在热议
更多
# 你上一次加班是什么时候? #
50405次浏览 351人参与
# 学历or实习经历,哪个更重要 #
96829次浏览 694人参与
# 深信服求职进展汇总 #
178777次浏览 1663人参与
# 租房找室友 #
15208次浏览 101人参与
# 秋招最大的收获是什么? #
25074次浏览 275人参与
# 秋招签约后的心态变化 #
74737次浏览 791人参与
# 如何排解工作中的焦虑 #
150561次浏览 1752人参与
# 大疆求职进展汇总 #
479601次浏览 3195人参与
# 实习要如何选择和准备? #
58466次浏览 957人参与
# 秋招想进国企该如何准备 #
51022次浏览 350人参与
# 牛友打假中心 #
83202次浏览 2633人参与
# 如果可以,你希望哪个公司来捞你 #
71633次浏览 311人参与
# 生化医药面经大本营 #
100535次浏览 466人参与
# 多益网络求职进展汇总 #
22417次浏览 126人参与
# 摸鱼被leader发现了怎么办 #
50646次浏览 323人参与
# 如果重来一次你还会读研吗 #
167714次浏览 1754人参与
# 找工作,行业重要还是岗位重要? #
28923次浏览 496人参与
# 实习工作,你找得还顺利吗? #
403004次浏览 5576人参与
# 产品每日一题 #
39547次浏览 551人参与
# 荣耀求职进展汇总 #
845869次浏览 4762人参与