自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UVALive - 4254 Processor——二分+优先队列

截止时间越早的任务应该优先完成,二分优先队列什么的都很好想,问题就是一开始我以为一个任务只能执行整数段时间,后来发现可以执行浮点数段时间。。。其实这也很好处理,只要处理单位时间的工作量就可以了可以参考judge函数,while里面就是处理的单位时间的工作量#include <bits/stdc++.h>using namespace std;const int maxn ...

2018-09-28 19:28:40 227

原创 UVALive - 4636 Cubist Artwork——思维

把正视图用体积为1的小格子先填上一层,如果把这些列重排一下恰好能构成右视图,那么当前的填充方法就是最优的,基于这个思想我们对两个数列从大到小排序后瞎搞就可以了#include <bits/stdc++.h>using namespace std;const int maxn = 100;int n, m, a[maxn], b[maxn];bool cmp(int x, ...

2018-09-28 17:21:38 221

原创 UVALive 4356 Fire-Control System——思维

极角排序,枚举半径,然后扫一圈、#include <bits/stdc++.h>using namespace std;const int maxn = 1e4;const double pi = acos(-1.0);struct Point { int x, y, dis; double angle; bool operator < (c...

2018-09-28 16:33:48 168

原创 UVA - 10827 Maximum sum on a torus——单调队列

首先解决循环问题,只要把四个相同的矩阵拼起来就好然后在新的大矩阵上求长宽最大为n的最大子矩阵和,最大子矩阵和可以转化成最大子段和问题(Uva108),因此这个问题可以转为在长度为m的数列上求一个长度至多为n的最大子段和,这个处理一个前缀和就可以O(n^2)求,具体形式为sum[i]-sum[j](i-j+1<=n),用数据结构维护sum[j]的话为O(nlogn),然而用单调队列维护su...

2018-09-27 22:22:44 189

原创 UVA - 108 Maximum Sum——思维

搞个竖着的前缀和然后枚举连续的行做尺取就可以了,水题#include <bits/stdc++.h>using namespace std;const int INF = 0x3f3f3f3f;int n, a[150][150], sum[150][150], b[150], ans;void solve() { int sum = 0; for (in...

2018-09-27 19:41:00 153

原创 UVA - 11389 The Bus Driver Problem——思维

排个序就行,大水题#include <bits/stdc++.h>using namespace std;int n, d, r;int a[500], b[500];bool cmp(int x, int y) { return x > y; }int main() { while (~scanf("%d%d%d", &n, &d, &a...

2018-09-27 12:13:11 228

原创 UVALive 3266 Tian Ji -- The Horse Racing——思维

从大到小排序,平局的时候选一个最小的且平或者输的马来打齐王的马#include <bits/stdc++.h>using namespace std;int n, a[1010], b[1010];bool cmp(int x, int y) { return x > y; }int main() { while (~scanf("%d", &n) ...

2018-09-27 11:47:17 200

原创 UvaLive 4725 Airport——二分

二分最大值x,判断x是否合法一开始想的是记录一个suma,一个sumb,一个可飞走量val,从1扫到n,首先更新suma和sumb,然后判断suma和sumb是否大于x,是的话就让一些飞机飞走使得suma和sumb满足条件,当val小于0的时候返回false,否则val++,扫完以后都合法的话返回true。这个思想大体上是对的,但是val++有问题,我忽略了E轨道或W轨道没有足够的飞机的情...

2018-09-27 10:35:00 191

原创 UVALive - 2038 Strategic game——dp

大水题#include <bits/stdc++.h>using namespace std;const int maxn = 1e4;vector<int> G[maxn];int n, dp[maxn][2];void init() { for (int i = 0; i <= n; i++) G[i].clear();}void so...

2018-09-26 21:19:01 192

原创 UVALive - 3530 Martian Mining

题意:每个格子放左箭头或者上箭头,要求箭头不能中断,顺着箭头走的时候不能转折(比如一个左箭头左面有一个上箭头或者一个上箭头上面有一个左箭头,但是允许上箭头下面有左箭头,允许左箭头右面有上箭头),左箭头获得的价值为a[i][j],上箭头获得的价值为b[i][j],问把图布满箭头的最大价值为多少前缀和和dp搞一搞就可以了#include <bits/stdc++.h>using...

