Skip to content

Commit df15d23

Browse files
author
AnfangRobkit
committed
finish week9 hw
1 parent 59cf93a commit df15d23

File tree

10 files changed

+227
-0
lines changed

10 files changed

+227
-0
lines changed

.idea/$PRODUCT_WORKSPACE_FILE$

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/.gitignore

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/profiles_settings.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/programming-and-algorithm.iml

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
#include <iostream>
2+
#include <cstring>
3+
#include <cstdio>
4+
using namespace std;
5+
6+
int ans[30][30], f[30], d[30], t[30];
7+
int main()
8+
{
9+
int h, n;
10+
cin >> n;
11+
while (true)
12+
{
13+
if (n == 0)
14+
break;
15+
16+
cin >> h;
17+
h *= 12;
18+
memset(ans, 0, sizeof(ans));
19+
memset(f, 0, sizeof(f));
20+
memset(t, 0, sizeof(t));
21+
memset(d, 0, sizeof(d));
22+
23+
for (int i = 1; i <= n; ++i)
24+
{
25+
scanf("%d", &f[i]);
26+
}
27+
for (int i = 1; i <= n; ++i)
28+
{
29+
scanf("%d", &d[i]);
30+
}
31+
for (int i = 1; i < n; ++i)
32+
{
33+
scanf("%d", &t[i]);
34+
}
35+
36+
int ht, ft[30];
37+
for (int ed = 1; ed <= n; ++ed) //枚举最远会走到哪个湖
38+
{
39+
memset(ft, 0, sizeof(ft));
40+
for (int i = 1; i <= ed; ++i)
41+
{
42+
ft[i] = f[i];
43+
} //ft作为f的临时记录
44+
ht = h; //记录剩余时间
45+
for (int i = 1; i < ed; ++i)
46+
{
47+
ht -= t[i]; //减去路上的时间花费
48+
}
49+
//接下来开始模拟钓鱼过程
50+
int k, emp = 1; //emp标记连续的已经空了的湖
51+
while (ht > 0 && emp <= ed) //时间用完或湖空为止
52+
{
53+
k = 1;
54+
for (int j = emp; j <= ed; ++j)
55+
{
56+
if (ft[j] > ft[k])
57+
{
58+
k = j;
59+
}
60+
} //找出最优的湖
61+
62+
ans[ed][0] += ft[k]; //此次收获+ft[k]
63+
++ans[ed][k]; //记录在k湖花费了1单位时间
64+
--ht; //时间消耗1单位
65+
ft[k] -= d[k];
66+
ft[k] = ft[k] > 0 ? ft[k] : 0;
67+
for (int j = emp; j <= ed; ++j)
68+
{
69+
if (ft[j] == 0)
70+
++emp;
71+
else
72+
break;
73+
} //检查是否ed前的湖都已空
74+
}
75+
if (ht > 0)
76+
ans[ed][1] += ht; //若时间有剩余
77+
}
78+
79+
int a = 1;
80+
for (int i = 2; i <= n; ++i)
81+
{
82+
if (ans[i][0] > ans[a][0])
83+
a = i;
84+
} //找出收益最大的方案
85+
86+
for (int i = 1; i <= n; ++i)
87+
{
88+
cout << ans[a][i] * 5;
89+
if (i != n)
90+
cout << ", ";
91+
}
92+
cout << endl;
93+
cout << "Number of fish expected: " << ans[a][0] << endl;
94+
95+
cin >> n;
96+
if (n != 0)
97+
cout << endl;
98+
}
99+
return 0;
100+
}
101+
// Sick this week, no more time to do code.
102+
// Thanks to this website 47.91.197.53/acm/post/6268a
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include <cstdio>
2+
#include <algorithm>
3+
#include <iostream>
4+
5+
using namespace std;
6+
7+
int price[10000], needs[10000];
8+
int s, N;
9+
long long res;
10+
11+
int main()
12+
{
13+
cin >> N >> s;
14+
for (int i = 0; i < N; i++)
15+
scanf("%d%d", &price[i], &needs[i]);
16+
int lowPrice = price[0];
17+
res += lowPrice * needs[0];
18+
19+
for (int i = 1; i < N; i++)
20+
{
21+
lowPrice = min(lowPrice + s, price[i]);
22+
res += lowPrice * needs[i];
23+
}
24+
cout << res << endl;
25+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#include <iostream>
2+
#include <cstring>
3+
#include <cstdio>
4+
#include <algorithm>
5+
using namespace std;
6+
int n, c;
7+
long long cows[100007];
8+
bool check(long long mid)
9+
{
10+
int cnt = 1;
11+
int cow = cows[0];
12+
for (int i = 1; i < n; i++)
13+
{
14+
if (cows[i] - cow >= mid)
15+
{
16+
cnt++;
17+
cow = cows[i];
18+
}
19+
if (cnt >= c)
20+
return true;
21+
}
22+
return false;
23+
}
24+
int main()
25+
{
26+
cin >> n >> c;
27+
for (int i = 0; i < n; i++)
28+
scanf("%lld", &cows[i]);
29+
sort(cows, cows + n);
30+
long long left = cows[0], right = cows[n - 1];
31+
while (right - left > 1)
32+
{
33+
long long mid = (left + right) / 2;
34+
if (check(mid))
35+
left = mid;
36+
else
37+
{
38+
right = mid;
39+
}
40+
}
41+
cout << left << endl;
42+
return 0;
43+
}

0 commit comments

Comments
 (0)