自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Codeforces G. A/B Matrix (贪心 / 思维) (Round #644 Div.3)

传送门题意: 给出 n, m, a, b四个数,试问是否可以列出一个每行a个1,每列b个1,其余全是0的 n * m的矩阵? 如果可以输出"YES"并打出一个可行的矩阵,否则输出"NO"。思路:显然只有横着数的n * a与竖着数的m * b相等才会有可行的方案然后每行一次填充a个1即可,每行的1相连,下一行的1紧接上一行1的后面。刚开始一直处理不好1的阶梯填充,后面才想通其实很简单,只需要每一行循环填充a次,直接找到 (p + 1) % m的位置即可。代码实现:#include <

2020-05-31 09:48:30 367

原创 Codeforces C. Mixing Water(数学 / 思维) (Round 88 Rated for Div.2)

传送门题意: 存在温度为h的热水喝温度为c的冷水(c < h),你能以 +h, +c, +h, +c, +h……的循环顺序像一个无限大的杯子加水,使得其内的水温无限接近温度t,试求满足条件的最小杯数。思路:无论怎么样加水,温度都会是不变或者下降趋势,所以可以分为两种情况:(设冷水为x杯)t >= (h + c) / 2,热水也是x杯,与冷水以1:1比列加入。因为必须满足加入顺序,又得接近t。t < (h + c) / 2,热水为x + 1杯。因为可以看出温度 y = ((x

2020-05-30 15:05:50 322

原创 耍杂技的牛

传送门题意: 农民约翰的N头奶牛(编号为1…N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。这N头奶牛中的每一头都有着自己的重量Wi以及自己的强壮程度Si。一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可能性越高。您的任务是确定奶牛的排序,使

2020-05-29 12:16:29 303

原创 货仓选址(贪心 / 思维)

传送门题意: 在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数N。第二行N个整数A1~AN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤100000输入样例:46 2 9 1输出样例:12思路:问题可以转化为目标点与a[1]和a[n]之间的距离和,加上目标点与a[2]与a[n -

2020-05-28 23:21:20 497

原创 Huffman树:合并果子

传送门题意: 在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以达达在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使达达耗费的体力

2020-05-28 09:26:03 200

原创 区间覆盖

传送门题意: 给定N个闭区间[ai,bi]以及一个线段区间[s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出-1。输入格式第一行包含两个整数s和t,表示给定线段区间的两个端点。第二行包含整数N,表示给定区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需最少区间数。如果无解,则输出-1。数据范围1 ≤ N ≤ 10^5,−10^9 ≤ ai ≤ bi ≤ 10^9,−10^9 ≤ s ≤

2020-05-27 20:06:42 238

原创 Codeforces Round #644(Div.3) F. Spy-string(暴力)

传送门题意: 给你n个字符串,试求出一个答案字符串ans,使得ans与每个字符串最多相差一个字符。求不出这样的ans就输出-1。思路:每次先取ans为第一个字符串,直接枚举26个字母改变每个位置再判断其是否合法(与其他n - 1个字符串只相差一个字符)最开始我用了IOS关闭输入输出流,又混用了cout和puts,就本地编译和提交编译的结果不一致,一直wa样例,555~代码实现:#include <cstdio>#include <cstring>#include

2020-05-26 20:19:57 158

原创 区间分组

传送门题意:给定N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出最小组数。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示最小组数。数据范围1 ≤ N ≤ 10^5,−10^9 ≤ ai ≤ bi ≤ 10^9输入样例:3-1 12 43 5输出样例:2...

2020-05-26 10:19:13 450

原创 最大不相交区间数量

传送门题意:给定N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示可选取区间的最大数量。数据范围1 ≤ N ≤ 10^5,−10^9 ≤ ai ≤ bi ≤ 10^9输入样例:3-1 12 43 5输出样例:2思路: 其实这个题我上一题的代码一摸一样,只不过是思考的角度和证明的方

2020-05-25 10:44:24 635

原创 bool值的运用以及 and, not, in, not in的用法

python:C:python的and和&&,or和||,not和!是等效的;不过in和not in在C语言里面没有,是个查询很方便的东西

2020-05-25 10:16:08 684

原创 print()函数与变量赋值

print()函数变量的赋值和c语言类似,也会有覆盖。

2020-05-25 10:14:35 1073

原创 break,continue,pass,else语句用法

可以看出,break与continue和C的用法是一样的。break:continue:pass:和英文意思一样就是跳过else:没想到吧,else竟然还可以和循环套用(这里改成while循环用法一样)...

2020-05-25 10:13:51 202

原创 区间选点

传送门题意:给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1 ≤ N ≤ 10^5,−10^9 ≤ ai ≤ bi ≤ 10^9输入样例:3-1 12 43 5输出样例:2思路:将每个区间按右端点从小到大排序从

2020-05-25 10:09:13 321

原创 匈牙利算法:二分图的最大匹配

传送门题意:给定一个二分图,其中左半部包含n1个点(编号1 ~ n1),右半部包含n2个点(编号1~n2),二分图共包含m条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。二分图的最大匹配:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最大匹配数。输入格式第一行包含三个整数 n1、 n2 和 m。接下来m行,每行包含

2020-05-24 17:17:51 326

原创 染色法判定二分图

传送门题意:给定一个n个点m条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数n和m。接下来m行,每行包含两个整数u和v,表示点u和点v之间存在一条边。输出格式如果给定图是二分图,则输出“Yes”,否则输出“No”。数据范围1≤n,m≤10^5输入样例:4 41 31 42 32 4输出样例:Yes思路:二分图:当且仅当图中不含奇数环(边数是奇数的环)原理:先把起点染色为1,与起点相连的所有点染色为2,与2相连的再染色为1;

2020-05-23 20:04:25 355

原创 Kruskal:求最小生成树

传送门题意:给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。由V中的全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。输入格式第一行包含两个整数n和m。接下来m行,每行包含三个整数u,v,w,表示点u和点v之间存在一条权

2020-05-22 19:28:37 561

原创 Codeforces 1342 D. Multiple Testcases

题目入口题意:给你n个数的数列m和k个数的数列c,要求将m序列分成经量少的组,每组必须满足不超过c[i]个数大于等于i的条件。思路:用sum[i]记录大于等于i的个数,那么ans = max(ans,sum[i] / c[i]),其中sum[i] / c[i]上取整。再将原序列m升序排列,直接将其i % ans 对号入座进入答案组中。代码实现:#include <cstdio>#include <cstring>#include <cmath>#in

2020-05-21 23:11:18 142

原创 Prim:求最小生成树

题目入口题意:给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。由V中的全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。输入格式第一行包含两个整数n和m。接下来m行,每行包含三个整数u,v,w,表示点u和点v之间存在一条

2020-05-21 19:39:09 620

原创 Floyd求最短路

题目入口题意:给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。数据保证图中不存在负权回路。输入格式第一行包含三个整数n,m,k接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。接下来k行,每行包含两个整数x,y,表示询问点x到点y的最短距离。输出格式共k行,每行输出一个整数,表示询问的结果,若询问两点间不存在路径

2020-05-20 17:44:27 279

原创 acwing 852. spfa判断负环

添加链接描述题意:给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你判断图中是否存在负权回路。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式如果图中存在负权回路,则输出“Yes”,否则输出“No”。数据范围1≤n≤2000,1≤m≤10000,图中涉及边长绝对值均不超过10000。输入样例:3 31 2 -12 3 43 1 -4输出样例:Yes思路:原理:还是和bel

2020-05-19 16:36:52 244

原创 spfa求最短路

题目入口题意:给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。数据保证不存在负权回路。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出”impossible”。数据范围1≤n,m≤10^5,图中涉及边长绝对值均不超过10000。输入样例

2020-05-18 17:20:56 212

原创 bellman-ford:有边数限制的最短路

题目入口题意:给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出从1号点到n号点的最多经过k条边的最短距离,如果无法从1号点走到n号点,输出impossible。注意:图中可能存在负权回路 。输入格式第一行包含三个整数n,m,k。接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示从1号点到n号点的最多经过k条边的最短距离。如果不存在满足条件的路径,则输出“impossible”。数据范围1≤n,k

2020-05-17 18:11:39 321

原创 Dijkstra求最短路 II(堆优化)

题目入口题意:给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为非负值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出-1。数据范围1≤n,m≤1.5×10^5,图中涉及边长均不小于0,且不超过10000。输入样例:3 31 2 22 3 11 3

2020-05-16 13:15:00 320 1

原创 Dijkstra求最短路 I (朴素)

题目入口题意:给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出-1。数据范围1≤n≤500,1≤m≤10^5,图中涉及边长均不超过10000。输入样例:3 31 2 22 3 11 3 4输出

2020-05-15 15:07:51 369

原创 bfs:有向图的拓扑序列

题目入口题意:给定一个n个点m条边的有向图,点的编号是1到n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之前,则称A是该图的一个拓扑序列。输入格式第一行包含两个整数n和m接下来m行,每行包含两个整数x和y,表示存在一条从点x到点y的有向边(x, y)。输出格式共一行,如果存在拓扑序列,则输出拓扑序列。否则输出-1。数据范围1≤n,m≤10^5输入样例:3

2020-05-14 17:23:50 1262

原创 bfs:图中点的层次

题目入口题意:给定一个n个点m条边的有向图,图中可能存在重边和自环。所有边的长度都是1,点的编号为1~n。请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。(其实就是一个权重都为1的图中1到n的最短路问题。)输入格式第一行包含两个整数n和m。接下来m行,每行包含两个整数a和b,表示存在一条从a走到b的长度为1的边。输出格式输出一个整数,表示1号点到n号点的最短距离。数据范围1≤n,m≤105输入样例:4 51 22 33 41 31 4输出样例:1

2020-05-13 15:37:52 401

原创 Gym 102152 problem K Subarrays OR

题目入口题意:t组测试数据,每组给你一个长度为n的序列a,能得到其任意子区间的OR值,求出所有OR值的种类数。思路:比较好的一个思维题,用set存答案,再开两个set型的中间数组tmp,res。以当遍历到a[i]时,得到[1,i - 1],[2,i - 1],[3, i - 1]……的值,并分别与a[i]取或插入答案数组ans中。代码实现:#include <cstdio>#include <cstring>#include <cmath>#includ

2020-05-09 12:22:36 168

原创 Gym 1021528 problem B Memory Management System

题目入口题意:给你一个m长的空间,其间有部分空间已被n个li—ri长的文件占据。现给出q个新文件的大小xj,试找到能放下xj的空县连续空间(满足rj最大的同时lj也最大);如果没有能放下xj长度新文件的空现空间,便输出-1.思路:倒着遍历空间即可,以maxx记录最大连续长度,并不断优化更新,过程中再枚举一下x的大小,以确定起lj值,最后直接输出x对应答案即可。(题目好像还卡了printf,嗐)代码实现:#include <cstdio>#include <cstring>

2020-05-09 08:36:38 305

原创 Gym 102152 problem D XOR Permutations

题目入口题意:给你三个10位的二进制数,试问将三个数列按照一定排序后的XOR结果最大值是多少(依旧以二进制数表达)。思路:刚开始想得很简单,觉得可以直接两两异或得到max答案便可。多次失败后才知道,原来还是必须三个数同时考虑,需先经量多得考虑1 1 0得情况,再求得剩下的1 1 1情况,所得的数量就是答案中1得个数,贪心一下就好。代码实现:#include <cstdio>#include <cstring>#include <cmath>#include

2020-05-09 01:20:09 189

原创 dfs : 树的重心

题目入口给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值的最小值,那么这个节点被称为树的重心。输入格式第一行包含整数n,表示树的结点数。接下来n-1行,每行包含两个整数a和b,表示点a和点b之间存在一条边。输出格式输出一个...

2020-05-05 00:04:41 278

原创 洛谷:CF1059B Forgery

题目入口思路:显然数据范围和题意来看可以直接遍历模板矩阵,找到符合条件的3*3小区域,并在新创建的矩阵上进行修改,最后再将两矩阵进行比较即可。代码实现:#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <ctime>...

2020-05-04 17:56:32 323

空空如也

空空如也

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

TA关注的人

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