2018-09-26 20:51:23 198

原创 UVA - 10564 Paths through the Hourglass——dp

乱写一通就过了。。。#include <bits/stdc++.h>using namespace std;typedef long long ll;int n, s;int a[100][100];ll dp[100][100][510];int main() { while (~scanf("%d%d", &n, &s) &&amp...

2018-09-26 20:16:33 146

原创 UVALive - 4727 Jump Jump——dp

#include <bits/stdc++.h>using namespace std;const int maxn = 1e6;int t, n, k, dp[maxn], ans[5];int main() { cin >> t; while (t--) { cin >> n >> k; ...

2018-09-26 18:00:31 152

原创 UVA - 11990 ``Dynamic'' Inversion——树状数组+Treap

先求一遍所有元素的逆序对,每次删除元素a[x]实际上就是总逆序对数减去a[1~x-1]中大于a[x]的元素个数,再减去a[x+1~n]中小于a[x]的元素个数,这个可以用树状数组维护,树状数组的每个节点维护一颗Treap就可以查询大小了#include <bits/stdc++.h>using namespace std;typedef long long ll;const...

2018-09-26 16:57:26 137

原创 UVALive - 4513 Stammering Aliens——后缀数组

UVALIVE崩了两周,都忘了这道题是什么了233...#include <bits/stdc++.h>using namespace std;const int maxn = 1e5;char s[maxn];int sa[maxn], t[maxn], t2[maxn], c[maxn], n, m;void build_sa(int m) { int i,...

2018-09-24 16:49:57 159

原创 HDU - 6219 Empty Convex Polygons——dp+几何

首先枚举最低点o,将纵坐标大于等于o的点极角排序,然后dp求解设dp(i,j)为以oi为最后一条边,以oj为倒数第二条边的最大空凸包,转移方程为 dp[i][j] = max(dp[i][j], dp[j][k] + area);其中area为三角形oij的面积,k要小于j,注意oij要能形成三角形,三角形oij内无点(这里不考虑边上),边oj上无点,向量i->k在向量i->j右面...

2018-09-24 16:45:00 303

原创 Gym - 101611C Carpet——树链剖分

根节点到每个节点经过的轻链总数不超过log(n),因此可以把轻链放在20上,把重链放在1e6上,同时用dfs序将节点分布开,就可以满足要求了,注意一下dfs的顺序,先遍历轻链再遍历重链,这样可以保证不交叉#include <cstdio>#include <cstring>#include <iostream>#include <algorit...

2018-09-20 15:44:43 461

原创 Gym - 101611H Hilarious Cooking——模拟

求每段的最大值最小值,加起来判断T是否在这个范围内就好了每一段最大值分升降和升平一个降两种情况,但转折点的横坐标都可以表示为t=(y2-y1+x2+x1)/2下取整,之后判一下t和t+1对应的纵坐标是否相等就可以判断这两种情况了每一段最小值同理,注意转折点的值不能为0,和0取个max就行了然后单独求一下头尾就做完了区间都采用左闭右开比较好写,注意数值全部用long long#...

2018-09-20 12:14:21 617

原创 HDU - 6223 Infinite Fraction Path——剪枝

对于两个位置i,j,他们的下一个位置分别为pi = (i*i+1)%n, pj = (j*j+1)%n, pi==pj的概率很高,因此只要把这种情况减掉就能过了#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <qu...

2018-09-18 10:09:58 290

原创 HDU 5919 Seque——主席树

倒着建主席树就可以保证每次查询到的是第一个位置,正着建的话每次查到的是最后一个位置然后就是综合区间不相同数个数和区间第k大了#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>using n...

2018-09-16 23:57:22 199

原创 SPOJ - DQUERY D-query——主席树

区间不相同的数模板题#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1e5 + 10;int T, ks, n, m, a[maxn], pre[maxn*10...

2018-09-16 21:12:17 252

原创 HDU - 5920 Ugly Problem——模拟

