自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (5)
  • 收藏
  • 关注

原创 Codeforces 1475 G

传送门题目大意有nnn个数,从中挑选一个最大的子集,使得集合中任意两个不同的数x,yx,yx,y,都存在x/yx/yx/y或y/xy/xy/x。思路挑选的子集排序后,$a_i_应该是前面数的倍数。那么题意就简化为:要想最终的序列排序后满足每个数是它前面所有的数的倍数最少删掉多少数。dp[a[i]]dp[a[i]]dp[a[i]]表示以i_ii​为最终序列的最大数时,最终序列有多少数。我们枚举aia_iai​的因数,记b1<=j<=mb_{1<=j<=m}b1<=j

2021-03-18 20:25:07 165

原创 Codeforces 359 C

传送门题目大意给你一个质数和一个序列a1,a2...ana_1,a_2...a_na1​,a2​...an​。计算1xa1+1xa2+...+1xan\frac{1}{x^{a_1}}+\frac{1}{x^{a_2}}+...+\frac{1}{x^{a_n}}xa1​1​+xa2​1​+...+xan​1​。对和式通分后得到st\frac{s}{t}ts​,其中,t=xa1+a2+...+ant=x^{a_1+a_2+...+a_n}t=xa1​+a2​+...+an​,现在,要求你求出sss和t

2021-03-18 20:08:34 144

原创 Codeforces 134 B

传送门题目大意假设我们有一对数字(a,b)(a,b)(a,b)。我们可以在一步中从给定的对中得到一个新的对(a+b,b)(a+b,b)(a+b,b)或(a,a+b)(a,a+b)(a,a+b)。让最初的一对数字是(1,1)(1,1)(1,1)。你的任务是找到数字kkk,也就是说,将(1,1)(1,1)(1,1)转换成至少一个数字等于nnn的一对所需的最少步数。思路dfsdfsdfs反向遍历,当KaTeX parse error: Expected 'EOF', got '&' at po

2021-03-12 21:24:16 198

原创 Codeforces 121 C

传送门题目大意问字典序第kkk大的1−n1-n1−n的排列中的只由444和777组成的数且位置上也是由444和777构成的数的个数。思路代码

2021-03-12 20:27:37 2144

原创 Codeforces 111 B

传送门题目大意给你nnn次询问,每次给你一个x[i],y[i]x[i],y[i]x[i],y[i]。然后让你输出,x[i]x[i]x[i]这个数中的因子有多少个并没有在这个数的前y[i]y[i]y[i]个数的因子中出现过。思路mapmapmap标记前面出现的因子,mp[x]=imp[x]=imp[x]=i代表xxx这个是在第iii个数出现的,这样就可以将复杂度降下来~。代码int n,x[maxn],y[maxn];int a[maxn][300];map<int,int>mp

2021-03-11 20:32:00 98

原创 Codeforces 1081 E

传送门题目大意给定长度为nnn(nnn为偶数)的数列xxx的偶数项,求出数列xxx的奇数项,使得对于任意t∈[1,n],x1+x2+...+xtt∈[1,n],x1+x2+...+xtt∈[1,n],x1+x2+...+xt为平方数,若无解输出NoNoNo,否则先输出一行YesYesYes,再输出x1,x2,x3,...,xnx1,x2,x3,...,xnx1,x2,x3,...,xn,若有多解输出任意一组解。xxx数组奇数项不超过101310^{13}1013,偶数项不超过10510^5105,n&

2021-03-09 21:24:38 89

原创 Codeforcrs 1295 D

传送门题目大意给定两个整数 a,m (1≤a<m≤1010)a,m\ (1\le a<m\le 10^{10})a,m (1≤a<m≤1010)。计算满足条件 0≤x<m0 \le x < m0≤x<m且 gcd⁡(a,m)=gcd⁡(a+x,m)\gcd(a,m)=\gcd(a+x,m)gcd(a,m)=gcd(a+x,m)的整数xxx的个数。思路令d=gcd(a,m)d=gcd(a,m)d=gcd(a,m),那么gcd(ad,md)=gcd

2021-03-03 17:32:00 113 1

原创 Codeforces 1401 D

传送门题目大意给定一棵 nnn个节点,n−1n-1n−1 条边的树。你可以在每一条树上的边标上边权,使得:每个边权都为 正整数;这 n−1n-1n−1个边权的乘积等于kkk;边权为 111 的边的数量最少。定义 f(u,v)f(u,v)f(u,v) 表示节点uuu到节点 vvv的简单路径经过的边权总和。你的任务是让∑i=1n−1∑j=i+1nf(i,j)\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}{f(i,j)}∑i=1n−1​∑j=i+1n​f(i,j)最大。最终答案可能

