DAY2-补题

news/2024/10/2 18:20:52

我补题AK了,但你出言不逊是

非常好的一套题,让我的大脑旋转啊。

不太想开一个文章单独屑,所以扔到随笔里面。

敲字速度有待加强。

说在前面

题目难度单调递减,分数单调递减。果然屑死了。

T1再次读题失误,正确的来说是代码敲得非常抽象。T2DP但没骗到分非常不好,T3场上想出正解了,但推一半搞差分然后还没有过掉,后面跟老师讨论时发现想复杂了。其实T3在推出差分前一步停就是正解,但还是没停下。T4可能是思维难度较小的,敲了个二分拿到15,但同机房有敲if过掉就显得数据很水。

T1-下棋(chess)

看得出来出题人对这个机制的热爱了。

题意一般简单,扔洛谷可能就是红。但为什么没过掉就是一个好问题了。

我现在试图揣测上午的思路,可能是打的时候没有算上进位之后加上来的三星(屑屑屑。

考试的时候成功推出式子,成功打上式子,但没算进位,于是根据有理数乘法法则,搓掉了。

放一下考试的歪解:

#include <bits/stdc++.h> 
#define int long long
using namespace std;
struct Node {int x, y;
}book[100005];
bool cmp(Node a, Node b) {if(a.x != b.x) return a.x > b.x;return a.y < b.y;
}
signed main() {int n;cin >> n;for(int i = 1; i <= n; i ++) {int a,b,c;cin >> a >> b >> c;int a1 = (a % 3);int a2 = (a / 3) + (b % 3);int a3 = (a2 + b) / 3 + c;int ad = a1 + a2 * 3 + a3 * 18;book[i].x = ad;book[i].y = i;}sort(book + 1, book + n + 1, cmp);for(int i = 1; i <= n; i ++) {cout << book[i].y << " ";}return 0;
}

老师一开始说可能输入反了,然后转了三回之后发现式子假掉了。于是打式子。

正解:

#include <bits/stdc++.h> 
#define int long long
using namespace std;
struct Node {int x, y;
}book[100005];
bool cmp(Node a, Node b) {if(a.x != b.x) return a.x > b.x;return a.y < b.y;
}
signed main() {int n;cin >> n;for(int i = 1; i <= n; i ++) {int a,b,c;cin >> a >> b >> c;int a1 = (a % 3);int a2 = ((a / 3) + (b % 3)) % 3;int a3 = (a / 3 + b) / 3 + c;int ad = a1 + a2 * 3 + a3 * 18;book[i].x = ad;book[i].y = i;}sort(book + 1, book + n + 1, cmp);for(int i = 1; i <= n; i ++) {cout << book[i].y << " ";}return 0;
}

代码个人习惯很重,抱歉(轻轻跪下。

T2-汪洋(BigWater)

当时看到名称的时候惊了,为什么大写就很迷。看题面发现了似乎是出题人藏的彩蛋。

BilibiliWorld 2023,简称BW

正好还是题目名称好哎!彩蛋不错。但 她可以和这些 coser 一起合影,然后发说说羡慕她那可怜的队友,不是集邮之后发给没抢到票的亲友吗?(乐我也没抢到票,亲友们也没抢到就很悲

闲话见我的珂爱游记,这里不展开说了。

是的这道题又是DP。

又是和昨天一样的问题,想出解法但切不掉。打脸。

希望明天想出解法能切掉。

题目分析后可以发现 Meowowco 走的是矩形,就可以遍历所有边然后求最大值,剪掉四个点就好了(因为是重复计算的所以剪掉

正解 :

#include <iostream>
using namespace std;
const int MAXN = 1005;
int a[MAXN][MAXN], row[MAXN][MAXN],col[MAXN][MAXN];
int main() {int n;cin >> n;for(int i = 1; i <= n; i ++) {for(int j = 1; j <= n; j ++) {cin >> a[i][j];row[i][j] = row[i][j - 1] + a[i][j];col[i][j] = col[i - 1][j] + a[i][j];}}int ans = 0;for(int x = 1; x <= n; x ++) {for(int y = 1; y <= n; y ++) {ans = max(ans, row[1][y] + row[x][y] + col[x][1] + col[x][y] - a[1][1] - a[1][y] - a[x][1] - a[x][y]);}}cout << ans + 100;return 0;
}

T3-删数(delnum)

考场想到正解,然后感觉假了就去敲暴力。中间敲了个差分然后发现cnt统计不进去于是骗分。

差分的思路就是设a[0] 为 0,于是后面每一个数的下一个要删的数就是这个数和前一个数的差的绝对值,由于是单调递增的自然数序列,所以差分可以求出来。

很神奇的cnt统计不进去,也就是他无法正确统计一轮而不是一个数字。

不过看了正解之后感受到了差分的麻烦以及时间复杂度高,不优的一个解法还让我敲了最长的时间。

不如退回一步想正解。

正解:

没办法鸭子没法复制又没时间打,只能搞掉图片了。

T4-平分糖果(candy)

这个题一眼枚举,于是Just do it.时间复杂度不算高,但只拿了15哭死。

二分思路很简单,看看代码即可理解(简称太屑了以至于想不出来如何二分切掉这个题

#include <bits/stdc++.h>
#define int long long 
using namespace std;
signed main() {
//	freopen("candy.in", "r",stdin);
//	freopen("candy.out","w",stdout);int cnt = 1;while(1) {int fl = 0;int a[20], b[20000];for(int i = 1; i <= 6; i ++) {cin >> a[i];if(a[i] != 0) fl = 1;}if(fl == 0) return 0;cout << "Collection #" << cnt << ":" << endl;cnt ++;int sum = 0;int cnt1 = 0;for(int i = 1; i <= 6; i ++) {sum += a[i] * i;if(a[i] * i != 0) {for(int j = 1; j <= a[i]; j ++) b[++cnt1] = a[i] * i;}}
//		cout << sum << endl;
//		for(int i = 1; i <= cnt1; i ++) cout << b[i] << endl;if(sum % 2 != 0) cout << "Can't be divided.\n\n";else {sort(b + 1, b + cnt + 1);int l = 1, r = cnt1;sum /= 2;int flag = 0;while(l < r) {int mid = (l + r) / 2;//	cout << b[l] << " " << b[r] << " " << b[l] + b[r] << endl;if(b[l] + b[r] == sum) {cout << "Can be divided.\n\n";flag = 1;break;}if(b[l] + b[r] > sum) {r = mid;} else {l = mid + 1;}}if(flag == 0) cout << "Can't be divided.\n\n";}}
//	fclose(stdin);
//  	fclose(stdout);return 0;
}

很奇怪的是二分最多时间超限,答案错误就很迷惑。老师看到了留个言解释一下罢(摊

昨天二分暴力,今天暴力二分,果然rp守恒。

每个物品的数量有限,所以找出是否存在几个物品的价值与物品总价值的一半相同就可以了,可以抽象成多重背包。

很好的思路。为什么考试写不出来呢?

扔dp正解,思路详细介绍会扔进tj里面的(应该会的吧

#include <iostream>
using namespace std;
const int MAXN = 20005;
int a[10], dp[10][2 * MAXN], col = 0;
int main() {while (1) {int m = 0;for (int i = 1; i <= 6; i++) {cin >> a[i];m += a[i] * i;}if (!m) break;dp[0][0] = 1;for (int i = 1; i <= 6; i++)for (int k = 0; k <= a[i]; k++)for (int j = k * i; j <= m / 2 + 1; j++)dp[i][j] |= dp[i - 1][j - k * i];cout << "Collection #" << ++col << ':' << endl;if (m % 2 == 0 && dp[6][m / 2] == 1) cout << "Can be divided." << endl;else cout << "Can't be divided." << endl;cout << endl;}return 0;
}

赛后总结

总司令不知道什么时候又出现了,大唐盛世如我所愿。

T2出题老师彩蛋非常好,给无聊的做题添加了一点乐子。

这次模拟赛还是不理想啊不理想,究其原因可能是每次推到正解但不打,打一个莫名其妙的代码然后保灵。

希望明天会更好罢。

今天听到好听的神的随波逐流,rp++。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/67158.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

独立站如何批量查收录,教你独立站如何批量查收录的方法操作步骤

独立站批量查收录是SEO优化工作中的重要环节,有助于网站管理员或SEO人员及时了解网站在搜索引擎中的表现,从而制定针对性的优化策略。以下是一些常用的独立站批量查收录的方法及其操作步骤: 一、使用搜索引擎的Site指令结合自动化脚本 编写脚本或配置爬虫: 利用Python、She…

04-论说文:审题与立意(1)

命题作文 比较开放 近义词 相关性 竞争 合作 竞争合作 ==》 竞争合作的关系 概率==》风险 风险 利益 审题 较难

南沙C++信奥赛陈老师解一本通题 1966:【14NOIP普及组】比例简化

​【题目描述】在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果。例如,对某一观点表示支持的有 1498 人,反对的有 902 人,那么赞同与反对的比例可以简单的记为1498:902。 不过,如果把调查结果就以这种方式呈现出来,大多数人肯定不会满意。因为这个比例…

pycharm 拆分窗口 pycharm怎么分屏,取消分屏

Split Vertically 或者 Split Horizontally 可以把当前编辑窗口垂直或者水平拆分成两个。 Split Vertically或者Split Horizontally可以把当前编辑窗口垂直或者水平拆分成两个。 取消拆分窗口:

三维激光扫描技术在文保修缮项目中的应用

三维激光扫描技术作为一种新兴的高精度空间数据获取手段,其在文物保护和修缮项目中的应用日益广泛。这项技术通过快速获取物体表面的三维密集点云数据,为文物的数字化存档、保护、修复及再利用提供了强有力的技术支持。 数据采集:高精度与非接触性三维激光扫描技术通过激光测…

找到一个数最接近的比它大的2的n次幂的代码分析

pub fn f1(mut n: u32) -> u32 {n = n | (n >> 1);n = n | (n >> 2);n = n | (n >> 4);n = n | (n >> 8);n = n | (n >> 16);n }如果n的输入类型为 u32(32位无符号整型), 上述代码的结果为大于等于n的2^k - 1的值(因为可能会出现溢出,所…

《如 何 速 通 一 套 题》8.0

邮寄 开场秒 B。 A 稍微退了一会儿,推出一个解法(后面发现假掉了)...... 然后 CD,D 感觉是一个 SA。结果 SA 写错了,算法假掉了...... A 智乃的差分 分类讨论。 \(x > 0\) 最大值 \(= x\),最小值 \(= 0\) 此时可以直接找一个不是 \(x\),不是 \(0\) 的数来(严格次小值…

Orchestre symphonique de Montréal,Rafael Payare - 马勒:第五交响曲(2024)

Orchestre symphonique de Montréal,Rafael Payare - 马勒:第五交响曲(2024)[Hi-Res 96kHz_24bit FLAC] 曲目:01.I. Trauermarsch. In gemessenem Schritt. Streng. Wie ein Kondukt.02.II. Stürmisch bewegt. Mit gröter Vehemenz03.III. Scherzo. Kräftig, nicht …