————基础算法
mengbi_er
一个蒟蒻JLoier
展开
-
Codeforces Round #421 (Div. 2) C. Mister B and Boring Game
题目大意按字母表顺序给出一个初始字符串s,长度为a,你可以任意添加b个字符,之后你的对手将加入a个不同的长度为a的后缀中未出现的字符(字典序加入),询问从l到r中最少出现几个不同字符。题解将前a个字符写出,我们可以发现,只有自己写出前面出现过的字符,对手写出的新字符个数才能尽可能少。而为了让区间中不同字符个数少,我们应写相同的字符,由于对手只写后a字符中未出现的字符,所以每次写的字符应是当前最后一个原创 2017-06-28 01:53:53 · 566 阅读 · 0 评论 -
Codeforces Round #433 (Div. 2)B. Maxim Buys an Apartment
题目大意一个有基佬气息的人想让他左或有有邻居,知道邻居数,但不知道位置,求最少和最大能选几个位置。题解显然k=0 ans:0,0 k=n min=0; else min=1; max=max(n-k,2*k)(一个邻居有两个位置)。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using na原创 2017-09-07 14:16:17 · 211 阅读 · 0 评论 -
Codeforces Round #433 (Div. 2) C. Planning
题目大意飞机延误k分钟,每分钟只能起飞一架,每架飞机每晚一分钟有个代价,求最小代价。题解显然前k分钟代价不可避免,直接加入优先队列,其余的先加入优先队列并取出队首。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;int read原创 2017-09-07 14:20:05 · 238 阅读 · 0 评论 -
Codeforces Round #433 (Div. 2) D. Jury Meeting
题目大意所有人要去0号城市,并且只坐飞机,飞机只有去0的和从0出发的,所有人要呆k天,问最小机票花费。题解对去的和返回的飞机分类排序,去的从早到晚,回来的从晚到早,处理每个时间上所有人去0的最小代价(由于排好序,所以选择时选的是时间最小的),从晚到早选返回的,所有人都满足时算一下代价,最后找出代价最小值。#include<iostream>#include<cstdio>#include<cst原创 2017-09-07 14:28:07 · 223 阅读 · 0 评论 -
Codeforces Round #430 (Div. 2) A. Kirill And The Game
是否存在,l<=a<=r,a*k==b,x<=b<=y. 暴力模拟,不要企图o(1)算。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'|原创 2017-08-30 14:54:19 · 192 阅读 · 0 评论 -
Codeforces Round #430 (Div. 2) B. Gleb And Pizza
题目大意有多少圆在外面圆内里面圆外。题解求一下圆心到原点距离,然后加r减r判断即可。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int read(){ char ch=getchar();int f=0;原创 2017-08-30 14:57:34 · 234 阅读 · 2 评论 -
Codeforces Round #430 (Div. 2) D. Vitya and Strange Lesson
题目大意每次对数组异或一个值,求数组的mex(没在数组出现的最小非负整数)题解对所有数建一棵二进制trie树,记录修改的二进制位,贪心选择,如果修改的状态在原数组中没出现过,则之后的二进制位都可以与答案相同(即结果为0),如果当前节点子树没满,则可以与当前修改状态相同,否则只能与修改相反。(我好弱啊模板题调1小时)#include<iostream>#include<cstdio>#includ原创 2017-08-30 15:04:13 · 244 阅读 · 1 评论 -
bzoj2946: [Poi2000]公共串
将所有串连起来,中间加一个分隔符,二分答案,有连续ht>=mid且每个串中都出现一次就合法,否则不合法,一定要将分隔符特判掉,否则=0会输出1。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar()原创 2017-09-08 18:16:49 · 269 阅读 · 0 评论 -
bzoj2406: 矩阵
直接求不好求想到网络流模型,对每行每列算和,二分答案,对每行建点xi,每列建点yi,从s到xi连[sum-mid,sum+mid]边,对每列yi到t连[sum-mid,sum+mid]边,代表行的点和代表列的点连[L,R]的边,跑上下界可行流(注释部分为求方案)。#include<iostream>#include<cstdio>#include<cstring>#include<algori原创 2017-08-31 11:04:27 · 348 阅读 · 2 评论 -
bzoj1691: [Usaco2007 Dec]挑剔的美食家
按价格讲草和牛排序,维护一个以美味度为关键字的平衡树,不断枚举牧草,插入比牧草价值低的牛,之后用平衡树选择前驱并删除。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0;原创 2017-10-08 22:30:40 · 242 阅读 · 0 评论 -
bzoj4839: [Neerc2016]Abbreviation
细节写死我QAQ,全场最长。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9')ch=getchar(); while原创 2017-10-09 16:06:34 · 321 阅读 · 0 评论 -
bzoj1049: [HAOI2006]数字序列
我也贴一个233#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define ll long longusing namespace std;int read(){ char ch=getchar();int f=0,x=1; while(ch<'0'||ch>'9'){if(原创 2017-10-30 19:54:43 · 168 阅读 · 0 评论 -
Codeforces Round #440 (Div. 1) A. Maximum splitting
题目大意将一个数分解成若干合数的和,问最多分解成多少个。题解贪心用4,6,9来组合,%4=1需要一个9,%4=2需要一个6,%4=3需要一个6一个9,剩下都用4.#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=原创 2017-10-16 07:20:32 · 214 阅读 · 0 评论 -
bzoj4552: [Tjoi2016&Heoi2016]排序
二分答案,把大于二分值的变成1,否则变成0,线段树修改,最后查询问位置是1还是0。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0,x=1; while(ch<'0'|原创 2017-11-29 22:36:45 · 310 阅读 · 0 评论 -
Codeforces Round #451 (Div. 2) B. Proper Nutrition
题目大意求ax+by=c的一组非负整数解题解最开始没看数据范围就无脑exgcd发现有负数,然后才看到数据范围发现可以o(n)做…#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0原创 2017-12-16 22:34:42 · 198 阅读 · 0 评论 -
Codeforces Round #451 (Div. 2) C. Phone Numbers
题目大意问有多少不同的人以及每个人有多少种不同号码,一个串是另一个后缀则算相同号码。题解先将相同的人的电话合并,然后暴力去重就行了。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f原创 2017-12-16 22:38:27 · 245 阅读 · 0 评论 -
Codeforces Round #451 (Div. 2) E. Squares and not squares
题目大意每次给一个数加一或减一,问最小操作次数使一半是完全平方数一半不是。题解显然只需要将多的一部分变成少的一部分,贪心选需要操作次数最少的。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int read(){ ch原创 2017-12-16 22:41:07 · 249 阅读 · 0 评论 -
Codeforces Round #433 (Div. 2)A. Fraction
题目大意求分子分母和为n的最大真分数。(分子分母互质)题解暴力QAQ。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9') c原创 2017-09-07 14:11:56 · 193 阅读 · 0 评论 -
bzoj2006: [NOI2010]超级钢琴
维护前缀和,用线段树维护距离一个点[L,R]的最大值,并记录左右区间限制,将它加入优先队列,当取出一个点时,加入[L,where-1]和[where+1,R]两个值,记录左右限制。具体细节看代码。(写的不可读QAQ)#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>usi原创 2017-09-04 14:46:16 · 282 阅读 · 0 评论 -
AIM Tech Round 4 (Div. 2) A. Diversity
题目大意改变最小元素个数是总种类数大于K。题解贪心选就行了。注意特判。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9') c原创 2017-08-25 07:52:32 · 263 阅读 · 0 评论 -
Codeforces Round #420 (Div. 2) A. Okabe and Future Gadget Laboratory
题目大意给出一个n*n矩阵,判断对于每个不等于1的数是否存在其所在行和所在列数相加等于这个数。example3 1 1 2 2 3 1 6 4 1 output:Yes 2=1+1, 2=1+1,3=2+1, 6=2+4.4=3+1.题解暴力枚举即可。#include<iostream>#include<cstdio>#include<cstring>#include<algor原创 2017-06-26 12:52:59 · 295 阅读 · 0 评论 -
bzoj2295: 【POJ Challenge】我爱你啊
bzoj竟然有这么水的题,当然要把它秒掉。includeincludeincludeincludeusing namespace std; char c,t[]=”luvletter”; int main() { int n; cin>>n; while(c==getchar()) { if(c==’\n’) brea原创 2017-06-12 13:23:58 · 445 阅读 · 0 评论 -
bzoj4846: [neerc2016]Hard Refactoring
这题是2017北大营的一道题,其实简单模拟即可,但是细节比较多,还是挺可做的#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[70005];bool sig=0;char ch;long long read(){ ch=getchar(原创 2017-06-12 13:46:16 · 453 阅读 · 0 评论 -
bzoj1689: [Usaco2005 Open] Muddy roads 泥泞的路
把水坑按初始位置排序·,然后简单模拟,具体方式看代码。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct water{ int from; int to;}a[100005];int cmp(water x,water y){原创 2017-06-12 20:50:24 · 377 阅读 · 0 评论 -
bzoj3403: [Usaco2009 Open]Cow Line 直线上的牛
这也是一道模拟题。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[300003];int head=150000,tail=149999,now=0;int main(){ int n,x;char s,t; cin>>n;原创 2017-06-12 20:51:57 · 358 阅读 · 0 评论 -
bzoj3850: ZCC Loves Codefires
贪心,按Ei/Ki从小到大排序#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct ti{ double tim; double lose; double value;}a[1000005];int cmp(ti x,ti原创 2017-06-13 21:30:49 · 281 阅读 · 0 评论 -
bzoj1857: [Scoi2010]传送带
显然时间函数有单调性,自然会想到三分。(貌似大家都知道这是三分模板题。。。)#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const double eps=1e-4;int ax,ay,bx,by,cx,cy,dx,dy,p原创 2017-06-13 21:45:39 · 336 阅读 · 0 评论 -
bzoj1754: [Usaco2005 qua]Bull Math
高精度乘法模板。。。#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>using namespace std;int main(void){ string m,n; cin>>m>>n; int p,q; p=m.size();原创 2017-06-18 16:54:05 · 295 阅读 · 0 评论 -
bzoj4029: [HEOI2015]定价
尽量让末尾多0。判断能不能是5. 附黄学长代码(其实是我写挂不想改QAQ)。#include<set>#include<map>#include<ctime>#include<queue>#include<cmath>#include<cstdio>#include<vector>#include<cstring>#include<cstdlib>#include<iostrea转载 2017-06-26 14:47:57 · 357 阅读 · 0 评论 -
bzoj1599: [Usaco2008 Oct]笨重的石子
枚举,入门题。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int f[105],maxx,ans;int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); int n=a+b+c;原创 2017-07-05 19:22:55 · 256 阅读 · 0 评论 -
Codeforces Round #421 (Div. 2) A. Mister B and Book Reading
题目大意一本c页的书,第一天看v0页,以后每天前一天多看a页,但最多一天看v1页,每天向前回看l页,多少天能看完。题解想起了小学奥数题。。。 模拟即可。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getch原创 2017-06-28 01:35:18 · 230 阅读 · 0 评论 -
bzoj3412: [Usaco2009 Dec]Music Notes乐谱
前缀和+二分。有很多做法#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[50005];int find(int x,int l,int r){ int mid=l+r>>1; if(l==r) { ret原创 2017-07-06 18:57:13 · 445 阅读 · 0 评论 -
bzoj3750: [POI2015]Pieczęć
暴力出奇迹。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;bool k[1005][1005];int cx[1000005],cy[1000005],n,m,a,b;int main(){ int t; cin>>t; whi原创 2017-06-26 14:50:21 · 247 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) A. The Useless Toy
日常水题。模拟什么的随便搞。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9') ch=getchar(); whil原创 2017-07-31 01:04:11 · 201 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) B. The Festive Evening
维护每个字母最先最后位置。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9') ch=getchar(); while原创 2017-07-31 01:08:27 · 211 阅读 · 0 评论 -
Codeforces Round #425 (Div. 2)B. Petya and Exam
题目大意给出一个字符串和多组询问,‘?’代表一个好的字符,‘*’代表一个坏的字符串(可以是空串),能否让询问和字符串相同。题解由于‘*’只有一个,可以知道其代表的长度,暴力判断即可。(要注意询问比字符串长的情况)。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;原创 2017-07-25 01:47:44 · 509 阅读 · 0 评论 -
Codeforces Round #451 (Div. 2) D. Alarm Clock
题目大意删去最少的点使没有连续的长度m的一段有超过k个点。题解从前到后找,有一个时刻不符合条件就把当前点删掉,显然这样是最优的。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;int read(){ char ch=g原创 2017-12-16 22:45:05 · 274 阅读 · 0 评论