自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 Matrix

矩阵中将其中一个元素替换成 p,求最大的子矩阵的值 首先是 O(n3n^3),枚举行号的上下界,同时维护每一列的和以及最小值,如果不考虑一定要修改,那么直接在维护的基础上做一次 O(n) 的 dp 就可以了。做一次修改的话就要同时维护进行了一次更改的值以及不进行更改的值,同理做dp。但是这里会有一个问题,有可能求出来的最大值是整个矩阵没有进行修改后的和。要解决这个挺简单的,就是记录一次更改的值要确

2017-09-24 10:40:06 181

原创 Territorial Dispute

凸包 首先如果点数小于等于2那么一定是不存在合法情况的 其次是如果所有点共线(并且点数超过3个),那么一定可以 然后做凸包,如果一共就三个点那么一定是不合法,否则就可以判断: 1、如果凸包点数等于n,那么采用 A B 相间的方法就行了 2、如果不等于n,那么凸包上的是A,凸包里面的是B就一定合法 #include <stdio.h>#include <stdlib.h>#includ

2017-09-24 10:29:33 345

原创 Minimum

给一个数组,有两种操作 1:求 x,y in [l,r],MinAx∗AyA_x*A_y 2:将 AxA_x替换值为 v 挺显然的线段树,分别求区间最大和最小值,如果区间最小值是正数,那么直接是这个数的平方。否则就要看看最大值,如果最大值是正数,那么就是最小值乘最大值(因为是负数),否则的话就是最大值的平方(因为出来是正数)。 #include <bits/stdc++.h>using na

2017-09-24 10:19:06 416

原创 The Dominator of Strings

ac自动机加优化 很显然这题就是建好ac自动机,然后我在建立的时候把count的值(每个字符串结尾计数用的),通过fail指针放在一起,那么如果最长的包含了其他所有的串,那么最后所有的count值都会汇聚在最长字符串的那条链上,扫一遍就可以了。 #include <stdio.h>#include <iostream>#include <algorithm>#include <string

2017-09-17 23:17:21 227

原创 Apple

