自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 The 2021 ICPC Asia Regionals Online Contest (I)

A 线段树 + 二分 线段树维护结束时间,二分查找合适的结点,找不到则执行下一个询问 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; const int N = 100010; PII p[N]; int cnt[N]; struct node{ int l,r; ll min_et; }tr[N*4]; void pushu

2021-09-23 16:46:50 333 2

原创 hdu1754 I Hate It

传送门 思路 裸题 Code #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 200010; int w[N]; int n,m; struct node{ int l,r; int maxm; }tr[N*4]; void pushup(int u){ tr[u].maxm=max(tr[u<<1].maxm,tr[u<<

2021-09-01 15:12:10 144

原创 hdu1166 敌兵布阵

传送门 思路 裸题 Code #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 50010; ll tr[N]; ll ans[N]; int n; int lowbit(int x){ return x & -x; } void add(int x,int v){ for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=

2021-09-01 15:08:32 139

原创 Function

传送门 思路 枚举 g(x) ( g(x) 的范围是[1,54] ),则 g(x)、a、b、c、d 已知,那么我们可以得到一个二次函数 即:A * x^2 + B * x A:a * g(x) + b B:c * g(x) * g(x) + d * g(x) ps:我这里的 a、b、c、d、A、B 指得是我代码中的 a、b、c、d、A、B A > 0 时:开口向上,最小值在 x0 附近,x0:对称点 即 -B / (2 * A) A < 0 时:开口向下,最小值在两端 A = 0 时:变为一条

2021-08-29 22:08:12 156

原创 Command Sequence

传送门 思路 不妨令: num_U:字符‘U’的数目 num_D:字符‘D’的数目 num_L:字符‘L’的数目 num_R:字符‘R’的数目 我们称呼区间内 num_U 等于 num_D 且 num_L 等于 num_R 的连续区间 [l,r] 为 ”好区间“ 给定我们一个只由 ‘U’ ‘D’ ‘L’ ‘R’ 四种字符组成的字符串,问:这样的“好区间”有多少个 ? 对于好区间 [l,r],显然有: sum_U[r] - sum_U[l-1] = sum_D[r] - sum_D[l-1] sum_L[

2021-08-29 21:40:40 312

原创 Power Sum

传送门 思路 任意四个相邻的平方数,比如 a = i^2, b = (i+1)^2 ,c = (i+2)^2, d = (i+3)^2 都满足 a - b - c + d = 4 我们可以根据这个性质来凑 n Code #include <bits/stdc++.h> using namespace std; int n; int main(){ int T; cin>>T; while(T--){ cin>>n; string res,s1=

2021-08-29 21:09:43 369

原创 P4113 [HEOI2012]采花

传送门 思路 类似于 HH的项链 本题题意:问区间[L,R]里,出现次数 >= 2 的元素有几种 不同之处在于本题需要维护两个last last1[i]:i 上一次出现的位置 last2[i]:i 上上次出现的位置 对于一个元素 x ,当它第一次出现时,什么都不发生,同时更新 last1 当它的 last1[x] 存在时,在 last1[x] 位置上 加1,同时更新 last1 和 last2 当它的 last2[x] 存在时,在 last1[x] 位置上 加1, 在 last2[x] 位置上 减1,

2021-08-23 18:35:55 112

原创 P1972 [SDOI2009]HH的项链

传送门 思路 题意概括:问 [L,R] 里,有多少种数字 ? 在以 R 为右端点的区间里,对于某一种数字,我们只关心 它最后一次出现的位置 我们只在其最后一次 出现的位置上 加 1 ( add 操作 ),其余出现的位置都保持为 0 比如数列:1、3、3、1 当 R = 4 时,进行 add 操作后,各位置上的数为 0、0、1、1 此时,无论 左端点 L (L <= R)取值为多少,[L,R] 里的数字种类 都等于 sum(R)- sum(L - 1) 对于 m 个询问,若每次都遍历询问区间 [Li,R

2021-08-22 23:59:01 94

原创 P3586 [POI2015]LOG

P3586 [POI2015]LOG 思路 显然,he >= (c-k)*s 时,输出 TAK,否则 NIE c 和 s 的含义如题目 he 的含义:小于 s 的数 的和 k 的含义:大于等于 s 的数 的数目 问题转化为 快速求 he 和 k:使用树状数组 显然 我们先需要离散化:将 m 个询问里的 a 和 s 进行离散化 然后 维护两个树状数组: 对于 k :我们可以维护一个树状数组 tr add(tr,x,v) 表示:让数字 x ,其数目 + v sum(tr,x) 表示:大小在 [1,x]

2021-08-22 18:00:37 241

原创 POJ 2253

Frogger 从 点 1 到点 2 有多条路径,每条路径有个 最远跳跃距离,问这些最远跳跃距离中 最小的值是多少 ? Code #include <cmath> #include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef pair<int,

2021-07-15 19:24:57 92

原创 POJ 2387

Til the Cows Come Home 思路 dijkstra 模板题 不作解释 . Code #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int N = 1010; bool st[N]; int dist[N]; int g[N][N]; int n,m; int dijkstra(){ memset(dist,0x3f

2021-07-14 17:57:14 93

原创 博弈论

博弈论 大纲—— 巴什博弈、威佐夫博弈、尼姆博弈 一、巴什博弈 (一堆物品 两人取) 只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保

2021-03-19 22:02:51 1402

空空如也

空空如也

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

TA关注的人

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