发电站,还有Chaoswither
607a3b7649156c0763df0337762f69c237eeb99e1ad207d5b140c1da417fab0b811e8d247851dc3156e9a8eb97172de0c4f6035377e58a27764c3da510599423191d3cdd6fcbdfb5acf9294d8bb6ffc0b14f2d5667881973f6242ef83f1dc48369f170a7736dbaa958f7078798784e0d6d2309293230aeae5b84271e39cd3c5ade1823fed0f354ff4fda0283a65e516b5989c246bc5a402e0c94dde63379909ef4e9bd8c41aea9565195dea168b447f7c495ecc0d1c82e78180095a6c97d014b2cec6f5b859e5b10fc9a2237e4a9f8974e375274749f38bba759712391f7eed59e49c8fa328373040c59e0c4819ddaedfe03321a015285b84 ...
about
站长是个发电机!
站长刚搭好的博客。(on 2023/8/27)
会放一些平时没有的发电内容。如果你真的通过搜索找到了这里,那你很厉害这意味着你可以浪费时间看我发电了。
一般来说个人博客的内容严格多于洛谷博客。
关于我和Chaoswither
最近有人开始磕我跟Chaoswither的CP组合。(雾
其实但凡稍微认识我的人就不会犯这种逆天错误。
犯过的弱智错误
1、一定要看清楚要不要加文件,要加的文件后缀名。
2、一定要看清楚数据范围,要不要开long long、long double、__int128,同时一定不要开小或者开大数组。推荐的方案是 $O(n)$ 算法无脑开 $10^6$,$O(n \log n)$ 算法至少开到 $3*10^5$。
3、注意输入格式。先输入n还是m?
4、测试速度的时候要开-Ofast。
5、在不确定程序能否正常运行的地方加assert。
6、交程序之前记得用-fsanitize=address,undefined测试一遍,然而用这个编译选项时执行效率会大大降低。
7、请注意输入中不保证l<=r,如果l>r你需要交换l和r8、写乱搞的时候注意卡时,不要卡错了。
9、当你在这道题上完全卡住的时候,不如去前面的题写几个拍子。
10、先把所有的题看一遍,确定哪道最可做。
11、注意大小写。IndSet不是Indset啊。
乱搞记录
9.13P9591 「PFLOI R1」PFL 变换CF1198F GCD Groups 2P2210 Haywire9.14P4212 外太空旅行P5911 [POI2004] PRZP4220 [WC2018] 通道9.24他更新了。
SCOI2010 连续攻击游戏Topcoder TPS蓝桥杯 图形排版CF338D GCD TableUSACO2008 Cow NeighbourhoodsP79999.30P1452 [USACO03FALL] Beauty Contest G10.4CF1198C Matching vs Independent Set10.9CF1305F Kuroni and the Punishment10.11CF1438F Olha and Igor10.12ABC326G Unlock Achievement11.7P3475 [POI2008] POD-Subdivision of Kingdom
CF808F Card Game
先按照等级从小到大排序。
考虑先二分答案,把所有等级符合要求的三元组存下来,随机顺序贪心即可。
更具体地,开一个vector把所有符合要求的三元组存下来,贪心的时候,如果当前的和之前的和为质数,那就不选,否则选。
1234567891011121314151617181920212223242526272829303132333435363738394041424344#pragma GCC optimize("Ofast,no-stack-protector")#include<bits/stdc++.h>using namespace std;struct node{int x,y,z;}a[105];int n,k,p[10000005],v[10000005],cnt;mt19937 rd((unsigned long long)new char);bool check(int mid){ vector<node>b,chz; for(int i=1;i<=n&&a[i] ...
P3475 [POI2008] POD-Subdivision of Kingdom
你发现 $n\leq 26$,直接考虑随机化乱搞。
由于这道题的数据比较强,所以不能硬随,要加一点优化。
第一步,你随机一些序列,取其中最优的序列开始交换。
在随机交换的过程中,为了减少陷入局部最优解的概率,在被拒绝了一定次数之后,随机交换一部分的决策,这样就会让你的随机化贪心正确率更高。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970#include<bits/stdc++.h>using namespace std;int n,m,a[105],ans[105],v[105];vector<int> g[105];mt19937 rd(19530615);inline int calc(){ int as=0; for(int i=1;i*2<=n;++i) for(int j:g[a[i]])as+=v ...
乱搞题代码查重
一时突发奇想的产物。
ABC326G Unlock Achievement我的提交
接下来是公开处刑:
好题摘录
这里面会放一些我做过的非乱搞的好题,乱搞请出门右转乱搞记录。
CF417E Square Table考虑先构造一行,设为 $a$。
当 $n=1$ 时,直接扔个平方数上去就是合法的。
当 $n=2$ 时,令 $a=[3,4]$ 即可。
否则,当 $n$ 是奇数的时候,令 $a$ 第一项为 $2$,然后 $n-2$ 项为 $1$,最后一项是 $\frac{n+1}{2}$ 即可满足要求。
当 $n$ 是偶数的时候,令 $a$ 前 $n-1$ 项为 $1$,最后一项为 $\frac{n}{2}-1$ 即可。
证明:当 $n$ 是奇数的时候,该行的和为:$(\frac{n+1}{2})^2+n+2=(\frac{n}{2}+1)^2$。
当 $n$ 是偶数的时候,该列的和为:$(\frac{n}{2}-1)^2+n-1=(\frac{n}{2})^2$。
列的构造方式同理,设为 $b$。
再考虑拓展到 $n\times m$ 的矩阵上,事实上,令 $c[i][j]=a[i]\times b[j]$ 就是符合要求的。
证明:矩阵 $c ...
ABC326G题解
前言被同学强行拉过来补ABC,然后他不会G,我一看啊我也不会,于是就有了这篇题解
虽然正确率很高,但是这篇题解不是正解,如果有hack可以联系管理撤下题解。
题意给你一个序列 $now$,初始它均为 $1$。你可以花费 $c[i]$ 的代价把 $i$ 这个位置增加 $1$。
再给你 $m$ 个目标,第 $i$ 个目标是一个数组 $l[i][j]$,代表如果 $now$ 每个位置都比 $l[i]$ 对应位置大,那么可以得到 $a[i]$ 的收益。
我们要求出最大净收益。
解法我们发现数据范围奇小无比。所以考虑进行乱搞。
考虑按照净收益对目标排序,然后顺序完成目标,在中途记录答案并更新最大值。
具体实现参考核心代码:
12345bool cmp(int x,int y){ int ansl=0,ansr=0; for(int i=1;i<=n;++i)ansl+=(max(0ll,l[x][i]-now[i]))*c[i],ansr+=(max(0ll,l[y][i]-now[i]))*c[i]; return a[x]-ansl<a[y]-ansr ...