- 博客(29)
- 收藏
- 关注
原创 F. Foreign Football-2022-2023 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2022)
当然出现位置不能是0或者lena,如果这样的话说明a=b且中间没有任何可以截取的,说明只存在一支队伍另一只队伍不存在,所以位置数--,最后判断出现位置数除去这两个位置外是否还有其他的出现位置,并记录可能的出现位置。思路:1.n>=3时,存在公式,设所有队伍名称的长度和为len,那么一行来说就是len+(n-2)leni,那么所有的加起来就是(2*n-2)len,我们可以求出len,然后进而可以求出leni即每个队伍的队伍名长度。求这n个队伍的队伍名,当然有可能存在多种情况或者不存在。代码有些臭,还是太菜。
2023-08-08 12:46:34
232
原创 B. Berry Battle-2022-2023 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2022)
题目大意:在一颗树上的每个节点都有一个果子和一只蚂蚁,你的目的是摘掉树上所有的果子,你每摘一个果子树上不在该点的蚂蚁就会往该点移动一步,在该点的蚂蚁则不动,当所有的蚂蚁都在一个点的时候你就会被蚂蚁杀死,现给定n-1条边,让你判断是否存在这样一个顺序使得你可以摘完所有的果子且不被蚂蚁杀死。若存在,输出YES并输出该排列,否则输出NO。思路:找到树的重心,这里重心的意思是树上每个点到该点的距离最大值最小的点,可以先跑dfs求出树的直径,到两端距离最小的点即为重心。
2023-08-07 08:22:08
194
原创 G. Graduation Guarantee-2022-2023 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2022)
先将概率从大到小进行排序,若该题做对的概率较小的话,不选这题得到k分的概率要比选这题的高,所以用dp[i][j]跑出前i题做对j题的概率是多少,然后遍历找出最大值。题目大意:有n道题,要得k分,每道题做对+1分做错-1分,可以选择做或者不做,每道题做对的概率是pi,求能到达k分的最大概率是多少。思路:贪心+期望dp。
2023-08-06 10:26:49
155
原创 C. Cosmic Commute-2023-2024 ICPC German Collegiate Programming Contest (GCPC 2023)欧美icpc
思路:如果没有虫洞开始想,若没有则就是一条最短路。但是在某个点存在虫洞的时候,虫洞所连接的剩余所有虫洞都有可能到达,那么此点x处的期望就是dis1[x](从1->x的最短路)+sumof(dis2[y](从n->y的最短路且y是x所连接的一个虫洞))/(k-1),那么我们两边bfs求出1->x的最短路和n->x的最短路后,枚举一遍虫洞就可找出最小值。题目大意:n个点,m条边,k个虫洞(虫洞之间相互连接不消耗任何代价可以从一个虫洞到达随机的另一个虫洞),问:从1->n的最小期望多少,写成分数形式。
2023-08-05 15:36:56
419
原创 C. Constructive Problem-1820
题目大意:给你一个数组a,有n个元素, 每个元素都是0->n-1里面的一个,可能拥有重复元素,定义mex为0->n中第一个没有出现在a中的数,问,想让这个数mex变成mex+1,能否做到。(2)当mex<n时,肯定能构成,因为如果一个n个数组中的数由0->n-1构成,但是有的数没出现,必然有重复数据,那么我们只需要拿走重复数据中的一个数改成mex即可。(1)当mex>=n,此时肯定无法构成,因为一旦构成,便会越界。
2023-07-04 20:35:50
58
1
原创 D1. LuoTianyi and the Floating Islands (Easy Version)-1825
内部节点的贡献:即方块内部对红点的贡献,即他所有子树集合中选出一个点和这个红点相连,即dis[u]-1;还有就是各个子树之间选择两个点相连经过红点。最终我们只需要在dfs时加上外部贡献即可,内部节点可以找出规律:内部总贡献即(n-1)*n/2。那么我们计算每个点的贡献值,首先处理出以当前节点为根节点的子树的节点数。题目大意(简单版本):给你n个点,构成·一棵树,给你一个数k(只有1,2,3),问任选k个点,这棵树上好点(一个点到这k个点的路径最短)的期望(好点的总个数/选择k个点的情况树数)。
2023-06-30 12:47:44
85
原创 D. Fish Graph——869
思路: 我们通过vector数组记录无向图,暴力枚举每个点,找到度数大于等于4的点设为监测点,然后标记他的所有与他直接相连的点,每次dfs这个相连的点,并且设置一个fnei(第一个邻居)作为参照,当now这个点已经向下dfs搜索到了当前所枚举的监测点的另一个邻居说明当前监测点存在一个环(自己和两个邻居相连,dfs出来的路径再相连),记录路径,之后再找两条和监测点的两个邻居不同的两个点即可。题目大意:给你一张无向图,让你判断是否存在鱼图,若有则输出其组成边和“YES”,否则输出“NO”。
2023-06-27 18:03:00
145
原创 C. k-th equality-880
且由此公式我门可以枚举a而确定b,最终求出c。pow(10,C-1)<=a+b<=pow(10,C)-1,由此公式,可得:max(pow(10,B-1),pow(10,C-1)-a)<=b<=min(pow(10,B)-1,pow(10,C)-1-a),我们可以根据b的l和r的端点范围,来判断,k是否在这个范围之内,每次减去根据一个a而求出的b的范围,最终在a枚举结束前,如果有k落入这个范围之中,我们就可以输出了。思路:巧妙地计算公式+枚举。
2023-06-24 22:02:35
103
原创 C. Dreaming of Freedom-870
对于两种特殊情况和1,我们比较好处理,对于2,我们只需要找出2->m中是否存在n的质因数即可(我们可以通过欧拉筛法,预处理出1->1e6的每个数的质因数,然后看看m比第一个质因数大还是小就可以了,欧拉筛筛质因数绝对是从小到大的顺序)。思路:我们以最坏的方法计算,如果n%m==0,那么就不会停止;题目大意:有n个人和m个算法,这n个人给这m个算法投票,每一轮只留下票数最多的,去掉其他的,然后再进行下一轮。2.n>m,此时,如果2->m中有一个数是n的质因数,那么n个人就可以把m凑成这个数,然后不会停止。
2023-06-24 15:59:08
111
原创 C. Game with Reversing-879
题目大意:给你两个字符串,s,t。有两人A,B,A每次修改两个字符串中的一个字符串的一个字符,B每次倒序一个字符串。A想要尽快结束,B想要尽晚结束。问游戏结束需要多长时间。思路:B得倒序其实是跟着A来的,对字符串的实质没啥影响,所以B的操作可以加到A上去,一次操作变两次。然后看两串是正序操作少还是逆序操作少。
2023-06-23 22:47:50
242
1
原创 D. Running Miles-870
首先我们同样是分解公式:b1+b2+b3-(r-l)变成,b1+b2+b3-(r-mid)-(mid-l),即b1-(mid-l)+b2+b3-(r-mid)。由此公式我们可以看出我们只需要枚举b2,用一个数据结构来维护b1-(mid-l)和b3-(r-mid)——线段树。分解公式,b1+b2+b3-(r-l)可以分解成:b1+l+b2+b3-r;题目大意:给你一个数组,让你选中这个数组中的一个子段,求出子段中最大的三个值b1,b2,b3,让这个公式b1+b2+b3-(r-l)的值最大。
2023-06-23 11:08:05
70
1
原创 D. Survey in Class-879
题目大意:一个老师有n个学生,m个问题,学生不是每个都把m个问题都搞明白了,每次给出n个区间,表示这i-th个学生搞明白了这个区间内的问题,这个问题搞明白的学生手伸高+1,没搞明白的-1,原本都是0。2.p[i].l>r,此时为p区间长度p[i].r-p[i].l+1。3.p[i].r<l,此时即p区间长度p[i].r-p[i].l+1。1.p[i].l<=r,此时ans长度为最大值的p[i].r-r;4.p[i].r>=l,此时为l-p[i].l。
2023-06-23 09:05:21
125
1
原创 A. Boredom——cf260
题目大意: 给你一个长度为n的数组,有一个规则就是你选择数x并且拿走之后,x-1和x+1的数都必须被删除,拿走一个数之后增加一个数的分数(删除的数不算),问最大分数是多少。注意用i-1为主要选择点,i为删除点。
2023-06-20 20:49:28
89
原创 A. Cut Ribbon——cf119
题目大意:类似于一种完全背包,给你n,a,b,c,n是背包容量,a,b,c是物品重量,物品价值为1。要用a,b,c填满n,求最大的a,b,c的总个数。换句话说就是公式x*a+y*b+z*c=n,求x+y+z的最大值。
2023-06-20 17:48:07
45
原创 G. Hits Different——cf874
题目大意:给出如图的木块摆放形式,并且击中一个木块,上面的与之相关的木块就会倒下,每块木块的权值为该木块的顺序编号的平方,问倒下的木块中权值之和是多少。所求倒下的木块编号,即该点的主对角线左上部分加上该点上面的点的左上部分所有的木块。这样可以前缀和预处理出该点的左上角部分加本身的s数组。不可以把前缀和设置成左上角加正上方因为这样会重复。如若如此5^2的点的前缀和中和9^2的前缀和中。思路:改成正三角形比较直观易懂。,重复的部分是紫色方框内部元素。
2023-06-20 09:24:56
44
原创 E. Round Dance——圆舞——cf874-3
思路:首先建立无向图,根据题目意思,不一定为连通图,利用vector和set建图和去重边,可以求出每个点的邻居的个数,利用标记vis来求有多少连通块,并且求出该连通块是环还是线(可以是纯线,也可以是一个环多出一块的线)。首先线是可以两两相连成为环或者线,但是环是不可能的,它只能是独立的一个,如:最终连通块状态为:10环,5线,则最少就是把所有的线全部连起来,即1线;若没有线,则就是环的个数。题目大意:给你n个人,这n个人跳圆舞——就是一群人围成环,问最多和最少跳圆舞有多少组。
2023-06-19 13:29:15
144
原创 Problem A: 求图形的面积和体积——更规则的做法
带有小数的格式默认保留两位,无小数的不保留,所以无需保留小数的格式控制。Graphic->Solid和Shape,而Solid->Cube和Ball,Shape->Circle和Square,这才是符合题目要求的一种继承树
2022-06-07 19:25:33
296
1
原创 uva712-s树
1.x1,x2,x3是有用的他是每一个命令的顺序,例:x2,x1,x3 011,实际命令101 。2.要输出的数的位置就是实际命令的二进制
2022-06-04 14:26:35
138
原创 Problem F: 汽车、客车、货车——析构多态
析构多态,virtual是实现多态的关键,也是动态联编的关键,主函数中触发形式是父类指针指向子类对象或父类引用子类,如果没有virtual这个关键字,他会根据指针类型进行析构,析构父类函数,加上之后指针会找到自己的实际函数也就是子类函数,这里是子类析构函数,然后根据析构函数的析构顺序先后后前的方法,一个一个析构,如果有连环继承,则需要根据指针或引用根据类型找父类,添加合适位置的virtual...
2022-06-02 20:15:14
342
原创 Problem A: 可变长数组 --------vector<T>指针做法
typename是将vector::iterator i转换成类型,不加的话,编译器会认为vector::iterator i是一种成员变量,编译不通过
2022-06-02 19:35:46
244
原创 Problem H: STL——多重集的插入和删除
标题#include <string>#include<iostream>#include<iomanip>#include<sstream>#include<algorithm>#include<vector>#include<queue>#include<deque>#include<list>#include<set>using namespac..
2022-05-24 20:49:53
76
原创 Problem G: STL——邮票 允许重复元素的set——multiset
标题#include <string>#include<iostream>#include<iomanip>#include<sstream>#include<algorithm>#include<vector>#include<queue>#include<deque>#include<list>#include<set>using namespace ..
2022-05-24 20:48:02
101
原创 Problem E: STL——管道二 deque的使用
#include <string>#include<iostream>#include<iomanip>#include<sstream>#include<algorithm>#include<vector>#include<queue>#include<deque>using namespace std; int main(){ int n; cin>>n; .
2022-05-24 20:44:41
76
原创 Problem F: STL——管道一 简单的queue
#include <string>#include<iostream>#include<iomanip>#include<sstream>#include<algorithm>#include<vector>#include<queue>using namespace std; int main(){int n;cin>>n;int...
2022-05-24 20:40:33
79
原创 STL_字符串排序
#include <string>#include<iostream>#include<iomanip>#include<sstream>#include<algorithm>#include<vector>using namespace std;int main(){ int n; cin>>n; vector<string> ss; string s;...
2022-05-24 18:09:59
159
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人