自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

繁凡さん的博客

「无他,唯手熟尔」人生亦繁亦不凡!

  • 博客(62)
  • 收藏
  • 关注

原创 UVA10537 The Toll! Revisited (思维、最短路、输出字典序最小路径)

题目链接我们要注意去的时候交的n/20单位的货物,但是倒着回去求答案的时候我们要加上ceil(n/19.0)(自己手算)字典序中大写字母比小写字母更小注意看数据范围,别总用memset容易超时TLE//注意字典序中大写字母比小写字母小#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>#include<c

2020-09-30 22:35:40 51

原创 模板 - 计算几何相关公式大全

一、注意事项注意舍入方式(0.5的舍入方向);防止输出-0.几何题注意多测试不对称数据.整数几何注意xmult和dmult是否会出界; 符点几何注意eps的使用.避免使用斜率;注意除数是否会为0.公式一定要化简后再代入.判断同一个2∗PI2*PI2∗PI域内两角度差应该是abs(a1−a2)<beta∣∣abs(a1−a2)>pi+pi−beta;abs(a1-a2)<beta||abs(a1-a2)>pi+pi-beta;abs(a1−a2)<beta∣∣

2020-09-29 21:02:24 229

原创 P1972 [SDOI2009]HH的项链(离线树状数组)

#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>using namespace std;const int N = 2000007, M = 500007 , INF = 0x3f3f3f3f;struct node{ int l, r; int pos; bool operator<(const node& .

2020-09-29 11:09:43 57

原创 CF660C Hard Process(尺取法)

尺取法题目中要我们求最多改变k次后连续的1的最长长度。那么转换一下,不就是求至多包含k个0的子串的最长长度吗?直接套用尺取法的思想,维护两端点,一旦0的个数超过k左端点就右移一位(要用if而不是while,不然会RE,因为一位就够了,最后的答案也不会出错)#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<queue>usin.

2020-09-29 09:53:33 58

原创 C语言入门练习 - 第二期 判断语句与循环语句(题解)

G 加薪#include <stdio.h>int main(){ double salary; scanf("%lf", &salary); double x; if (salary <= 400) x = 0.15; else if (salary <= 800) x = 0.12; else if (salary <= 1200) x = 0.1; else if (salary <= 20

2020-09-28 22:36:42 173

原创 模板 - 单调队列