2021-03-03 16:48:59 127 1

原创 Codeforces 1034 A

传送门题目大意给你nnn个数,去掉尽量少的数使得剩下数的gcdgcdgcd比原来的大,无解输出−1-1−1。思路代码

2021-03-02 16:21:13 128

原创 POJ 1988 Cube Stacking(并查集)

传送门题目大意两个人在玩叠箱子游戏,这个游戏有两个操作。1.M x y1.M\ x\ y1.M x y代表把xxx所在的一列整体放倒yyy所在一列之上2.C x2.C\ x2.C x代表数一下xxx下方有几个箱子思路并查集fa[i]fa[i]fa[i]代表i的父亲结点num[i]num[i]num[i]代表包括iii结点在内的其子树结点的个数dis[i]dis[i]dis[i]表示iii点到根结点的距离在合并函数过程中不断进行路

2021-01-22 23:49:25 100

原创 购物券(DFS+哈希)

题目大意【题目描述】小Y得到了两张价值不菲的SHOP购物券,所以他决定去买N件礼物送给朋友们。小Y选好了n件礼物,并且它们的价格之和恰好为两张购物券的面值之和。当小Y被自己的聪明所折服,高兴地去结账时,他突然发现SHOP对购物券的使用有非常奸诈的规定:一次只允许使用一张、不找零、不与现金混用。小Y身上根本没有现金,并且他不愿意放弃挑选好的礼物。这就意味着,他只能通过这两张购物券结账,而且每一张购物券所购买的物品的总价格必须精确地等于这张购物券的面额。怎样才能顺利地买回这n件礼物呢?你的任务就是帮助小Y确

2021-01-22 21:45:13 206 1

原创 LOJ 10077 最短路计数(dij)