#include <bits/stdc++.h>using namespace std;const int maxn = 1010;char s[maxn], t[maxn];vector<string> ans;int T, n, p;int main() { scanf("%d", &T); for (int ks = 1; ks ...

2018-09-14 22:25:55 163

原创 HDU 5917 Instability——稳定子图

大于等于6个点的图都是稳定子图,其余暴力特判就可以5层循环也就2e6的复杂度#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int ma...

2018-09-14 19:18:20 203

原创 HDU 6241Color a Tree——二分+树形dp

A限制用树形dp就可以做,B限制一开始想维护一下父亲,兄弟等信息,但怎么都维护不出来,然后突然想到可以二分答案x,每个节点只要有A的信息以及答案x就可以得到B的信息了,想到以后扫了一遍点,判了一下dp[i]+b[i]是否小于x,WA了...这是因为节点a满足条件,节点b满足条件,但是节点ab不一定同时满足条件,因此我们应该讲刚才的做法转化一下,x-b[i]转化为i的子树的上限,这样每次二分的时...

2018-09-14 15:20:24 279

原创 HDU 6237 A Simple Stone Game——贪心

首先将所有数的总和唯一分解,答案一定是某个素数,因为如果答案是合数的话肯定也可以是这个合数的素因子,这样只会多不会少。然后枚举素因子,对每个数构造一个与大于他的倍数的差值,然后按照这个差值从大到小贪心即是最优情况#include <cstdio>#include <cstring>#include <iostream>#include <alg...

2018-09-13 09:16:17 196

原创 HDU 6230 Palindrome——Manacher+树状数组

根据题目的要求可知我们只需要长度为奇数的回文串首先Manacher求出以每个字符为中心的最长回文半径(我求出来不包括自己,当然包括自己也可以,只是i+p[i]和i+p[i]-1的区别),然后枚举每个字符s[i]作为回文串中心,对于每个i,我们要求的是区间(i,i+p[i]]中有多少个j满足j-p[j]<=i,这个看似很棘手,其实可以利用一下我们对i的枚举顺序,因为我们是从小到大枚举的i,...

2018-09-12 22:24:15 226

原创 HDU 6231 K-th Number——二分+尺取

m要开long long,太苟了首先二分答案,对于二分到的一个数x,我们要判断大于等于x的数做第k大的区间是否有m个,可以用尺取法,枚举每个左界,对于一个左界求一个右界,使得区间内大于等于x的数有k个,这样本次枚举就可以为答案贡献(n-r+1)。#include <bits/stdc++.h>using namespace std;typedef long long ll...

2018-09-12 16:25:46 173

原创 HDU 6242 Geometry Problem——随机化算法+几何

随机选三个点, 选错的概率是0.5*0.5*0.5,重复次数越多出错率越低。所以无限循环直到找到解就可以了,注意特判n<=4的情况,此时一个圆只要包含两个点就可以,不用三点确定圆#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;const double eps = 1e-8;i...

2018-09-11 22:02:37 213

原创 UVA - 11922 Permutation Transformer——splay分裂合并

注意spaly的时候pushdown两遍,注意建立虚拟节点#include <bits/stdc++.h>const int maxn = 1e5 + 10;using namespace std;struct Node { Node *ch[2]; int v, s, lazy; Node() { ch[0] = ch[1] = NULL; v =...

2018-09-11 15:57:05 259

原创 UVA - 11107 Life Forms——后缀数组

用不同的分隔符分割每个字符串防止一个子串跨越两个字符串,用belong数组标记一个字符属于哪个字符串防止同一字符串内的匹配,特判一下只有一个字符串的情况,注意一下细节就过了,后缀数组第一题,写的挺挫的#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 1010;char s[maxn];in...

2018-09-10 18:42:41 157

原创 ACM-ICPC 2018 徐州赛区网络预赛 D Easy Math——杜教筛

这个式子可以递归计算,边界为:m=0:0m=1:u(n);n=1:segma{u(i)|1<=i<=m}其中segma{u(i)|1<=i<=m}可以用杜教筛在O(m^(2/3))内求出求解过程中要求的u(i)都可以O(1)求出,做法是先将n唯一分解,然后枚举子集,判一下元素个数,保存下来以后就可以O(1)求了注意判一下n是否有平方因子,有的话直...