整理的算法模板合集: ACM模板目录单调队列单调队列求矩阵的和单调队列/*常见模型:找出滑动窗口中的最大值/最小值*/int hh = 0, tt = -1;for (int i = 0; i < n; i ++ ){ while (hh <= tt && check_out(q[hh])) hh ++ ; // 判断队头是否滑出窗口 while (hh <= tt && check(q[tt], i)) tt -- ;

2020-09-28 16:55:16 46

原创 模板 -计算几何注意事项

整理的算法模板合集: ACM模板目录计算误差解决方案 : 误差判别法解决方案:化浮为整注意负零注意反三角函数的值域计算几何常用开头模板计算误差尽量少用三角函数、除法、开方、求幂、取对数运算如:1.0/2.0∗3.0/4.0∗5.0=(1.0∗3.0∗5.0)/(2.0∗4.0)1.0/2.0*3.0/4.0*5.0 = (1.0*3.0*5.0)/(2.0*4.0)1.0/2.0∗3.0/4.0∗5.0=(1.0∗3.0∗5.0)/(2.0∗4.0)在不溢出的情况下将除式比较转化为乘式比较a

2020-09-28 16:29:16 164

原创 模板 - 输入输出优化

整理的算法模板合集: ACM模板一些数据比较大的题,如果没有一个令人满意的时间复杂度的算法的话,还是加上这二位吧,说不定运气好就卡过了呢。inline int read(){ int re=0,k=1;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')k=-1;ch=getchar();} while(ch<='9'&&ch>='0'){re=re*10+ch-48;ch=getchar();} r

2020-09-28 16:03:20 160 1

原创 CF1385E Directing Edges (拓扑排序判断环)

luogu链接我们直接先把所有的有向边建图,然后拓扑排序判断环,如果此时有环那么直接输出no为了将无向边变成有向边之后依旧无环,那么我们只需要遵循拓扑排序的规则,给无向图指定方向的时候对于每条边,从拓扑序小的点指向拓扑序大的点,就一定保证无环。要注意的是本题的数据范围比较大,如果用memset把topo数组初始化的话就会TLE,但是我们实际上是不用考虑topo数组的初始化的,因为我们一直是往上覆盖的。#include<cstdio>#include<algorithm>

2020-09-28 15:46:16 61

转载 Java 2实用教程(第五版)全套课后习题答案

习题1(第1章)一、问答题 1.James Gosling 2.需3个步骤: 用文本编辑器编写源文件。  使用javac编译源文件,得到字节码文件。 使用解释器运行程序。 3.由类所构成,应用程序必须有一个类含有public static void main(String args[])方法,含有该方法的类称为应用程序的主类。不一定,但最多有一个public类。 4.set classpath=D:\jdk\jre\lib\rt.jar;.; 5.  java和cl

2020-09-28 10:21:39 6273 1

原创 C语言入门练习 - 第一期 变量、输入输出、表达式与顺序语句(题解)

A 新手指导输入输出练习(1)#include <stdio.h>int main(){ printf("Hello World\n"); return 0;}B 新手指导输入输出练习(2)#include <stdio.h>int main(){ int a; scanf("%d",&a); printf("%d\n",-a); return 0;}C 新手指导输入输出练习 (3)#include<stdio.h&gt

2020-09-27 23:35:13 169

原创 UVA1342 That Nice Euler Circuit(ACM - ICPC 2004 Asia - Shanghai)(计算几何、欧拉定理)

欧拉定理:设平面图的顶点数、边数和面数分别为V,E,F,则V+F-E=2。#include<bits/stdc++.h>using namespace std;const int N = 5007, M = 50007, INF = 0x3f3f3f3f;const double DINF = 12345678910, eps = 1e-10;struct Point{ double x, y; Point(double x = 0, double y = 0):.

2020-09-27 20:50:58 61 1

原创 二维几何基础大合集!《计算几何全家桶(一)》(基础运算、点、线、多边形、圆、网格)

整理的算法模板合集: ACM模板目录基本运算点与直线多边形基本运算#include<bits/stdc++.h>using namespace std;const int N = 5007, M = 50007, INF = 0x3f3f3f3f;const double DINF = 12345678910, eps = 1e-10;struct Point{ double x, y; Point(double x = 0, double y = 0):x(x

2020-09-27 19:18:50 734 1

原创 【第一道计算几何题】 UVA11178 Morley‘s Theorem (二维几何,旋转直线求求交点)

要求D点我们只需要把直线BC向左旋转a/3,向右旋转b/3得到两直线求交点即可。秒啊秒啊解锁技能树——计算几何,终于能加一个计算几何版块了#include<bits/stdc++.h>using namespace std;const int N = 5007, M = 50007, INF = 0x3f3f3f3f;const double DINF = 12345678910, eps = 1e-10;struct Point{ double x, y; ..

2020-09-27 18:13:55 72

原创 UVA1411 Ants(带权二分图的最大完美匹配、zkw费用流)

题解#include<bits/stdc++.h>#define eps 1e-5#define inf 1010580540using namespace std;deque <int> q;int cnt=1,fst[505],nxt[200005],to[200005],w[200005],cur[505];int n,S,T,ax[105],ay[105],bx[105],by[105];bool inq[505],vis[505];double cot..

2020-09-26 22:17:29 67

原创 luogu P4258 [WC2016]挑战NPC(一般图的最大匹配,带花树,建图、拆点技巧)

如果是一堆球一堆筐,每一个筐里只能放一个球,求最大能放多少个球, 那么就是一个二分图的最大匹配问题,非常简单,我们一个球一个点作为二分图的左部,一个筐一个点作为二分图的右部,直接跑最大流即可。但是这里我们一个筐不止放一个球,我们一个筐最多可以放三个球,也就是说如果我们一个筐作为一个点的话,我们无法判断筐内到底放了几个球,所以我们根据一个筐能放三个球把一个筐拆成三个点,然后我们把一个筐拆成的三个点互相链接。这样就不再是一个二分图了,就变成了一个可能有奇环的一般图,所以很明显就是一个带花树求一般图匹配问题。.

2020-09-26 16:27:32 142

原创 模板 - 一般图最大匹配(带花树)

整理的算法模板合集: ACM模板目录题目描述 给出一张 n 个点 m 条边的无向图,求该图的最大匹配。总结一下带花树算法的流程1.每次找一个未匹配的点出来增广2.在增广过程中,如果相邻点是白点,或者是同一朵花中的节点,则直接跳过这个点3.如果相邻点是一个未被匹配过的白点,证明找到了增广路,沿着原有的pre和match路径,对这一次的匹配结果进行更新4.如果相邻点是一个被匹配过的白点,那么把这个点的匹配点丢进队列中,尝试能否让这个点的匹配点找到另外一个点进行匹配,从而可以增广。(以上步

2020-09-25 22:22:38 97

原创 luogu P6113 【模板】一般图最大匹配(带花树)

总结一下带花树算法的流程1.每次找一个未匹配的点出来增广2.在增广过程中,如果相邻点是白点,或者是同一朵花中的节点,则直接跳过这个点3.如果相邻点是一个未被匹配过的白点,证明找到了增广路,沿着原有的pre和match路径,对这一次的匹配结果进行更新4.如果相邻点是一个被匹配过的白点,那么把这个点的匹配点丢进队列中,尝试能否让这个点的匹配点找到另外一个点进行匹配,从而可以增广。(以上步骤同匈牙利算法)5.如果相邻点是一个被匹配过的黑点,证明此时出现了奇环,我们需要将这个环缩成一个黑点。具体的实现.

2020-09-25 22:21:15 75

原创 模板 - 稳定婚姻问题

题意:给定n个男人,n个女人,每个人心中对异性都有一个排序,从左往右是最喜欢到最不喜欢,然后现在要求一个稳定匹配,使得n对男女中,不存在男人对其他女人好感度大于配偶且女人对其他男人好感度大于配偶思路:稳定婚姻问题,算法过程如下:男人不断求婚,从最喜欢到最不喜欢,女人每次在求婚人中,选择一个最喜欢的配对,然后抛弃现在的配对,这个过程可以用一个队列存放求婚男人,这样直到队列为空,也就匹配完毕了typedef long long ll;const int N = 5007, M = 5000007.

2020-09-25 11:35:28 77

原创 模板 - KM算法(O(n^3))(二分图最大权完美匹配)

题目描述给定一张二分图,左右部均有 n 个点,共有 m 条带权边,且保证有完美匹配。求一种完美匹配的方案,使得最终匹配边的边权之和最大。//Dataconst int N=500;int n,m,e[N+7][N+7];//KMint mb[N+7],vb[N+7],ka[N+7],kb[N+7],p[N+7],c[N+7];int qf,qb,q[N+7];void Bfs(int u){ int a,v=0,vl=0,d; for(int i=1;i<=n;i

2020-09-24 20:58:55 118

原创 模板 - ST表

题目描述给定一个长度为 N 的数列,和 M 次询问,求出每一次询问的区间内数字的最大值。typedef long long ll;//全用ll可能会MLE或者直接WA,试着改成int看会不会Aconst ll N=500007;const ll INF=1e9+9;const ll mod=2147483647;const double EPS=1e-10;//-10次方约等于趋近为0const double Pi=3.1415926535897;ll n,m,f[N][21],a[N];

2020-09-24 17:02:17 39

原创 luogu P2596 [ZJOI2006]书架(平衡树、无旋treap(按排名分裂)一些更复杂的操作)

无旋treap可以维护一棵树的中序遍历结果.但是不支持通过编号来找节点.于是在无旋treap的基础上,我维护了每个节点的父亲,这样就可以求出一个节点是中序遍历中的第几个.那么对于一个节点,每次将它向树根跳,如果它是右儿子,那么就将它父亲的左子树的值以及父亲的大小计入结果.那么问题就只有如何记录父亲了.显然会改变父亲的只有 split和merge操作,那么我只需要在这两个函数中修改就可以了.在split的时候再传两个参数记录父亲, merge在修改儿子的时候同时将父亲一起修改. 其他的都是无旋tre..

2020-09-24 16:53:32 94

原创 luogu P3850 [TJOI2007]书架(平衡树、无旋treap(按排名分裂))

luogu P3850 [TJOI2007]书架这里要的是字符串,所以我们最好用一个map映射一下,不要在结构体中用string代替val。fhq-treap中所有的排名实际上都指的是前面有多少个元素(前面有多少本书,例如实际排名为1,那么查询用的排名为0),而不是实际的排名,所以当我们insert的时候,我们按照习惯是从1到n,这里我们调用insert函数的时候要传入i-1,但是当我们根据题意insert的时候,输入的已经是平衡树中常用的“排名”了,就不用再–了。#include<cstdi

2020-09-24 16:49:32 44

原创 模板 - 支配树

整理的算法模板合集: ACM模板题目描述 给定一张有向图,求从1号点出发,每个点能支配的点的个数(包括自己)# include <iostream># include <cstdio># include <cstring># include <queue># define sz 20# define FOR(i,st,ed) for(int i=st;i<=ed;++i)# define _FOR(tu,u) for(int v,i

2020-09-23 22:23:41 52

转载 Dev-C++安装和使用教程(手把手傻瓜式教学)

关于Dev-C++的安装以及基本使用方法觉得Dev-C++是一款小巧方便的编译器,就给那些刚刚学习编程的同学讲一下这个软件的安装和基本的编译以及一些使用的技巧。 (完全是傻瓜式的截图和教程,内容过于冗余,主要是考虑到这些新生没有接触过编程软件) 一,关于Dev-C++的安装 我这里使用的版本是Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup (链接的百度云资源是直接在网上找的,有问题的话再说) 点击Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup安装后,会出现

2020-09-22 21:05:36 1422

原创 SWPU OnlingJudge 在线评测平台 使用教程

目录一、关于注册登录二、如何做题三、如何参加在线比赛一、关于注册登录首先我们打开SWPU OnlingJudge 在线评测平台网址:http://swpuacm.cn/点击右上角的 Register 按钮邮箱可以使用QQ邮箱:你的QQ号加上@qq.com注册完毕后登录进入OJ主页面右上角点击用户名之后点击Settings可以打开设置将语言调成简体中文方便使用二、如何做题我们点击问题可以看到题目列表中有很多题目右上角搜索新手选择新手指导输入输出练习(1)一道题

2020-09-22 11:21:38 1117

转载 codeblocks安装及使用教程(手把手傻瓜式教学)

1.首先去codeblocks官网下载最新版codeblocks安装包。2.双击下载的包,看到如下界面。3.点击next,进行下一步。4.点击I agree。5.点击next,进行下一步。6.选择安装的位置,建议不要装在系统盘,然后点击install进行安装。7.等待一两分钟,就安装好啦。接下来讲一下使用教程1.双击打开。2.点击create a new project3.选中console application,点击go4.点击next5.选择c或者c++,点

2020-09-22 09:14:02 3273 2

原创 UVA1391 Astronauts(ACM - ICPC 2006 Europe - Central)(2 - SAT问题、输出方案)

虽然题目里有A、B、C三种状态,但是每个人只有两个状态可以选择,显然是一道2-SAT; 建图的话,假设选择A(或者B)为i+n,选择C为i;首先当两个人讨厌时,一个人选C,则另一个一定选另一个,连两条边(x,y+n)和(y,x+n),同时若是两个人同类,则还需加上限制使两个人不能同时选A(或同时选B),就再连两条边(x+n,y),(y+n,x);最后跑一边tarjan输出答案的话就不需要在跑一边拓扑排序了,因为在tarjan时强连通分量被染色的顺序就是拓扑序,所以若col(i)<col(i+n),.

2020-09-21 22:00:28 70 1

原创 UVA1146 / LA3211(ACM-ICPC 2004 Europe - Southwestern) Now or later(2-SAT问题 + 二分答案)

题目让求的是 最大值的最小值,考虑二分答案。题目中每个飞机 要么是一种状态,要么是另一种状态,考虑 2-SAT。二分着陆时间间隔的最小值 x。枚举每两个飞机 i,j 的 4 种状态设现在枚举的这个情况中,i 的着陆时间为 a,j 的着陆时间为 b,则若 ∣a−b∣<x|a-b|<x∣a−b∣<x那么就要在相应的状态间连边(此时这两个状态只能二选一)。#include<cstdio>#include<cstring>#include<algori.

2020-09-21 17:57:07 71

原创 模板 - 2 - SAT问题

有 n 个布尔变量 x1∼xnx_1\sim x_nx1​∼xn​​,另有 m 个需要满足的条件,每个条件的形式都是 「x_i为 true / false 或 x_j​为 true / false」。比如 「x_1为真或 x_3为假」、「x_7​为假或 x_2为假」。2-SAT 问题的目标是给每个变量赋值使得所有条件得到满足。//时间复杂度O(n+m)//当 x 所在的强连通分量的拓扑序在 ¬x 所在的强连通分量的拓扑序之后取 x//为真 ,注意我们得到的是拓扑逆序,所以要写成color[x] &lt

2020-09-21 15:58:35 157

原创 2-SAT 问题 详解

2-SAT 问题 详解

2020-09-20 21:02:29 232

原创 UVA11384 Help is needed for Dexter (规律、思维)

首先数据范围达到了1e9,这样的话哪怕O(n)O(n)O(n)的做法都不能过,所以我们手玩样例找规律如果每次都减1的话,看上去减的数多,但是实际上需要n次,每次选择最大的减去全部,也需要n次,那么我们越往中间靠近总次数就越少,这是本题的第一感觉。我们如果画图的话 1 11 111 1111 11111111111我们发现果然中间的正方形是要比边的大,所以我们每次取一半分开两部分,分别减掉两部分的最小值,这样就会变成两个相同的两部分,排序后再分开减半,最后答案.

2020-09-20 19:30:01 40

原创 luogu P1345 [USACO5.4]奶牛的电信Telecowmunication(建图技巧 - “割点”模板 、最小割)

P1345 [USACO5.4]奶牛的电信Telecowmunication最小割,我们建立一个超级源点和超级汇点,做一下最小割,即可得到通过割边使得整张图变成两个完全不相连的集合的最小花费。同样的,我们也可以指定两个点为源点和汇点,求得通过割边,使得两个点不再连通的最小花费。(黑边的边权为INF,黄边的边权为1)图片来源因为求的是割掉点的最小个数,而我们的最小割是割边,所以我们就可以使用点边转化技巧 - 割点,将点割开成两个,中间连一条权值为1的边,意味着我们可以割掉这条边。其余的本来就连好

2020-09-18 21:29:37 61

原创 luogu P1231 教辅的组成(建图、拆点、最大流)

luogu P1231 教辅的组成每一本书都要拆点,拆成入点和出点,因为每一本书只能匹配一次图片来源#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>using namespace std;typedef long long ll;int n, m, S, T;namespace dinic{

2020-09-18 20:00:10 100

原创 luogu P3410 拍照(最大权闭合图转最小割)

luogu P3410 拍照最大权闭合图转最小割要得到最大收益,我们可以用总可能收益减去最小花费,也就是最小割。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>using namespace std;typedef long long ll;const int N = 500007, M = 500000

2020-09-17 21:49:08 44

原创 【网络流24题】B、太空飞行计划问题(最大权闭合图转最小割、最小割方案输出)

整理的算法模板合集: ACM模板B、太空飞行计划问题(最大权闭合图转最小割、最小割方案输出)【省选/NOI- 】P2762 太空飞行计划问题【问题分析】最大权闭合图问题,可以转化成最小割问题,进而用最大流解决。【建模方法】把每个实验看作二分图X集合中的顶点,每个设备看作二分图Y集合中的顶点,增加源S和汇T。1、从S向每个Xi连接一条容量为该点收入的有向边。2、从Yi向T连接一条容量为该点支出的有向边。3、如果一个实验i需要设备j,连接一条从Xi到Yj容量为无穷大的有向边。统计出所有实

2020-09-17 21:43:47 80

原创 UVA1327 King‘s Quest(强连通分量、给王子们匹配公主系列 - 1 )

让我们首先来考虑建图如果王子u喜欢妹子v那我们可以从u向v连一条有向边如果妹子v可以与王子u配对(即在配对表上),那我们可以从v向u连一条有向边对于样例如果王子和另一个姑娘在同一个连通分量上,说明可以娶。因为同一个强连通分量种都有相同数量的姑娘和王子,王子在找别的姑娘的同时,他的原配姑娘也能被在同一个连通分量的另一个王子找到。巫师给出的列表就是一个完备匹配(每一个人都有且只有一个匹配),我们要从这个完备匹配中选择答案#include<cstdio>#include<c.

2020-09-17 15:33:19 87

原创 POJ 3177 Redundant Paths(变成边双连通分量所需要新建的边数)

POJ 3177 Redundant PathsIn order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1…F) to another field, Bessie and the rest of the herd are forced to cross near the Tree of Rotten Apples. The cows are now tired of ofte

2020-09-15 20:53:22 50

原创 HDU 4738 Caocao‘s Bridges(桥、任何位运算一定都要加括号、因为有重边所以用前向星)

HDU 4738 Caocao’s Bridges(桥、任何位运算一定都要加括号、因为有重边所以用前向星)Caocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn’t give up. Caocao’s army still was not good at water battles, so he came up with another idea. He built many islands

2020-09-15 11:18:28 53

原创 解题报告:【kuangbin带你飞】专题九 连通图

目录A、POJ 1236 Network of Schools(有向图缩点)B、UVA 315 Network(找割点)C、UVA 796 Critical Links(桥)D、POJ 3694 NetworkE、POJ 3177 Redundant PathsF、HDU 4612 Warm upG、HDU 4635 Strongly connected(最多可加边数使得仍然非强连通)H、HDU 4685 Prince and PrincessI、HDU 4738 Caocao's BridgesA、PO

2020-09-14 21:36:15 113

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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