传送门题目大意给出一个 NNN 个顶点 MMM 条边的无向无权图,顶点编号为 1∼N1\sim N1∼N。问从顶点 111 开始,到其他每个点的最短路有几条。思路dijdijdij求最短路增加ansansans数组记录答案如果刚计算出最短路,ans[v]=ans[u]ans[v]=ans[u]ans[v]=ans[u]如果最短路相同,ans[v]+=ans[u]ans[v]+=ans[u]ans[v]+=ans[u]代码int n,m,q=0;;struct Edge{ int u;

2021-01-22 21:16:29 181

原创 POJ 1733 Parity game(种类并查集)

传送门题目大意输入n表示有一个长度为n的0,1字符串, m表示接下来有m行输入, 接下来的m行输入中x, y, even表示第x到第y个字符中间1的个数为偶数个, x, y, odd表示第x到第y个字符中间1的个数为奇数个, 若m句话中第k+1是第一次与前面的话矛盾, 输出k;思路若x, y之间1的个数为偶数个, 那么1~x 与1~y中1的个数同奇偶性, 反之则异奇偶性, 我们可以将其理解为若输入x, y, even, 即x, y属于同种, 反之则属于不同种。输入的数据中x, y是闭区间, 不好处理

2021-01-22 01:04:23 89

原创 POJ 1984 Navigation Nightmare(带权并查集)

传送门题目大意有多个点,在平面上位于坐标点上,给出一些关系,表示某个点在某个点的正东/西/南/北方向多少距离,然后给出一系列询问,表示在第几个关系给出后询问某两点的曼哈顿距离,或者未知则输出-1。思路op用来表示方向,东南为正方向如果是南北,改的是x轴,东西改的是y轴代码int fa[maxn];int disx[maxn],disy[maxn];int n,m;struct node{ int x; int y; int v; char dic[10];//方向 }str[

2021-01-19 20:35:57 73

原创 LDU----The Legendary master CoolGuang!(威佐夫博弈)

题目大意:有两堆各若干个物品,两个人轮流从某一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。思路威佐夫博弈代码#include<bits/stdc++.h>using namespace std;int main(){ int n,m; cin>>n>>m; { if(n<m) swap(n,m); int k=n-m; int a=(k

2021-01-19 16:35:59 257

原创 POJ 1456(贪心+思维并查集)

传送门题目大意给出一些商品的价值与截止时间,问最多能卖多少钱思路贪心先卖出价值最大的商品,先用按照价值从大到小sort排序。假如能卖出,那么和他截止日期在同一天的就必须比他早卖出,就需要一直往前找,若是为0,就证明不能卖出了。代码struct node{ int p; int d;}str[10009];int cmp(node a,node b){ return a.p>b.p;}int fa[maxn];int find(int x){ if(fa[x]==-1)

2021-01-17 22:41:00 94

原创 POJ 1182 食物链(带权并查集||种类并查集)

传送门题目大意动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。1) 当前

2021-01-14 20:38:12 84

原创 LDU---2021年初寒假训练第8场 B.MOO游戏

Description众所不知的,奶牛们很喜欢玩智力游戏。John农夫最近发明了一个有趣的“找单词”游戏。 这个游戏的例子如下:USOPENOOMABOMOOMXOPQMROM作为奶牛,他们只对单词“MOO”有兴趣,这个可能会出现在找单词游戏中的任何地方,可能是水平的,可能是垂直的,也有可能是对角线的出现,也就是找相邻四个位置和对角线位置。上面的例子出现了6个MOO。John农夫也是单词游戏的粉丝。 由于奶牛们不想在他们有机会试一下之前,John就把解开了,他们把游戏的内容用一个代替密码给加密

2021-01-14 19:08:46 533 1

原创 Codeforces 687 B

传送门题目大意c[]c[]c[]是长度为nnn的序列,问lcm(c1,c2...cn)lcm(c_1,c_2...c_n)%klcm(c1​,c2​...cn​)是否为0,是输出YesYesYes,不是输出NoNoNo。思路分解质因数法求出lcmlcmlcm,将kkk分解质因数,只要kkk质因数的幂次都小于等于lcmlcmlcm中的幂次,就是YesYesYes。代码bool vis[maxn];//标记非素数,0是素数int primer[maxn/10];//存素数int cnt=0;//

2021-01-13 15:47:05 169 1

原创 Codeforces 665 D

传送门题目大意给你一个长度为n的序列a,找到最大的子序列,使得子序列内任意两个数的和为素数思路因为j>i,所以可以输出1个数。答案最后分为四种情况:全是1cnt个1,另一个数+1是素数两个数和是素数一个数代码int n;int a[maxn];bool vis[maxn];//标记非素数,0是素数int primer[maxn/10];//存素数int cnt=0;//记录素数个数,void find_primer(){ for(int i=2;i <=

2021-01-13 14:49:32 156

原创 LDU----质数

A:轻拍牛头题目大意求一个数能被序列中多少个数整除思路每个数的答案记录在ans[]中计算出序列中每个数出现的次数vis[],从小到大枚举数a[i]的倍数,若是倍数存在,ans[倍数]+=vis[a[i]]代码int a[maxn],vis[maxn];int ans[maxn];int main(){ int n; scanf("%d",&n); int max1=-inf; for(int i=1;i<=n;i++){ scanf("%d",&a[i]

2021-01-13 12:52:35 132

原创 Codeforces 1228 C

传送门题目大意思路找质因子的贡献,即n!n!n!有多少个质因子.代码ll x,n;ll ans=1;vector<ll>v; void init(ll tmp){ for(ll i=2;i*i<=tmp;i++){ if(tmp%i==0){ while(tmp%i==0){ tmp/=i; } v.push_back(i); } } if(tmp>1) v.push_back(tmp);} int main(){

2021-01-09 21:58:43 106

原创 Codeforces 490 C

传送门题目大意将sss分成两个部分,其中,左边被aaa整除,右边被bbb整除,且不能有前导00≤s≤1010000000\leq s\leq 10^{1000000}0≤s≤101000000,0≤a,b≤1080\leq a,b\leq 10^80≤a,b≤108思路预处理前缀模和后缀模就好代码char s[maxn];ll a,b;ll c[maxn],d[maxn];int main(){ scanf("%s",s+1); scanf("%lld%lld",&a,&a

2021-01-07 20:44:17 85

原创 Codeforces 582 A

传送门题目大意有一个长度为nnn的数列aaa,它可以生成一个n2n^2n2的数表,数表的第iii行第jjj列存放的数字是gcd⁡(a[i],a[j])\gcd(a[i],a[j])gcd(a[i],a[j]) 即a[i]a[i]a[i]和a[j]a[j]a[j]的最大公因数。一个例子:举个例子,上面那个表,就是由数列a[]={4,3,6,2}a[]=\{4,3,6,2\}a[]={4,3,6,2}生成的。现在我们要做这样一件事情:将这个数表中的这n2n^2n2个数打乱,得到一个长度为n2n^2n

2020-12-24 10:25:21 98

原创 Codeforces 66 D

传送门题目大意构造一个长度为n的序列使其满足下列条件:任意两数的最大公约数不等于1所有数的最大公约数等于1任意两数互不相同若有多组解,输出任意一组。若无解,输出-1。 输出的数长度不能超过100位。思路...

2020-12-17 17:25:45 135

原创 Codeforces 1325 D

传送门题目大意给两个整数u,v,(u,v≤1018)u,v,(u,v\leq 10^{18})u,v,(u,v≤1018),求出长度最短的数组,使得数组内元素按位异或为uuu,元素之和为vvv。如果有解,输出两行,第一行输出一个数nnn,第二行输出nnn个数,表示数组里的元素。如果有多个答案,输出任意一组。如果无解,输出−1-1−1。思路代码...

2020-12-11 14:36:59 70

原创 Codeforces 546 D

传送门题目大意给你a,b(1≤b≤a≤5∗106)a,b(1\leq b\leq a\leq 5*10^6)a,b(1≤b≤a≤5∗106)表示a!/b!a!/b!a!/b!表示的数,你每次可以对这个数除以xxx(x>1x>1x>1,且xxx为这个数的因子)使它变成a!/b!/xa!/b!/xa!/b!/x,问你最多可以操作多少次使这个数变成111。思路就是b+1b+1b+1乘到aaa的质因子幂次的和代码bool vis[maxn];//标记非素数,0是素数int prime

2020-12-09 19:52:06 90

原创 Codeforces 1349 A

传送门题目大意给定长度为nnn的序列a1,a2...ana_1,a_2...a_na1​,a2​...an​.设可重集S={lcm(ai,aj)∣1≤i<j≤n}S=\{{lcm(a_i,a_j)|1\leq i<j\leq n}\}S={lcm(ai​,aj​)∣1≤i<j≤n}.求出gcd(S)gcd(S)gcd(S)1≤n≤105,1≤ai≤2∗1051\leq n\leq 10^5,1\leq a_i\leq 2*10^51≤n≤105,1≤ai​≤2∗105.思路

2020-12-08 15:25:20 90

原创 Codeforces 75 C

传送门题目大意找出a,ba,ba,b的最大公因子,然后给几个查询,每次查询包含l,rl,rl,r两个数字,查询在l,rl,rl,r之间的a,ba,ba,b的最大公因子思路先找到a,ba,ba,b的最大公约数gcdgcdgcd,将gcdgcdgcd的因子求出来,每次询问二分寻找小于rrr的最大的因子,看看是否大于等于lll即可。代码int gcd(int a,int b){ return !b?a:gcd(b,a%b);} int x[maxn];int main(){ int a,b

2020-12-07 21:35:34 102

原创 Codeforces 237 C

传送门题目大意现在给定一个正整数序列a,a+1,a+2,...b,(a≤b)a,a+1,a+2,...b,(a\leq b)a,a+1,a+2,...b,(a≤b),请找出一个最小值lll,使其满足对于任意一个长度为lll的子串,都包含kkk个质数。找到并输出符合要求的最小值lll, 如果不存在符合要求的长度lll, 则输出−1-1−1。思路用队列维护,保证队列有k个数,取最大的范围就好代码bool vis[maxn];//标记非素数,0是素数int primer[maxn/10];//存素

2020-12-07 20:08:02 77

原创 Codeforces 154 B

传送门题目大意n个数 m个操作‘+’代表打开对撞机‘-’ 代表关闭对撞机前提保证打开的对撞机两两互质打开:可以激活 输出“Success”已经激活了 输出“Already on”与j冲突了,即不能打开 输出“Conflict with j”关闭:可以关闭 输出“Success”已经关闭了 输出“Already off”思路找到每个的质因子,在打开时判断是否有质因子已经打开的就好了代码///打表最小质因子 bool vis[maxn];//标记非素数,0是素数int pr

2020-12-07 11:05:43 134

原创 Codeforces 1025 B

传送门题目大意给出n对数,问是否存在一个数,使得没对数都能找出至少一个数的因子包含该数。思路找到第一对数所有的质因子,暴力查找其他组有没有即可…好像写麻烦了…代码bool vis[maxn];//标记非素数,0是素数int primer[maxn/10];//存素数int cnt=0;//记录素数个数,void find_primer(){ for(int i=2;i <=maxn;i++){ if(!vis[i])primer[cnt++]=i;

2020-12-07 10:53:36 60

原创 Codeforces 399 B

传送门题目大意

2020-12-04 11:16:24 98

原创 POJ 1753 Flip Game(二进制枚举)

传送门题目大意有一个4*4的方格,每个方格中放一粒棋子,这个棋子一面是白色,一面是黑色。游戏规则为每次任选16颗中的一颗,把选中的这颗以及它四周的棋子一并反过来,当所有的棋子都是同一个颜色朝上时,游戏就完成了。现在给定一个初始状态,要求输出能够完成游戏所需翻转的最小次数,如果初始状态已经达到要求输出0。如果不可能完成游戏,输出Impossible。思路直接二进制枚举所有状态就好代码string cc[10];int vis[10][10];//b++;int solve(int num){

2020-12-02 21:17:08 123

原创 POJ 2436 Disease Management(二进制枚举+位运算)

传送门题目大意给出n头牛的得病的种类情况,一共有d种病,要求找出最多有K种病的牛的数目;思路因为d<15,所以可以进行二进制枚举,枚举这个病存在或者不存在,1存在,0不存在,然后和每头牛进行或运算,如果或运算之后还相等,那就说明这头牛携带病毒中类小于等于当前病毒种类,那么cc++,最后取个最大值就好了。注意位运算优先级,卡了好久…代码int cow[maxn];int check(int num){ int count=0; while(num){ num

2020-12-02 19:13:29 111

原创 Codeforces 1344 A

传送门题目大意给你一个无限长的数轴还有一个大小为n的整数数组a0,a1...an−1a_0,a_1...a_{n-1}a0​,a1​...an−1​对于数轴上的所有表示整数的点,我们需要将它们同时移动。对于任意一个整数k,k 将会被移动到k+ak mod nk+a_{k\ mod\ n}k+ak mod n​所在的位置。现在请你判断移动后是否有任意两个整数的位置相同思路对0到n-1进行模拟操作,判断是否重合即可代码int a[maxn];map<i

2020-12-02 13:16:37 97

原创 POJ 1577 Falling Leaves(二叉搜索树)

传送门题目大意构造一棵树,输出其先序遍历。根据字母表顺序,左子树上的任意结点字母都在根结点前面,而右子树上的任意结点字母都在根结点后面。其中输入数据很独特,首行把二叉树的所有叶子结点列出来组成一个字符串,然后从去掉叶子结点后所形成的新二叉树中再找叶子结点,再组成一个字符串,依次进行下去,直到剩下一个根结点为止。思路可以把输入数据保存在一个二维字符数组里面,然后建立一个结构体储存二叉树的结点与左右孩子信息。代码struct node{ char val; int l; int r;}tr

2020-12-01 15:50:08 169

原创 POJ 2418 Hardwood Species(字典树||map)

字典树传送门题目大意给你很多个单词,要你统计单词出现的次数,最后按字典升序输出思路因为字典序的先序遍历是排序的,所以只需建好树后先序遍历一下树就可以满足题目要求的输出方式了。裸的Trie树,输出按字符串的字典序输出,所以插入的时候,把第一次出现的字符串暂时保存起来。以后排完序在查询输出即可字典树代码struct node{ int val; int child[130]; node(){ val=0; memset(child,0,sizeof child); }}tire[

2020-12-01 13:18:57 142

原创 杂项链接

二维前缀和

2020-11-30 21:08:00 61

原创 LDU 2020下半年十三周训练 D 单词(拓扑排序)

【问题描述】在一种未知语言中,很多单词被发现了,但是他们的字母的字典序我们是不知道的。我们知道的是,这些单词是按照字典序从小到大排列的。或者找出这种语言唯一的字母的字典序,或者得出这种方案是不存在的,或者得出有很多种这样的方案。【输入格式】第一行包括一个正整数n(1 <= n <= 100),表明单词的数量。接下来n行,每行一个单词,每个单词最多包含10个小写的英文字母。保证单词以未知语言的字典序给出。【输出格式】有且仅有一行,输出包含所有字母的字典序。如果没有这种字典序,则输出“

2020-11-30 19:52:44 148 1

2020牛客暑期多校集训营第三场题解.pdf

题解

2021-01-20

wemeetapp.exe

腾讯会议安装包

2021-01-20

数据输出c++.cpp

适合新手数据输出

2021-01-20

数据生成c++.cpp

适合新手数据生成

2021-01-20

大学电路 电路实验部分.zip

大学的电路实验

2021-01-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除