自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ABBYY Cup 3.0 E3. Summer Homework(线段树+思维+斐波那契)

题目就是要求完成上述操作,每次操作 2,都要输出结果const ll mod=1e9;const int N=2e5+5; int n,m; int i,j,k; int a[N]; ll f[N],sum[N]; struct Node { int l,r,len; ll s1,s2,lazy; void init(int l,int r){ ...

2021-03-15 17:27:30 238

原创 Codeforces Round #558 (Div. 2) B2 - Cat Party (Hard Edition) (思维)

给出 n 个数,找出一个最大的 x,使得前 x 个数中任意删除一个数之后,其余数字的出现个数相同可以利用两个数组,f 数组表示 a[i] 的出现次数,F 数组表示 a[i] 的出现次数的出现次数如果,说明在添加一个数即可成立 如果,说明在 i 位置成立const int N=2e5+5; int n,m; int i,j,k; int a[N]; map<int,int> f,F; int main(){ ...

2021-03-10 20:00:17 210

原创 Manthan, Codefest 17 B. Marvolo Gaunt‘s Ring(线段树+思维)

有 n 个数,以及 p,q,r要求找到三个数 使得最大,其中由于题目具有后效性,开始没有注意到,枚举 i∈[1,n] 使得 a[i]*p,然后用线段树找到 j∈[i,n] 使得 a[j]*q,再找到 k∈[j,n] 使得 a[k]*r,但是这样的做法是不对的,只能过到 12 个样例因为每一步都是最优的,并不能代表整体最优如果枚举 j,在从区间 [1,j] 和 [j,n]分别找 i 和 k 的话这样是正确的,其余上述的做法不同的是,上述做法没有考虑后效性而缩小了区间范...

2021-03-08 19:59:59 205

原创 洛谷 P1712 [NOI2016] 区间(线段树+贪心+思维)

const int N=5e5+5; int n,m; int i,j,k; int a[N]; struct Node { int l,r; int ll,rr; bool operator<(Node o){ //if(o.r==r) return l<o.l //return r<o.r; retu...

2021-03-31 20:34:56 180 1

原创 洛谷 P1937 [USACO10MAR]Barn Allocation G(线段树+贪心)

const int N=1e5+5; int n,m; int i,j,k; int a[N]; struct Node { int l,r; void read(){ sdd(l,r); } bool operator<(Node o){ if(r==o.r) return l<o.l; return r<o.r; ...

2021-03-31 19:30:36 248

原创 洛谷 P2887 [USACO07NOV]Sunscreen G(贪心)

const int N=1e5+5; int n,m; int i,j,k; struct Node { int l,r; void read(){ sdd(l,r); } bool operator<(Node o){ if(r==o.r) return l<o.l; return r<o.r; } } a[N];...

2021-03-31 17:58:52 190

原创 洛谷 P1607 [USACO09FEB]Fair Shuttle G(贪心+信心)

const int N=1e5+5; int n,m; int i,j,k; struct Node { int l,r; int c; void read(){ sddd(l,r,c); } bool operator<(Node o){ if(r==o.r) return l<o.l; // return r<o.r; ...

2021-03-31 17:18:15 228

原创 洛谷 P3924 康娜的线段树(线段树+数学)

const int N=1e6+5; int n,m; int i,j,k; int a[N]; struct Node { int l,r; ll sum; #define lson id<<1 #define rson id<<1|1 }t[N<<2]; ll ans=0,sum[N]; int depth,de...

2021-03-31 16:17:34 201

原创 CodeCraft-21 and Codeforces Round #711 (Div. 2) D. Bananas in a Microwave(枚举+数学)

TLE code:const int N=2e6+5; int n,m; int i,j,k; int a[N]; int vis[N]; vector<int> v;int idx(ll x){ int ans=x/100000; if(x%100000) ans++; return ans;}int main(){ while(~sdd(n,m)){ int op...

2021-03-30 17:09:54 687 2

原创 CodeCraft-21 and Codeforces Round #711 (Div. 2) B. Box Fitting(枚举)

const int N=2e6+5; int n,m; int i,j,k; int a[N]; int vis[N];bool judge(){ for(int i=20;i>=0;i--) if(vis[1<<i]) return 0; return 1;}int main(){ rush(){ sdd(n,m); for(int i=1;i<=n;i++)...

2021-03-30 14:10:16 312

原创 洛谷 P4147 玉蟾宫(单调栈)

题做多了总会遇到再重复的:BLOGconst int N=1e3+5; int n,m; int i,j,k; char s[N]; int a[N]; int d[N];int main(){ while(~sdd(n,m)){ int ans=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ ...

2021-03-29 15:11:38 222

原创 洛谷 P6503 [COCI2010-2011#3] DIFERENCIJA(单调栈+dp)

const int N=5e5+5; int n,m; int i,j,k; int a[N]; ll dp_minn[N],dp_maxx[N]; int smaxx[N],sminn[N]; int minn=0,maxx=0;int main(){ while(~sd(n)){ forn(i,1,n) sd(a[i]); ll ans=0; for(int i=1;i&l...

2021-03-29 14:13:16 404

原创 洛谷 P6510 奶牛排队(单调栈+二分)

const int N=5e5+5; int n,m; int i,j,k; int a[N]; int smax[N],smin[N]; int maxx=0,minn=0;int main(){ while(~sd(n)){ forn(i,1,n) sd(a[i]); int ans=0; for(int i=1;i<=n;i++){ while(maxx ...

2021-03-29 11:06:57 870

原创 训练总结

https://baichuan.blog.csdn.net/article/details/115085917

2021-03-28 20:32:00 105

原创 洛谷 P3467 [POI2008]PLA-Postering(单调栈)

这篇博客应该能让读者理解题目说的什么 :blogconst int N=3e5+5; int n,m; int i,j,k; int a[N]; ll ans[N];int main(){ while(~sd(n)){ forn(i,1,n){ int x=read(); sd(a[i]); } stack<int> s; ...

2021-03-28 18:38:35 228

原创 洛谷 SP7586 NUMOFPAL - Number of Palindromes(字符串hash)

暴力枚举 [l,x1] [x2,r] 判断这两段字符串是否相等即可,其中 x1-l+1=r-x2+1时间复杂度 O(n^2)虽然可以水过这个题,但是时间复杂度并不是我们想要的const int N=1e5+5;const int base=2333; int n,m; int i,j,k; char s[N]; ull xp[N]; ull h[N],_h[N];void init(){ xp[0]=1; for(in...

2021-03-27 18:45:59 146

原创 Loj #2823. 「BalticOI 2014 Day 1」三个朋友(字符串hash)

题目需要会求修改后的哈希值题目中需要注意的 ’UNIQUE‘ 的时候是存在不相同的字符串,而不是不相同的位置const int N=2e6+5;const int base=2333; int n,m; int i,j,k; char s[N]; ull xp[N]; ull h[N];void init(){ xp[0]=1; for(int i=1;i<N;i++) xp[i]=xp[i-1]*base;...

2021-03-27 15:55:29 269

原创 POJ 2796 Feel Good(单调栈)

const int N=1e5+5; int n,m; int i,j,k; int a[N]; ll sum[N];int main(){ while(~sd(n)){ forn(i,1,n) sd(a[i]); forn(i,1,n) sum[i]=sum[i-1]+a[i]; stack<int> s; int l=1,r=1; ll ans=-1;...

2021-03-27 09:33:43 149

原创 POJ 3494 Largest Submatrix of All 1’s(思维+单调栈)

建议解决完blog这个问题后在尝试const int N=5e5+5; int n,m; int i,j,k; int a[N]; int d[N];int main(){ while(~sdd(n,m)){ int ans=0; for(int j=1;j<=n;j++){ for(int i=1;i<=m;i++){ in...

2021-03-22 18:16:10 163

原创 POJ 2559 Largest Rectangle in a Histogram(单调栈)

const int N=5e5+5; int n,m; int i,j,k; int a[N];int main(){ while(~sd(n),n){ stack<int> s; for(int i=1;i<=n;i++) sd(a[i]); a[++n]=-1; ll ans=0; for(int i=1;i<=n;i++){ ...

2021-03-22 17:39:56 84

原创 Codeforces Round #709 (Div. 2, based on Technocup 2021 Final Round) B. Restore Modulo(思维)

const int N=2e5+5; int n,m; int i,j,k; ll a[N];bool go(ll c,ll m){ for(int i=2;i<=n;i++){ if((a[i-1]+c)%m==a[i]) continue; return 0; } return 1;}int main(){ rush(){ sd(n); forn...

2021-03-22 11:09:53 175

原创 Codeforces Round #709 (Div. 1, based on Technocup 2021 Final Round) A. Basic Diplomacy(构造)

某个人有 n 个朋友,他要在这 m 天里,每天找一个朋友来玩,之后有 m 行,每行代表第 i 天哪个朋友可以来和他一起玩,但是每个朋友 k 来的天数不能超过先将当天只有一个人的放上去;之后再找多个的且还能来的朋友,因为如果当天有多个朋友可以一起来玩耍,如果可以达成条件的话,当天来的朋友数量最小为 2,而const int N=1e5+5; int n,m; int i,j,k; pii a[N]; vector<int> v[...

2021-03-22 10:15:14 177

原创 训练总结

这周看完了后缀数组,也看懂了 height 数组,但是用起来还是和新知识一样,之前学过的 AC 自动机的应用场景也想不起来,周六打了区域赛的重现赛,读题慢,罚时多,签到题虽然都出了,和队友讨论的嗓子疼,签到题的思维量也很强,反映出来的问题,有一道看出来考察二分图匹配问题,但是没深入学习,数据结构的题目发现不了,越来越没有信心。而且这周的闲事太多,课堂笔记,社会实践报告一下子全压过来了,最近的状态不太好,一直很困。在 codeforces 上刷题的时候,那种看起来可以暴力的题实则考察思维的题目很容易出

2021-03-21 12:58:09 87

原创 Educational Codeforces Round 106 (Rated for Div. 2) B. Binary Removals(思维)

要求构造一个字符串所有的 1 必须在 0 后面,在原有的字符串上删除 i 不能删除 i+1 但可以删除i+2,求是否可以构造成功如果有 11 出现,那么一定会有一个 1 ,如果在其后面有 00 出现,那么一定不满足题目要求int main(){ rush(){ string s; cin>>s; int flag=0; for(int i=1;i<s.size() &&am...

2021-03-21 12:41:43 231

原创 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)Xor Transformation

给出两个数 a,b ,并利用最多 5 次操作使 a 变为 b每次操作可以选择一个数 x (0<x<a) ,a=a^x,输出每次 x 的值int main(){ ll a,b; while(~sll(a)){ sll(b); puts("2"); ll ans=a^b; ll res=1; while(res*2<=ans) res*=2; printf("%ll..

2021-03-20 23:40:20 230

原创 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)D.Fight against involution

给出 n 个人的要写字数的区间 [L,R],将这 n 个人的 R 值进行排序 ,R 值最高的排第一,以此类推,每个人的排名不能低于现在的排名,现在要求所有人的所写字数最小,问所有人最小写多少const int N=2e5+5; int n,m; int i,j,k; struct Node { ll l,r; bool operator<(const Node &o)const{ if(r==..

2021-03-20 23:38:21 327

原创 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)Stone Game

有 1 个石子的有 a 堆,2 个石子的有 b 堆,3 个石子的有 c 堆,每次合并任意两堆石子,花费为 (x%2)*(y%2),x y 为石子的个数,问将所有的石子合并成一堆石子之后的花费最小是多少将 1 2 先合起来,然后看 1 剩下还是 2 剩下,再用剩下的与 3 合并,这样是最优的int main(){ ll a,b,c; while(~sll(a)){ sll(b),sll(c); ll ans=0,res=0,k=0; ...

2021-03-20 23:35:01 265 2

原创 POJ 2774 Long Long Message(后缀数组)

求两个字符串的最长公共序列将两个字符连接起来,求 height 数组,如果排名为i 的后缀与排名为 i-1 的后缀不属于同一个字符串即为答案,求答案的最大值const int N=2e5+5; int n,m; int i,j,k; char s[N],a[N]; int tp[N],tax[N],rk[N],sa[N]; int ht[N];bool cmp(int rk[],int x,int y,int w){ re...

2021-03-17 21:15:23 155

原创 Codeforces Round #653 (Div. 3) E1. Reading Books (easy version)(思维)

给出 n 本书的阅读时间以及 A,B 是否愿意读,1 表示愿意,0 表示不愿意,A,B 每个人都要看 k 本书,但如果两个人都喜欢看一本书,那么只要有一个人看了,两个人就算都看了,问两人看完所有书花费的最小时间const int N=2e5+5; int n,m; int i,j,k; int a[N]; vector<int> u,v,w;int main(){ while(~sdd(n,k)){ ll a...

2021-03-17 20:37:31 169

原创 Codeforces Round #642 (Div. 3) D. Constructing the Array(优先队列)

在一个长度为 n 的全 0 数组中构造 1~n 的一种排列。选择长度最长的全 0 子段,如果有多个,选择最左边的;然后在 (l+r)/2 的位置上依次插入 1~n,输出最后构造的序列const int N=2e5+5; int n,m; int i,j,k; int a[N]; struct Node { int l,r; int len; bool operator<(const Node...

2021-03-17 18:38:50 159

原创 ABBYY Cup 2.0 - Easy D2. Encrypting Messages(前缀+思维)

给出 n 个数 a[],有一个长度为 m 的滑动窗口 b[]每一次窗口移动使得 a[1~m] + b[1~m] ,之后 a[2~m+1] + b[1~m] ,直到 a[n-m+1,n] + b[1~m] 为止,输出最后 a[i]%c 的值模拟一下样例可以发现 :如果 i <m ,那么 a[i]=a[i]+pre[i] 如果 n-i+1<m,那么 a[i]=a[i]+suf[m-n+i] 否则 a[i]=a[i]+pre[m]其中 pre 和 suf 分别表...

2021-03-17 17:25:28 249

原创 洛谷 P2852 [USACO06DEC]Milk Patterns G(后缀数组+单调队列)

题目要求出现过至少 k 次的公共子串,而且长度最长,如果求出现x 次公共子串的最大长度 (x>k),那么出现 k 次的公共子串的最大长度一定 >=出现 x 次的公共子串的最大长度题目转化为在任意长度为 k 的区间中 hight[] 的最小值的最大值,可以利用单调队列求解const int N=2e4+5; int n,m; int i,j,k; int a[N]; int sa[N],rk[N],tax[(int)1e6+5],tp[N]; ...

2021-03-17 09:36:02 163

原创 ABBYY Cup 3.0 - Finals (online version) A2. Oh Sweet Beaverette

有 n 个数,要求删除任意个数,使得剩下的数满足条件且总和最大最左边和最右边的数必须是相同的我们需要挑选出一个区间 [l,r] ,使得在 (l,r) 之内的正数和最大可以现预处理所有正数的前缀和,而且 a[l] 和 a[r] 的数值必须相等,用 map 记录数值出现的最后一个位置就好了const int N=3e5+5; int n,m; int i,j,k; int a[N]; map<int,int> mp; ...

2021-03-16 19:56:29 177

原创 洛谷 P2870 [USACO07DEC]Best Cow Line G(后缀数组)

如样例所示:ACDBCB,一开始的时候可以轻易地将字符串变为 CDBC,之后需要考虑选择左边的 C,还是右边的 C,如果现在知道 CDBC 和 CBDC 两个字符串的字典序,那么可以轻易地选择。所以需要预处理出 ACDBCB 的后缀数组和 BCBDCA 的后缀数组,这样当左右两边的字符相同时,就可以判断到底选择那边是最优的了,但是处理两个字符串的复杂度比较高,所以将字符串 S 反转过来接到 S 的后面就可以了const int N=1e6+5; int n,m; int...

2021-03-15 11:28:25 250

原创 训练总结

感觉这周的时间过得很快,啥也没干就结束了,专业课不好好听,没有理清体系,不知道老师在讲什么,利用碎片时间去看后缀数组,但是收效甚微,昨晚认真的看了一下,还是似懂非懂,但应该比完全不会强,本来打算这周全部搞明白后缀数组,还有 hight 数组没有看,模板下周整理。到这周为止把 codeforces 上1500 以下的数据结构的题做完了,把之前快忘记的端点线段树复习了一下,数据结构这边还是和以前同样的问题,如果只是考察思维的那种,但是枚举情况不算很多的那种题目还是喜欢暴力,一暴力就各种小问题在其中,最后还是

2021-03-14 11:49:41 87 1

原创 洛谷 P4051 [JSOI2007]字符加密(后缀数组)

不难想到先要将字符串 s 复制成 ss,这样求出它们的后缀数组就可以解决问题了const int N=2e5+5; int n,m; int i,j,k; char s[N]; int rk[N],sa[N],tp[N],tax[N];bool cmp(int rk[],int x,int y,int w){ return rk[x]==rk[y] && rk[x+w]==rk[y+w];}void sort(){ ...

2021-03-14 10:04:51 179

原创 P3809 【模板】后缀排序(后缀数组)

const int N=1e6+5; int n,m; int i,j,k; char s[N]; int rk[N],sa[N],tp[N],tax[N];void sort(){ for(int i=0;i<=m;i++) tax[i]=0; for(int i=1;i<=n;i++) tax[rk[i]]++; for(int i=2;i<=m;i++) tax[i]+=tax[i-1]; for(int...

2021-03-13 20:45:46 138

原创 Bubble Cup 12 - Finals [Online Mirror, unrated, Div. 1] F. Workout plan(优先队列)

有一个人要锻炼 n 天,初始时战斗力为 k,每天都要达到 x[i] 才可以,每天都有一款饮料价格为 c[i],每一款饮料都可以让他的战斗力增加 A,问最少要花都少钱才能完成每天的计划,如果有一天不能输出 -1由于增加的战斗力是固定的,所以挑当前最便宜的是最优的const int N=2e5+5; int n,m; int i,j,k; int a[N];int main(){ while(~sdd(n,k)){ priori...

2021-03-13 17:00:46 277

原创 Codeforces Round #215 (Div. 1) A. Sereja and Algorithm(思维)

给出一个字符串,有多次询问,每次询问一个区间,对于每次询问,如果该区间任意排序后,任意的三个连续的字符可以表示成其中的一个,那么称这个区间是好的把题意转化过来就简单了,如果一个区间上出现次数最多的字符串-出现次数最少的字符串<=1,那么这个区间就是好的;当然如果一个区间的长度<=2,不满足大前提,同样也是好区间const int N=2e5+5; int n,m; int i,j,k; char s[N];int main(){ ...

2021-03-13 16:25:04 151

原创 Codeforces Round #129 (Div. 1) B. Little Elephant and Cards(离散化)

有 n 张牌,每张牌先输入它的正面,再输入它的反面,问最少有几次翻面可以使正面的花色出现的数量超过一半首先如果一种花色出现次数超过 n 的一半才有可能产生答案,题目模拟即可但是如果没有答案需要输出 -1,最重要的是一张牌可能两面都是相同的花色,这样其对花色的贡献数量为 1const int N=2e5+5; int n,m; int i,j,k; pii a[N]; vector<int> v; pii sum[N]; ...

2021-03-13 15:44:32 188

codeblocks17.12安装包.zip

适合新手使用的编译器,之后更新 百度网盘安装包: 链接:https://pan.baidu.com/s/1M1PGcirlC0He1WjOFrw8gQ 提取码:jfq5

2020-07-02

空空如也

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

TA关注的人

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