【赛后反思】【LGR-175 Div.4】 洛谷入门赛#20 赛后反思
1.【反思】洛谷8月月赛 Div.2 & RiOI Round 2 赛后反思2.【反思】Sadness Fan Club Round 3 赛后反思
3.【赛后反思】【LGR-175 Div.4】 洛谷入门赛#20 赛后反思
4.【赛后反思】洛谷基础赛 #15 &「LAOI」Round 6 考后总结(待补完)洛谷入门赛 #20 赛后反思
今日推歌:《水与水之歌 feat.绮萱》きくお
呆在这里直到精神恍惚为止
让我们一起快乐地玩耍
我们术术人有自己的《让我们荡起双桨》(大雾
Before
先看结果(是同步赛的成绩,因为前一天晚上我在死磕dfs):
省流:
暴力-纯度75%
STL-纯度25%
展开目录
A.射箭
参考上次的做法,先排序,然后把最小的两个相加,看第三人是否大于这个和
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
int x[3];
int main() {
scanf("%d%d%d", x + 0, x + 1, x + 2);
sort(x, x + 3);
if(x[2] > (x[1] + x[0])) puts("1");
else puts("0");
return 0;
}
B.酒
三个李白一台戏
考虑把每个李白喝的酒都加起来,然后进行比较,找出喝酒最多的那个。因为只有三个李白甚至可以直接写裸的 if
.
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
double x, y, a[7];
int main() {
for(int i = 1; i <= 5; ++i) scanf("%lf", a + i);
scanf("%lf%lf", &x, &y);
double j = a[1] * x + a[2] * y, q = a[3] * y, k = a[4] * y + a[5];
if(j >= q && j >= k) printf("1 %.2lf\n", j);
if(q > j && q >= k) printf("2 %.2lf\n", q);
if(k > j && k > q) printf("3 %.2lf\n", k);
return 0;
}
EXTRA
C.分配工资
先求出分母
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e6 + 5;
int n, m, a[N], b[N], c, d;
int main() {
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; ++i) scanf("%d%d", a + i, b + i), c += b[i];
for(int i = 1; i <= n; ++i) if(a[i] == 1) d += b[i];
printf("%.3lf\n", m * 1.0 / c * d);
return 0;
}
D.三位数
因为数据范围很小,所以可以直接暴力枚举每一位进行判断。
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
int d, fl;
int main() {
scanf("%d", &d);
for(int i = 1; i <= 9; ++i)
for(int j = 0; j <= 9; ++j)
for(int k = 0; k <= 9; ++k)
if(!((i * 10 + j) % d) && !((j * 10 + k) % d) && !((i * 100 + j * 10 + k) % d))
printf("%d%d%d\n", i, j, k), fl = 1;
if(!fl) puts("None!");
return 0;
}
压行真的很丑
E.数字串
65pts Solution
找到两个 No
.
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
int T, n, m, sum, maxs, ss, fl;
string s;
int main() {
scanf("%d" , &T);
while(T--) {
scanf("%d%d", &n, &m);
cin >> s;
for(int i = s.find("1") + 1; ; ++i) {
if(s[i] == '0') ++maxs;
else break;
}
for(int i = 0; i < s.size(); ++i) {
if(s[i] == '0') ++sum;
if(sum > maxs || sum > n) {puts("No"); fl = 1; break; }
if(s[i] == '1') {
if(ss != 0 && sum < maxs) {puts("No"); fl = 1; break; }
sum = 0, ++ss;
}
}
if(!fl) puts("Yes");
sum = maxs = fl = ss = 0;
}
return 0;
}
F.小朋友的身高
个人感觉比
预处理一个二维数组
警钟长鸣:弄清楚自己两维分别代表的是什么,我就弄混好几次(目移
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e3 + 5;
ll n, m, q, a[N][N], b, x, y, z;
int main() {
scanf("%lld%lld%lld", &n, &m, &q);
for(int i = 1; i <= n; ++i) scanf("%lld", &a[i][0]);
for(int i = 1; i <= m; ++i) {
for(int j = 1; j <= n; ++j) {
a[j][i] = a[j][i - 1];
scanf("%lld", &b);
a[j][i] += b;
}
}
while(q--) {
scanf("%lld%lld%lld", &x, &y, &z);
printf("%lld\n", a[y][x] - a[z][x]);
}
return 0;
}
G.翻转和反转
50pts Solution
比较优化一点的暴力,但是仍然 swap
,反转则是异或 0 ^ 1 = 1
,1 ^ 1 = 0
,相当于反转)
代码夹带私货严重:
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
inline string intp(string s) {
// cerr << "春风漫草野\n";
for(int i = 0; i < s.size() / 2; ++i) swap(s[i], s[s.size() - i - 1]);
return s;
}
inline string istp(string s) {
// cerr << "三月的天\n";
for(int i = 0; i < s.size(); ++i) s[i] = '0' + ((s[i] - '0') ^ 1);
// cerr << "千里外不曾相见\n";
return s;
}
int n, q;
string a, b;
int main() {
scanf("%d%d", &n, &q);
cin >> a >> b;
// cout << a << endl;
for(int i = 0; i < q; ++i) {
// cerr << "白马过了离原\n";
if(b[i] == '1') a = intp(a);
if(b[i] == '2') a = istp(a);
// cerr << "仰头看纸鸢\n" << a << endl;
}
cout << a << endl;
return 0;
}
H.陨石
一眼 DP,都怪 K8He(确信
其实是道贪心,从损坏程度最小的开始修,这样一定能修最多。
比
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e6 + 5;
int T, n, t, m, a[N], x, ans;
int main() {
scanf("%d", &T);
while(T--) {
scanf("%d%d%d", &n, &t, &m);
for(int i = 1; i <= n; ++i) scanf("%d", a + i);
for(int i = 1; i <= m; ++i) scanf("%d", &x), a[x] -= 2;
sort(a + 1, a + 1 + n, greater<int>());
for(int i = 1; i <= n; ++i) {
while(a[i] <= 0) --t, ++a[i];
if(t >= 0) ++ans;
else break;
}
printf("%d\n", ans);
ans = 0;
}
return 0;
}
After
又被入门赛 AK 了。
本文作者:Kiichi
本文链接:https://www.cnblogs.com/Kiichi/p/18018502/lgr175fansi
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步