第一次拿java过acm的题目~ 如果不考虑精度这题就是一道水题,直接求圆心然后判断是否在圆外 当然直接做由于精度会wa,用java的BigDecimal就可以完成了 import java.io.*;import java.util.*;import java.math.BigDecimal; public class Main { public static double x,

2017-09-17 18:15:17 240

原创 Maximum Flow

数位运算 把n拆成二进制 (1xxxxxxx) 形式,对于任意 i 拆成相同位数的二进制,如果最高位是0,那么一定是可以完全流完,因为 i xor n > i (i xor n 最高位一定是1),所以可以用求和公式来求。对于最高位是1,那么后面的位数就是相当于数位的运算,计算每一位的贡献。如果当前位为1,当且 i 的对应位为0时有贡献,维护一下很容易求出有多少个合法的解;同理当前位为0。 #in

2017-09-17 18:10:26 224

原创 Sum

由于 (1 <= x <= 1e6),x最多只有7位,考虑将 x 按数位来复制233次即可 即答案是(10…010…010..01)的形式 #include <bits/stdc++.h>using namespace std;int x, t;int main() { //freopen("input.txt","r",stdin); int T; scanf("%d

2017-09-17 18:04:20 182

原创 Our Journey of Dalian Ends

给定双向边,求Dalian到Shanghai再到Xian,途中不经过统一的城市,求最短距离 费用流 源点往Shanghai连边,城市进行拆点处理(流量为1,确保只经过一次),然后城市之间流量为1,费用为对应距离,最后Dalian和Xian与汇点连边,跑费用流。如果流量为2那么费用就是最小距离了。 #include <bits/stdc++.h>#include <map>using nam

2017-09-17 18:00:02 249

原创 E: number number number

E: number number number 比赛时我是直接找规律的 ans[i] = 3*ans[i-1]-ans[i-2]+1 然后矩阵乘法 后来听说是直接找第2n+3个斐波那契数 #include <bits/stdc++.h>using namespace std;#define ll long long/*const int maxn = 100000;int f[2

2017-09-10 18:20:03 436

原创 D:array array array

D:array array array 其实转换一下就变成了求最长不上升(下降)子序列 由于AiA_i<=10510^5,就用树状数组存就好了 每次查询小于等于 AiA_i 最长是多少,更新当前就好了 #include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;int f[maxn], a[maxn],

2017-09-10 18:05:28 506

原创 用 C# 写 TCP socket 连接

第一次用 C# 写 TCP 连接,求指点 和同学合作完成的期中project 最终是完成了一个聊天室首先利用封装好的 Windows.Networking.Sockets.StreamSocket 生产我的 clientsocket 通过后端给定的IP地址以及监听端口实现TCP连接 注意的是socket端要实现单例模式,因为用户的所有状态都是记录在 clientsocket 类里面,如果

2017-09-10 10:57:42 1554

原创 H: Skiing

H: Skiing 很显然是拓扑,用拓扑序做一次最长路就好了 #include <bits/stdc++.h>#include <vector>using namespace std;const int maxn = 10010;int q[maxn], f[maxn], a[maxn], n, m, l, r, ans, x, y, z;struct Node { int

2017-09-10 09:56:48 541

原创 G: Query on a string

G: Query on a string 给定字符串S和T,N次操作,包括修改 S 一个字符或者查询 S 中 [l,r],T 出现的次数 用树状数组就好了,因为 |T|<=10,每次用个数组记录,如果a[i]=1,代表 T 在 S 中出现而且结尾坐标为i,那么每次查询就相当于询问 [l+len_t-1, r] 中有多少个1,用树状数组维护就好了 #include <bits/stdc++

2017-09-10 09:53:06 704 2

原创 Longest Common Substring

HDU 1403 经典的后缀数组题目,把两个字符串合并,维护一下后缀数组就好了 #include <bits/stdc++.h>using namespace std;const int maxn = 200010;char ch[maxn], All[maxn];int SA[maxn], Rank[maxn], Height[maxn], tax[maxn], tp[maxn]

2017-09-08 15:02:51 397

原创 Flight Boarding Optimization

Gym - 100269F 暴力dp,f[i][k]表示前 i 个座位分了 k 次,总和最小是多少,可以从 f[j][k-1]转移过来,只需要预处理出 [j,i-1] 对 [i,s] 的影响就好了,用前缀和挺容易维护的。 #include <bits/stdc++.h>using namespace std;const int maxn = 1010;const int maxx = ma

2017-09-04 13:12:07 229

原创 Destroy Walls

HDU 6187 给定n平面点一级m条边连接这些点,问最少去掉多少条边,以及在这情况下去掉边的点权最少,使得整个图是一个连通图。 其实仔细想一下就能发现满足这个条件当且仅当这些围墙不存在环,就是剩余的边形成的只会是树或森林,所以做一遍最大生成树就好,其他的都去掉 #include<bits/stdc++.h>using namespace std;const int Len = 50001

2017-09-01 11:55:52 279

原创 Query on A Tree

hdu-6191 给定一棵树以及每个节点的权值,给定多组询问,每次询问在u子树中与x异或值最大是多少 离线+字典树 先离线把问题都放到节点中,然后dfs每个节点赋予dfs序,同时生成字典树,并记录当前节点最大的dfs序是多少,当回溯时,只要字典树的节点是大于等于当前节点的dfs序,那么都是这个节点的子树,对于每一个询问找到最大值即可 #include <bits/stdc++.h>#in

2017-09-01 11:50:23 264

原创 Teach Yourself Pottery

Gym - 100113E 给定圆台的一面的直径和法线长度,问最大体积 直接三分就好了。 #include <bits/stdc++.h>using namespace std;const double pi = acos(-1);double L, D, l, r, mid1, mid2, v1, v2, ans;double get(double x) { return si

2017-09-01 10:37:12 176

原创 Airlines — 2

Gym - 100113B 题意要时n个点之间的所有连边染色,使得不存在相同颜色的边组成一个奇环。 分治,对于一个n个点的,我们可以把它分为 (1, mid) (mid+1, n) 两部分,和二分图一样,并且两边相互连相同颜色的边,这样这种颜色的边肯定不存在奇环,然后对于两边再分别这样递归下去,最后答案是logn的。 #include <bits/stdc++.h>using namesp

2017-09-01 10:34:30 218

matlab教程

包含了matlab的许多基本操作以及使用方法,适合新手学习使用

2018-07-14

空空如也

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

TA关注的人

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