- 何昱辰 的博客
7月day3
- @ 2025-7-23 9:27:26
sortfor$循环遍历A与B求出A与B能吃的数量cnt_a与cnt_b,ans就=min(cnt_a,cnt_b)。$
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2e5 + 5;
ll a[N], b[N], n, x, y;// 定义A、B、N、X、Y,大写用着不方便,我用的是小写
bool cmp (int o, int p)
{
return o > p;
}
int main ()
{
freopen("eat.in", "r", stdin);
freopen("eat.out", "w", stdout);
cin >> n >> x >> y;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n; i++) cin >> b[i];
// 排序
sort(a + 0, a + n, cmp);
sort(b + 0, b + n, cmp);
// 定义变量cnta、cntb、resa、resb
ll cnta = 0, cntb = 0, resa = 0, resb = 0;
// 循环遍历
for (int i = 0; resa <= x && i < n; i++) resa += a[i], cnta++;
for (int i = 0; resb <= y && i < n; i++) resb += b[i], cntb++;
// 取最小值
ll ans = min(cnta, cntb);
// 输出
cout << ans;
return 0;
}
forcout<<ans[n]
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll n, a[13] = {0, 1, 11, 111, 1111, 11111, 111111, 1111111, 11111111, 111111111, 1111111111, 11111111111, 111111111111};
int main ()
{
freopen("three.in", "r", stdin);
freopen("three.out", "w", stdout);
cin >> n;
for (int i = 1; i <= 13; i++)
{
for (int j = 1; j <= i; j++)
{
for (int k = 1; k <= j; k++)
{
n--;
if (n == 0) cout << a[i] + a[j] + a[k];
}
}
}
return 0;
}
for$循环遍历cnt_{ij}\times cnt_{ji};将遍历结果加入一个答案变量中。最后输出答案变量ans。$
#include <bits/stdc++.h>
using namespace std;
long long ans = 0, n, cnt[10][10];
int main ()
{
freopen("number.in", "r", stdin);
freopen("number.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++)
{
int l, r = i % 10, k = i;
while (k > 0)
{
l = k % 10;
k /= 10;
}
cnt[l][r]++;
}
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= 9; j++) ans += cnt[i][j] * cnt[j][i];
}
cout << ans;
return 0;
}