2018-09-10 12:45:53 555

原创 51Nod - 1244 莫比乌斯函数之和——杜教筛

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 5e6+10;bool vis[maxn];int mu[maxn], sum[maxn], prime_cnt, prime[maxn];map<ll, ll> MAP;void init() ...

2018-09-09 22:30:11 254

原创 ACM-ICPC 2018 沈阳赛区网络预赛 J Ka Chang——分块

设置块的大小为sz,当更新的层的节点数小于sz时直接暴力更新,大于sz时给这一行打上更新标记,查询的时候对于一个点x实际上就是x的子树中小于sz的层的贡献+x的子树中大于sz的层的贡献小于sz的时候直接用树状数组+dfs序就可以维护大于sz的时候实际上就是求子树中每层的节点个数*这一层增加的值,然后对这些层求和,每层增加的值直接用一个数组就可以维护,每层节点的个数我采用了一种log级的算法...

2018-09-09 21:06:10 266

原创 UVALive 3938 "Ray, Pass me the dishes!" ——线段树

pushup麻烦,查询也麻烦。。。但开个结构体保存节点就能让一切变得简单一些#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int,int> P;const int maxn = 5e5 + 10;int ks, n, m;ll data[maxn]...

2018-09-07 20:52:17 130

原创 UVA 11426 GCD - Extreme (II)——筛

虽然可以直接莫比乌斯,不过本着学学别的思路的原则,还是乱筛了一下(其实和莫比乌斯思路挺像)#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 4000001;ll phi[maxn], f[maxn], s[maxn];void init() { ph...

2018-09-06 22:43:11 168

原创 UVALive 4119 Always an integer——数学归纳法+小模拟

首先开个结构体把每个C和E以及最后那个D膜出来然后算出E的最大值k,将数值1~k+1带入n验证,全部正确则Always an integer,否则Not always an integer下面证明一下为什么只验证1~k+1就可以,我们用数学归纳法进行验证:当k=0时,式子中没有变量,可以将n视为1来验证式子当k=1时,整个式子为n的一次函数,可设f(n) = an+b,则f(n+1...

2018-09-06 22:11:06 188

原创 UVALive 3027 Corporative Network——带权并查集

以前一直不会,现在觉得好简单。。。、#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;int T, n, fa[maxn], dis[maxn];int query(int x) { if (x == fa[x]) return x; int t = query(fa...

2018-09-06 20:20:12 144

原创 UVALive 4329 Ping pong—树状数组

将近一年没用树状数组了,回顾一下。。。另外udebug的数据是错的#include <bits/stdc++.h>using namespace std;const int maxn = 200000 + 10;int t, n, m, a[maxn], C[maxn], l[maxn], r[maxn];inline int lowbit(int x) { retu...

2018-09-06 19:26:35 152

原创 Gym 101667I Slot Machines——kmp求最小循环节

#include <bits/stdc++.h>using namespace std;const int maxn = 1e6 + 10;int n, a[maxn], f[maxn];char c;inline void input(int &x) { x = 0; while ((c = getchar()) < '0' || c &gt...

2018-09-06 16:35:29 254

原创 UVALive 5031 Graph and Queries——Treap+并查集

1A#include <bits/stdc++.h>using namespace std;const int maxn = 2e5 + 10;const int maxm = 6e5 + 10;struct Node { Node *ch[2]; int r, v, s; Node (int v):v(v) { ch[0] = ch[1] = N...

2018-09-06 11:30:16 137

原创 HDU 6249 Alice’s Stamps——dp

不带滚动数组版:#include <cstdio>#include <algorithm>#define rep(i,x,y) for(int i=x;i<=y;i++)using namespace std;int t, n, m, k, l, r, a[2018], dp[2018][2018];int main() { scanf("%d...

2018-09-06 11:01:14 244

Qt游戏编程——飞机大战

游戏模板,大家可以随意添加自己的元素

2017-07-06

空空如也

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

TA关注的人

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