- 博客(12)
- 收藏
- 关注
原创 CSP模拟赛集锦篇
不知不觉距离CSP也只有9天了,感觉要被虐。。。PJ的复习情况非常垃圾,TG就是看RP的 初赛狗屎运,超TG分数线1分 KDT大好机构给我们搞了3场比赛,感觉被许多神犇虐了 一模 T1签到 T2二分or尺取法,懒,二分算了 T3感觉又像DP又像计数,DP不出来,计数推推公式,水过样例,结果手造挂了。。。跟暴力一拍,艹,居然公式推错了。改改改,推推推。哇啊,我这小奥水平不行啊,还是没搞出来,来来来,大法师一发~~ T4树上搜索,纯搜会T成60,开了个剪枝,跑到飞起,切掉(后来看KDT发的正解好像又是什么一层
2021-10-13 22:20:51
310
原创 CF1551B2 Wonderful Coloring - 2 题解
本题我们首先用桶扫一遍序列,由于需要存出下标,所以我们把桶定义成vector形式。接下来扫一遍桶。由于方便,我们将每种颜料所涂的下标用vector来存 若桶中数字数量>=k,则将所有k个容器都加入一个,剩下来的就没办法了 若<k,则先把其暂存在另一个序列里,我们称之为“暂存序列”,长度为cnt 扫完我们遍历暂存序列,但是由于要满足每一种颜色染的字母的数量全部相等的条件,所以我们可以只遍历到cnt-cnt%k,感性理解就是最后一个不大于cnt且是k倍数的数。这样我们就依次放入容器就行了,我们就
2021-09-26 22:04:30
361
原创 CF1559D1 Mocha and Diana (Easy Version)
本题我们可以考虑O(n2)地枚举两个结点,然后尝试将其连接。但我们如何说明不同的顺序遍历出的树的边数相同?验证如下: 假设红框和蓝框代表某个森林中的某两颗树,那么易知两个红色结点连通、两个蓝色结点连通(树的基本性质)。此时,我们若连黄边,则其它连接两棵树的边一定连不上,否则将产生环。同样的,如果连绿边的话其它边也自然连不上(包括黄边),所以到头来只能连一条边,故顺序不影响最终结果。 那我们便可以放心大胆地去枚举了。但是怎么判环?我们可以用两个并查集来维护两个森林就行了。 代码实现: #include &l
2021-09-25 17:51:50
312
原创 P3719 [AHOI2017初中组]rexp
题面 无疑是一个表达式求值,但: 由于aa(aa)这种东西很讨厌,所以我盯着题目5min突然想到可以在a之间塞+号,并且+的优先级大于| 这样就能搞定了 接下来就是一阵猛调+AC了。 #include <iostream> #include <stack> using namespace std; const int MAXN = 1e6 + 100; string s; char ans[MAXN]; int cnt; stack<char> sta; void
2021-09-23 21:04:10
485
原创 P2672 [NOIP2015 普及组] 推销员
题目 一看就是贪心或者DP,但是需要输出x为不同值的不同答案,可以猜想是贪心,并且每选完一个地方去推销之后,对于剩下所有地方分析出最优的那一个,前往推销。 至于怎么分析,我们需要分类讨论: 我们假设所走过的最远的住户下标为far,则 对于1~far-1,我们求出a[i]最大的下标 对于far+1~n,我们求出(s[i]-s[far])*2 + a[i]最大的下标 至于为什么不一样,相信很容易理解。既然far比你远,你一定能在去far的路上经过你这儿,所以只需要算a[i]即可。 但是只有60分
2021-09-21 16:24:57
447
原创 洛谷 P1378油滴扩展 题解
数据范围小,可以全排列出所有先后顺序,然后模拟判断即可。欧几里得距离很好求,与其它圆的距离可以用两圆心距离-另一圆半径来求。剩下的都是一些精度问题,把π开精确一点就可以了。 #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #define area fabs(x1-x2)*fabs(y11-y2) using
2021-09-12 16:11:30
341
原创 P1199 [NOIP2010 普及组] 三国游戏
我们可以设武将a,与其默契值最高的武将为a’,那么 我 机 a a’ 此时,我们根据贪心策略,便可以选与a组合默契值次大的b,则计算机便会选b’ 我 机 a,b a’, b’ 此时明显,a与b的默契值 > a’b’的默契值 原因:因为a和b组成的默契值是次大的,而a’与b’不可能是最大的(已经被拆分),而默契值均不相同,所以a与b的默契值 > a’b’的默契值 所以人必赢(先手) 那么只需要遍历每个人找出其次大值的最大值就搞定了。 #include <
2021-09-11 11:56:32
198
原创 AT3590 Inserting ‘x‘ 题解
我们可以直接用两个指针l、r指向串头和串尾,然后分3中情况: 相同,l++, r– s[l] == 'x' && s[r] != 'x' 则 s = "x" + s; ans ++; l ++ s[l] != 'x' && s[r] == 'x' 则 s = "x" + s; ans ++; l ++; 如果都不是x切不相等,则必定无解 #include <iostream> using namespace std; int n, ans; bool fl
2021-09-08 21:37:10
130
原创 刷题日志-USACO Section 2全套
[P1457 USACO2.1]城堡 The Castle 思维难度不高,难度居然是蓝,被某谷赋虚高了,主要是考码力,地图需要在每个点上统计东南西北四处是否有墙,好在没有冲突的情况,无需分类讨论(实际上我也不会/qwq)。剩下的就是DFS洪水填充,统计一下就可以了,反正范围只到50。 #include <iostream> #include <cstring> #include <cstdio> // #include <windows.h> using
2021-09-07 20:00:25
266
原创 刷题-USACO Section 1 题目个人选做
马上就要打CSP了,最近准备刷一刷USACO section1和2,先刷刷section 1练练手吧,保证PJ1=、TG能苟进暴力分。。。 [P1208USACO1.3] 混合牛奶 Mixing Milk 比较简单的贪心题,先对单价排序,如果单价相同对最大产量排序,然后跑一下花费就可以了。 #include <iostream> #include <algorithm> using namespace std; typedef long long ll; const int MA
2021-08-25 14:50:52
249
原创 贪心-P1106删数问题题解
题目描述 键盘输入一个高精度的正整数 NN(不超过 250250 位),去掉其中任意 kk 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 NN 和 kk,寻找一种方案使得剩下的数字组成的新数最小。 输入格式 n(高精度的正整数 )。 k(需要删除的数字个数 )。 输出格式 最后剩下的最小数。 输入输出样例 输入 1 175438 4 输出 1 13 这题算是贪心思想的一个经典运用,也是所有学贪心的OIer们的必经之题(学贪心都1年了,复现还WA了4发。。。)思维难度一般,但是比较复杂,
2021-08-21 13:25:06
361
1
原创 HELLO CSDN
在Github上写了一段时间博客,博文大概有30多篇了,但是评论系统一直配置不好,而且加载起来的速度惊人。。。所以现在我正式开始在csdn社区写博客,当然,github站也会同步更新。 github站:HERE Latex实验: ∑x=1n\sum_{x=1}^n∑x=1n 代码块实验: hh,CE辣 ...
2021-08-20 20:02:04
106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