ACM算法
文章平均质量分 50
SDTBU_LCY
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #602
这场比赛本来是抓着当暑假集训的个人赛的,但是打得还不错,就想写篇题解。Math Problem传送门开一个mx记录左端点的最大值,开一个mn记录右端点的最小值,答案是max(mx - mn, 0)。Box传送门题目中给出的q数组中每个数第一次出现的位置就是那个数在p数组中出现的位置,然后将没有出现过的数按照由小到大的顺序插入到p数组中空缺的位置,之后再对p数组跑一遍前缀最大值,如果跑出来的结果跟题目中给出的q数组有矛盾的话输出-1,否则输出构造好的p数组。Messy传动门考虑先将所有的左括号移到左边,右原创 2022-07-31 19:42:17 · 153 阅读 · 1 评论 -
第十二届山东省ICPC大学生程序设计竞赛
一道很简单的背包题,就是做的有点晚,要是上来就直接做这题的话或许能首刀?首先要知道的是,根据贪心的原则,数大了一定是Alice需要的硬币少,只有可能在数小的情况下Bob需要的硬币少,所以我们对小数据跑遍背包,记录每个人都需要多少个硬币才能凑出某个数或是根本就凑不出来,剩下的就是比较的事了。这道题就是今年省赛的签到题了,构造题,也很容易想到怎么构造,但是我们被卡了四个半小时,关键是这个4也能凑出来17,还不止一种凑法,还好队友关键时刻给力,好歹在比赛结束前发现4能凑出来,如果等赛后发现的话就真哭了。...原创 2022-07-24 19:11:26 · 894 阅读 · 0 评论 -
HDU 4578 Transformation
线段树的节点要维护三个和普通和、平方和、立方和,要有三个懒标记加法懒标记、乘法懒标记、统一修改懒标记。综合起来考虑,此题的关键就是push_down函数,要注意到这三个懒标记之间会相互影响,应先处理优先级高的懒标记,优先级高的懒标记会影响优先级低的懒标记,此题中的优先级统一修改懒标记>乘法懒标记>加法懒标记。至于在下放懒标记时如何维护三个和,下放统一修改懒标记和乘法懒标记还好说,下放加法懒标记时建议手推一下公式,实在不行搜一下公式,照着公式写就不容易出错啦。...原创 2022-07-19 10:22:06 · 116 阅读 · 0 评论 -
洛谷 P2016 战略游戏
这题洛谷上有很多树形dp的题解,在这里我提供另外一种做法,那就是最小点覆盖的做法。最小点覆盖有关最小点覆盖的概念请自行csdn,知道了概念以后再把题目抽象一下,会发现这题就是一道最小点覆盖的板子题。此外还要知道一个结论,那就是最小点覆盖的点数等于最大边匹配的边数,对于无向图来说,就等于最大边匹配的边数的一半。知道这个以后,那么这个题就变成了匈牙利算法求二分图最大边匹配了,直接上代码。...原创 2022-07-11 19:04:06 · 567 阅读 · 0 评论 -
tarjan缩点
这周给21级讲了强连通分量,也就是tarjan缩点,由于之前自己也不会,就自学了一下并做了些题,在这里整理下tarjan缩点的题目。迷宫城堡传送门判断给的图是不是强连通图,直接tarjan缩点之后看强连通分量的个数是不是1即可。Proving Equivalences传送门先跑一遍tarjan缩点计算所有的强连通分量,之后再重新建图并计算新图各个点的入度和出度,在这里计算的也就是各个强连通分量的入度和出度。之后统计新图中入度为0的点的个数以及出度为0的点的个数,最终的答案就是二者取大。Summer Ho原创 2022-07-11 17:31:17 · 501 阅读 · 0 评论 -
map在循环删除时的正确操作
打省赛的时候居然被卡语法了,啊这……虽然不被卡语法还是会T掉,但还是想写篇博客记录一下。map在循环删除时应该这样操作:#include <iostream>#include <map>using namespace std;map <int, int> mp;int main(){ mp[0] = 0; mp[1] = 1; mp[2] = 1; mp[3] = 1; map <int, int>::it原创 2022-05-24 18:35:42 · 2210 阅读 · 0 评论 -
卡特兰数(竞赛用板子)
卡特兰数闲谈卡特兰数是组合数学方面的知识,在程序设计竞赛上也有考查,并且很多问题都涉及到卡特兰数。第一次接触卡特兰数是在昨晚,是在gym上做吉林省赛的时候碰到的,吉林省赛的K题,有k种括号,问n个括号匹配的方案数有多少,答案对1e9+7求余。刚拿到这个题发现k种括号其实没用,只需要算出一种括号有n个的匹配数目有多少然后把结果乘上k^n不就行了?分析完之后发现,一种括号有n个的匹配数目有多少不会算……推导了俩小时还是找不出来公式,无奈之下上csdn搜索括号匹配方案数,然后就接触到了卡特兰数这个组合数学的原创 2022-05-18 16:46:26 · 206 阅读 · 0 评论 -
母函数简介
母函数母函数又称生成函数,说实话,在实验室待了一年半了,都准备接手实验室了才听说有这么个算法,还是在老板的算法基础课上学的……母函数属于组合数学的知识,在竞赛上主要用于解决这两大类问题:一、数量有限制的:有1克、2克、3克、4克的砝码各一个,问能称出哪几种重量,称出某个重量有多少种方案。二、数量没限制的:有1元、2元、5元的硬币各无限个,问凑出某个面值有多少种方案。大体上分母函数就是用于解决这两种问题的,其它的问题都是由这两种问题拓展而来的。母函数的原理在这里就不多说了,这篇博客就是一个小随笔,原创 2022-05-18 15:43:51 · 527 阅读 · 0 评论 -
2021牛客国庆集训派对day1
2021牛客国庆集训派对day1Removal#include <iostream>#include <cstring>using namespace std;#define N 100005#define MOD 1000000007int number[N],dp[N][15];int main(){ int n,m,k; while(scanf("%d%d%d",&n,&m,&k)!=EOF) {原创 2021-12-03 12:17:13 · 124 阅读 · 0 评论 -
哈夫曼树(竞赛用板子)
在数据结构的课上学习了哈夫曼树,书上有实现哈夫曼树的C语言代码,但是对于打竞赛来说并不实用,对于打竞赛来说哈夫曼树算是比较简单的数据结构了,这么一个简单的数据结构再去敲上上百行不太值当。正好想起来之前在打牛客小白月赛的时候碰见过一道哈夫曼树的题,当时队友说这是道典型的哈夫曼树的题目,很简单,当时我根本就不知道哈夫曼树是啥所以一点也不觉得简单,现在再回过头来看这道题,就是哈夫曼树的板子题呗,哈夫曼树也不难,所以这道题确实很简单。先上题目链接:https://ac.nowcoder.com/acm/conte原创 2021-11-19 20:44:25 · 147 阅读 · 0 评论 -
第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛
第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛寒假打的一场比赛,时隔许久对这场比赛还有些许印象,所以特意回来补了这场比赛的题目。小宝的幸运数组(B题)题目链接#include <iostream>#include <cstring>using namespace std;#define N 100005int number[N],sum[N],pos[N];int main(){ int _; cin >> _; while原创 2021-11-17 19:56:39 · 234 阅读 · 2 评论 -
中南林业科技大学2020届ACM新生赛
中南林业科技大学2020届ACM新生赛一年前打的一场比赛了,对这场比赛印象深刻,因为我在这场比赛中交上第二题时排名是第十,牛客上第一次也是到目前为止唯一一次排名进前十,虽然也就几分钟就跌下去了……字符统计(A题)题目链接、#include <iostream>#include <string>using namespace std;#define N 150int flag[N];int main(){ string s; cin >>原创 2021-11-12 12:30:04 · 275 阅读 · 0 评论 -
2021CCPC网络预选赛(重赛)
2021CCPC网络预选赛(重赛)比赛地址由于上一次的CCPC网络选拔赛打成了选拔网络赛,所以CCPC网选赛要重赛,比赛依旧是在杭电打的,但是这次的杭电系统是全新的(虽然半个小时后就换回去了),好歹没像上次一样出那么大的事故。怎么说呢,这场比赛打的还是不怎么好,但是依旧保住了大二首发队的名额,虽然今年的ICPC和CCPC都没我们学校的事……Kanade Doesn’t Want to Learn CG#include <iostream>using namespace std;dou原创 2021-10-11 19:38:58 · 830 阅读 · 0 评论 -
最大流算法
最大流算法最大流算法(EK算法)今天学习了最大流,最大流算法主要有两个,一个是EK算法,一个是dinic算法。EK算法的时间复杂度较大,但容易理解,相对的,dinic算法的时间复杂度较小,但却难以理解。由于我是个蒟蒻,dinic算法的实现我看不懂,所以我只学习了最大流的EK算法(doge)。EK算法的主要思想是在当前图中找增广路,然后再沿着这条增广路去更新流量,直到找不到新的增广路为止。经过这样的操作后,最大流就是每次更新的流量的总和。在这里要引入一个东西,叫做反向边,反向边的作用详见下面大佬的博客。原创 2021-10-08 21:15:56 · 504 阅读 · 0 评论 -
2021牛客国庆集训派对day7
2021牛客国庆集训派对day7Minimum Cost Perfect Matching#include <iostream>using namespace std;#define N 500005int number[25],ans[N];int main(){ int n; cin >> n; for(int i=1;i<=20;i++) number[i]=(1<<i)-1; for(int i=原创 2021-10-07 16:23:55 · 181 阅读 · 0 评论 -
2021牛客国庆集训派对day6
2021牛客国庆集训派对day6Singing Contest#include <iostream>#include <cstring>#include <algorithm>using namespace std;#define N 100005int flag[N];struct Node{ int a; int b; int c;}node[N];bool cmp(Node x,Node y){ if(x.c!原创 2021-10-06 16:36:54 · 93 阅读 · 0 评论 -
2021牛客国庆集训派对day5
2021牛客国庆集训派对day5max#include <iostream>using namespace std;int main(){ int c,n; cin >> c >> n; if(c>n) cout << -1 << endl; else { int m=n/c; long long ans; if(m==1)原创 2021-10-05 13:42:23 · 107 阅读 · 0 评论 -
2021牛客国庆集训派对day4
2021牛客国庆集训派对day4Another Distinct Values#include <iostream>using namespace std;int main(){ int _; scanf("%d",&_); while(_--) { int n; scanf("%d",&n); if(n%2) printf("impossible\n");原创 2021-10-04 19:56:53 · 71 阅读 · 0 评论 -
2021牛客国庆集训派对day3
2021牛客国庆集训派对day3PACM Team#include <iostream>using namespace std;#define N 40int p[N],a[N],c[N],m[N],v[N],ans[N],dp[N][N][N][N];long long pre[N][N][N][N];int main(){ int n; cin >> n; for(int i=1;i<=n;i++) cin >&原创 2021-10-03 20:17:52 · 93 阅读 · 0 评论 -
2021牛客国庆集训派对day2
2021牛客国庆集训派对day2run#include <iostream>using namespace std;#define N 100005#define MOD 1000000007long long dp[N],ans[N];int main(){ int q,k; cin >> q >> k; for(int i=0;i<k;i++) dp[i]=1; dp[k]=2; for(i原创 2021-10-02 19:05:31 · 152 阅读 · 0 评论 -
计算几何模板(凸包)
计算几何模板(凸包)模板#include <iostream>#include <cmath>#include <algorithm>using namespace std;#define N 10005struct Point{ double x; double y;}point[N];Point stack[N];double dis(Point a,Point b){ return sqrt((a.x-b.x)*(a.原创 2021-09-24 19:15:26 · 56 阅读 · 0 评论 -
2021CCPC网络预选赛
2021CCPC网络预选赛比赛地址今年的CCPC网络预选赛又出事了,好好的网络选拔赛硬是让HDUOJ整成了选拔网络赛,HDUOJ被3000多支队伍挤崩了,卡的一批。另外1011题可以说就是洛谷的原题,我没看,可能就是改个输入输出就能过,出原题就不应该了吧,这是北邮的错,但是洛谷上这道许久无人问津的题今天下午却突然多出来7页提交,这就是各位参赛队伍的不对了吧,诚信何在?这次网选赛整个学校还是一如既往的团灭,帆哥他们队解了3道题校内第一,我们2小时解了2道题校内第二,总榜1426,算是保住了20级首发队的原创 2021-08-28 19:33:49 · 423 阅读 · 0 评论 -
2021年集训(8.26~8.28)
2021年集训(8.26~8.28)2021年集训顺利收官,转眼间5周已过,这5周可谓收获满满,如果能在明天的2021CCPC网络选拔赛顺利突围就更好不过了,但是几率可谓相当的小啊,三千多支队伍一起打选拔赛,才决出来几百支队伍,而且其中高手如林,北大的逆十字也来了,这就说明当年的国家队队长周雨扬也来了,一想到此就十分地激动啊。但是不得不说CCPC的网络选拔赛是真的离谱,没任何监控,全靠自觉,作弊的人肯定不少,而且这几年的网选赛后台数据早被喷爆了,还不整改,硬生生地打成OI,就离谱。统计难题传送门//原创 2021-08-27 21:49:34 · 89 阅读 · 0 评论 -
CF1561系列
今天个人赛用的题是CF1561系列,题目有一定的难度,打出来两道题就能拿第一了,可惜我的罚时比老廖多,拿了个第二……Simply Strange Sort#include <stdio.h>#include <algorithm>using namespace std;int number[1005];int main(){ int _; scanf("%d",&_); while(_--) { int n;原创 2021-08-25 20:30:39 · 102 阅读 · 0 评论 -
2021年集训(8.23~8.25)
2021年集训(8.23~8.25)小Z的袜子(hose)传送门//https://vjudge.ppsucxtt.cn/contest/455014#problem/A#include <stdio.h>#include <math.h>#include <algorithm>using namespace std;#define N 50005int block;int number[N],num[N];long long sum;struct原创 2021-08-25 11:06:37 · 72 阅读 · 0 评论 -
2021.8.24个人赛
今天个人赛用的题都是CF的,虽然不是一个系列的,但题的质量都还不错,在这里整理下这些题的代码。话说老廖在acwing上的每日一题做过这些题,真他娘的巧。Array Rearrangment#include <stdio.h>int a[55],b[55];int main(){ int _; scanf("%d",&_); while(_--) { int n,x; scanf("%d%d",&n,&原创 2021-08-24 21:12:18 · 44 阅读 · 0 评论 -
POJ 1017
Packets题意不难理解,读完题后会发现这题是道贪心,但是怎么贪是个问题,鼓捣这题鼓捣了一个多小时。我的解题思路是这样的:先把边长是4、5、6的加起来,因为这三个不管怎么摆都是单独一个占一整个空间,再把边长是3的按除以4向上取整加起来,边长是3的可以按四个一组占一个空间。接下来就剩边长是2和1的了,边长是2和1的主要用于补空。先开一个变量,记录当前空间能放多少个边长是2的,其个数为:边长是4的个数乘以5,再加上一个分情况讨论的结果,如果边长是3的个数对4求余的结果为0则加上0,结果为1则加上5,结果为原创 2021-08-23 09:00:15 · 41 阅读 · 0 评论 -
2021年集训(8.19~8.21)
2021年集训(8.19~8.21)这周讲了状态压缩和数位dp,题是写得差不多了,状态压缩基本上是会了,但是数位dp还是有些懵,这种dp跟dfs结合起来的算法还是有些难懂的。所以在这里只整理下状态压缩的题目。互不侵犯King传送门//https://vjudge.ppsucxtt.cn/contest/454363#problem/A#include <stdio.h>typedef long long ll;int sta[1<<10],num[1<<10原创 2021-08-21 17:24:48 · 68 阅读 · 0 评论 -
CF1560系列
今天个人赛用的题是CF1560系列,这次打得还行,得了个第二,但是本来是第一的,后一个小时钻错题了,钻了个难的题,没钻出来,最后让钻简单题的老廖给反超了,gg……Dislike of Threes#include <stdio.h>int cnt=1,number[1005];int main(){ for(int i=1;cnt<=1000;i++) if(i%3!=0&&i%10!=3) number[cnt++原创 2021-08-20 19:50:41 · 78 阅读 · 0 评论 -
CF1526系列
今天个人赛用的题是CF1526系列,同样还是打得不太好。这次又是让B题给搞心态了,感觉最近的B题总是和我作对啊。Mean Inequality#include <stdio.h>#include <algorithm>using namespace std;int number[55];int main(){ int _; scanf("%d",&_); while(_--) { int n; sc原创 2021-08-18 20:20:58 · 133 阅读 · 0 评论 -
2021年集训(8.16~8.18)
2021年集训(8.16~8.18)Mr. Young’s Picture Permutations传送门//https://vjudge.ppsucxtt.cn/contest/453787#problem/A#include <stdio.h>#include <string.h>typedef unsigned int ui;int main(){ int n; int row[10]; while(scanf("%d",&n)!原创 2021-08-18 14:22:55 · 81 阅读 · 0 评论 -
CF1559系列
今天个人赛用的题是CF1559系列,打得不太好,感觉最近不是很在状态,得赶紧转变一下。这场比赛又出现了因为心态的原因导致陷入恶性循环的情况,真得好好改改比赛时的心态。Mocha and Math#include <stdio.h>int main(){ int _; scanf("%d",&_); while(_--) { int n; scanf("%d",&n); int ans;原创 2021-08-17 20:00:00 · 74 阅读 · 0 评论 -
2021年集训(8.9~8.14)
2021年集训(8.9~8.14)这周讲了高级数据结构,由于高级数据结构属于进阶算法,理解起来比较困难,所以这周只讲了高级数据结构。BSTBST(Binary Search Tree),也就是二叉搜索树,是一种模拟二叉搜索的数据结构,其特点为:任意节点的左子树上的节点的值都小于当前节点,任意节点的右子树上的节点的值都大于当前节点。按照这一特性,在树中查找某个数时可将复杂度降为O(logn),但是,当按照某一顺序插入数据时,例如按照由小到大的顺序插入数据,那么数据会一直插向上一个数据的右子节点,这么一来原创 2021-08-14 18:58:46 · 73 阅读 · 0 评论 -
Web of Lies(CF 1548A)
这是今天在打个人赛时碰见的一道题,是一道半图论半思维的题。Web of Lies题目大意不难理解,在这里只需要注意一些细节。在加边时,只有当cnt[min]的值为1时答案才应该减1,而不是当cnt[min]的值大于等于1时答案都应该减1,这是因为在加边后,如果cnt[min]的值为1说明在加边前cnt[min]的值为0,意思是在加边前min这个人没有被杀的风险,但是在加边后min这个人有了被杀的风险,答案应该减1。这也就是为什么只有当cnt[min]的值为1时答案才应该减1,如果当cnt[min]的值大原创 2021-08-13 20:15:11 · 119 阅读 · 0 评论 -
OJ上一些有意思的题目
这两天在OJ上刷水题时偶然发现了几道蛮有意思的题,看样子还是一个系列的题,在这里整理下解题思路。先把题目链接一起放出来:支配值数目等值数目两数组最短距离可以看出这几道题是一个系列的题,而且在输入时数组已排好序。这几道题要是暴力跑的话就没什么意思了,关键是题目下面的这一行话引起了我的兴趣:你能想出O(n+m)的算法吗?加油!想出O(n+m)的算法还是有些挑战性的,在这里总结下O(n+m)的算法。支配值数目#include <stdio.h>#define N 1005int原创 2021-08-11 19:54:27 · 82 阅读 · 0 评论 -
2021年集训(8.5~8.7)
2021年集训(8.5~8.7)Data Structure?传送门//https://vjudge.ppsucxtt.cn/contest/451396#problem/A#include <stdio.h>#include <string.h>#define N 300005int L[4*N],R[4*N],tree[4*N];void Pushup(int id){ tree[id]=tree[2*id]+tree[2*id+1];}void B原创 2021-08-07 11:31:36 · 46 阅读 · 0 评论 -
2021年集训(8.2~8.4)
2021年集训(8.2~8.4)这两天疫情突然来袭,烟台的形势突然紧张起来……敌兵布阵传送门//https://vjudge.ppsucxtt.cn/contest/450704#problem/A#include <stdio.h>#include <string.h>#define N 50005int number[N],L[4*N],R[4*N],tree[4*N];void Sum(int id){ tree[id]=tree[2*id]+tre原创 2021-08-04 11:10:11 · 66 阅读 · 0 评论 -
计算几何模板(两圆相交部分的面积)
计算几何模板(两圆相交部分的面积)模板double area(double x1,double y1,double r1,double x2,double y2,double r2){ double ans; double dis=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); if(dis>=r1+r2) ans=0; else if(dis<=abs(r1-r2)) ans=r1<=r2?PI*r1*r1:PI原创 2021-07-31 21:00:31 · 190 阅读 · 0 评论 -
2021年集训(7.29~7.31)
2021年集训(7.29~7.31)Sliding Window传送门//https://vjudge.ppsucxtt.cn/contest/449966#problem/A#include <stdio.h>#include <iostream>#include <queue>using namespace std;#define N 1000005int n,k,number[N];void MIN()//队列内由小到大{ deque原创 2021-07-31 08:27:03 · 125 阅读 · 0 评论 -
2021年集训(7.26~7.28)
2021年集训(7.26~7.28)Coloring Contention传送门//https://vjudge.ppsucxtt.cn/contest/449261#problem/A#include <bits/stdc++.h>using namespace std;#define N 100005#define M 100005struct edge{ int end; int len; int next;};struct node{原创 2021-07-29 08:34:07 · 80 阅读 · 0 评论