cf
文章平均质量分 51
chen_minghui
这个作者很懒,什么都没留下…
展开
-
codeforces 896A Nephren gives a riddle dfs搜索
题目链接http://codeforces.com/problemset/problem/896/Acsrf_token=2d70d2ab176389681e17947374617961 有意思的搜索#include<bits/stdc++.h>#define ll long longusing namespace std;const int INF = ( 2e9 ) + 2;const原创 2017-12-04 17:01:46 · 314 阅读 · 0 评论 -
codeforces 797B Odd sum
题意:给定一个整型序列,求得其中一个子序列,其和为奇数,且和是所有子序列中最大的。输入的数据保证一定包含和为奇数的子序列思路:所有正数相加得sum,如果为奇数,sum即答案,否则答案为Max(sum-mi,sum+mx)mi为最小正奇数,mx为最大负奇数#include#include#define ll long longusing namespace std;const int原创 2017-05-22 19:41:16 · 321 阅读 · 0 评论 -
codeforces 777B - Game of Credit Cards 贪心
题意:有少于两个含有n位数得号码,其中一个是数n1,每一个位固定不变,另一个数n2位之间可以互换,但不能改变其大小。求1.使得n2每一个位上的数小于n1中每一个位上的数的数目最少,输出其数目2.使得n2每一个位上的数大于n1中每一个位上的数的数目最多,输出其数目思路:两序列升序排,从序列中找#include#includeusing namespace std;int a原创 2017-05-23 22:04:30 · 320 阅读 · 0 评论 -
codeforces 798C - Mike and gcd problem 贪心
题意:如果一个序列B={b1,b2,b3,…,bn},其gcd(b1,b2,b3...bn)>1则称之为漂亮的。现在给定一个长度为序列和一个操作,选定一个i(0,分别用ai-ai+1,ai+ai+1代替原来的ai,ai+1。问最少操作几次,使得序列成为一个漂亮的序列(2思路:贪心,一对奇数操作一次,即可变为偶数,一奇一偶要两个次。相邻两个都是奇数时,那么优先选择这两个数操作。原创 2017-05-24 10:57:11 · 243 阅读 · 0 评论 -
codeforces 810A Straight <<A>> 暴力
题意:给定n和k,并且已知一个数组a,a.size=n。求最少加几个小于等于k的数,使得平均值四舍五入后等于k。思路:每次加个k是最划得来的,假设加x个数ai....a(i+x) #include#define ll long longusing namespace std;int main(){ int n,k; while(~scanf("%d%d",&n,&k)) {原创 2017-05-26 19:10:35 · 215 阅读 · 0 评论 -
codeforces 810B - Summer sell-off 贪心
题意:有n天,每天最多可以卖的产品ki件,来购买产品的顾客li,每个顾客买一件,可以选定f天,使得可以(待)卖的产品数翻倍,问怎么安排使得卖的产品数最多,输出产品数。思路:先从l和k中取小的,作为没有翻倍前卖的产品数对任意一天如果1。ki>=li则k翻倍没有效果,不会增加卖的产品数2。ki如果2*ki如果2*ki>=li,则(卖出)产品数增加li-ki只需将增加量从大到原创 2017-05-26 21:38:50 · 386 阅读 · 0 评论 -
codeforces 807A - Is it rated? 水
题意:两串数据,如果出现a[I]!=b[I],输出rated,否则看是否递减,是:输出maybe,否:输出unrated。题目水,题目意思很恶心#includeusing namespace std;int a[1005],b[1005];int main(){ int n; while(~scanf("%d",&n)) { int flag1=0,flag2=0原创 2017-05-27 09:39:03 · 573 阅读 · 0 评论 -
codeforces 797C - Minimal string 贪心
题意:给定一个非空串s,和两个空串u,t。可以进行一下两个操作1.提取s首字符加到u2.提取u端末尾字符到t。求使得字符串t最小并输出思路:首先预处理,计算出每种字符个数,然后从小到大开始,使得t的前端尽量小,用一个栈维护u端末尾字符,栈顶是u端末尾字符。#include#include#include#includeusing namespace std;con原创 2017-05-28 13:50:42 · 287 阅读 · 0 评论 -
codeforces 812B Sagheer, the Hausmeister dp
参考某大佬的思路:dp[I][0/1]表示已经灭掉第I层的灯,并且在第I层的左/右端#include#include#includeusing namespace std;const int maxn = 20;const int maxm = 110;int L[maxm],R[maxm];int dp[maxn][2];int main(){ int n,m; cha原创 2017-06-04 21:09:06 · 316 阅读 · 0 评论 -
Codeforces 429B B. Working out dp
题意:给n*m的矩阵,每个格子有个数,A从(1,1)出发只能向下或右走,终点为(n,m),B从(n,1)出发只能向上或右走,终点为(1,m)。两个人会在某处相遇,求出除了相遇点外,他们两个路径之和的最大值(相遇点不算作距离)思路:dp0[I][j]表示从左上角走到(I,j)的最大距离dp1[I][j]表示从左下角走到(I,j)的最大距离dp2[I][j]表示从右上角走到(I,j)的原创 2017-06-05 20:38:53 · 300 阅读 · 0 评论 -
codeforces 817C Really Big Numbers 二分
题意:用f(x)=x-(x的各个位之和),求出小于n,且f(x)>=s满足条件x的个数。思路:每个x都有唯一对应的f(x)的,所以可以用二分来找答案#include#define ll long longll get(ll num){ ll d=0; ll temp=num; while(temp) { d+=temp%10; temp/=10; } return原创 2017-06-19 15:03:00 · 406 阅读 · 0 评论 -
C - Sagheer and Nubian Market 二分
题意:n个物品,s的预算,每个物品i有个基本的价格ai。实际价格取决于购买的数量k。如果买k个物品,物品的下标分别x1~xk. 那么这些物品的价格为a[xi]+xi*k.求购买的物品至多多少个,并求出最少花费思路:二分枚举购买物品个数,算出价格后排序。#include#include#define ll long longusing namespace std;ll a[10001原创 2017-06-19 17:07:10 · 254 阅读 · 0 评论 -
codeforces 805A - Fake NP
题意:给定一个区间,从区间所有整数中,包含边界l,r,找出他们共同约数出现次数最多的数,将其打印思路:lr区间中一定有偶数,否则l,r相等,任意输出一个即使,偶数都有约数2,而奇数没,所有答案为2 =_=#includeint main(){ int l,r; while(~scanf("%d%d",&l,&r)) { if(l==r) printf("%d\n",l);原创 2017-05-22 09:47:14 · 252 阅读 · 0 评论 -
808A Lucky Year
题意:给定一个数n,找到一个比n大的数,并且非零位之多一位的数,输出他们之间的差值#include#define ll long longusing namespace std;int main(){ ll N; while(~scanf("%I64d",&N)) { ll n=1,a=N,b; while(N){ b=N%10;原创 2017-05-21 21:05:53 · 215 阅读 · 0 评论 -
codeforces 787A - The Monster
题意:两个人分别在a*x+b和c*y+d时发出声音(x,y=0,1,2,...),a,b,c,d已知,问他们会同时发出声音吗.能够输出时刻,否则输出-1思路:暴力或者扩展欧几里得#include#includeusing namespace std;int main(){ int a,b,c,d; while(~scanf("%d%d%d%d",&a,&b,&c,&d)原创 2017-05-19 21:34:06 · 420 阅读 · 0 评论 -
CodeForces 801A Vicious Keyboard 模拟
题意:给定一个只含V和K两个字符的字符串。要求最多变化一个,从V到K,或者从K到V,最多能组成多少个VK 子串。思路:长度只有100,暴力枚举每个字符变化,再求VK子串的数目,取其中最大的。#include#include#include#includeusing namespace std;int getvk(string s){ int n=s.size(); int原创 2017-05-01 20:54:55 · 316 阅读 · 0 评论 -
codeforce 789e Masha and geometric depression 暴力模拟
题意:给定一个等比数列的首项和公比b,q,(b和q都可以为0),另外给定一个数L,和m个数a[m],从首项开始计数,如果其绝对值小于等于L,则加1,然后取第二项,拿第二项当首项继续计数,直到b>L,将技术结果输出,如果有无数个,输出inf思路:分情况,输出。如果abs(b)>l直接判断为0.剩下的是bq=-1,数列为b和-b,都有无穷个,同理只要有一个不存在“bad”数组里,就有无原创 2017-05-05 11:10:08 · 724 阅读 · 0 评论 -
CodeForces - 769D k-Interesting Pairs Of Integers 暴力
题意:给定一个长度为n的a数组,(2=思路:预处理用一个数组记录数字I有几位为1,ai与aj有几位不同可以通过num[I^j]确定,1e4的二进制有14位,则I^j的做为14位1,num至少得开16383+1.#include#includeusing namespace std;int num[16384];long long vis[10001];void init(){原创 2017-05-08 19:11:54 · 468 阅读 · 0 评论 -
CodeForces 768C Jon Snow and his Favourite Number 暴力 空间换时间
题意:给定一个长度 为n个数得数组a,一个数字x,一个数字k;现在对数组进行以下步骤,1.将数字从小到大排序,2.将奇数位置的数与x异或,偶数位置不变。会得到一个新的数组。一个这样的两个步骤称为操作,求进行k次后,最大值和最小值。思路:点击打开链接 这样的做法长姿势了#include#include#includeusing namespace std;const int INF原创 2017-05-09 20:54:38 · 543 阅读 · 0 评论 -
codeforce 804B - Minimum number of steps 快速幂+推断
题意:在一个只有a和b两种字符的字符串中,将ab边为bba,问知道不能变化为止最少变多少次思路:ab-》bba 数量上a没少,b多一个,且a移动到左边了。a每和一个b变换成bba,就相当于将a,b对调,并且右边多出一个b,变成bba后,原串中左端还有一个a,a就会和两个b配对,并多出两个b。所以可以计算b之前有多少个a,一个a:ab -> bba两个a:aab -> ab ba原创 2017-05-17 22:15:33 · 292 阅读 · 0 评论 -
codeforces 773A Success Rate 二分
题意:某人很喜欢一个比例p/q.现在他在oj上交题,成功率为y/x,为了使成功率到达他最喜欢的比率,他该交多少题,如果无法达到,输出-1思路:假设交题ac次数为B,交题总数Ap/q = y+B/x+A => (p*k)/(q*k) = x+B/y+AA+B = p*k => B=p*k-xx+A = q*k => A=q*k-y and A>=B k越小,A和B越小原创 2017-05-18 12:14:30 · 451 阅读 · 0 评论 -
codeforces 804A - Find Amir 贪心找规律
题意:有编号为1~n的学号,某人要从某一点开始,顺序访问所有学校,编号I到j的旅费为(i+j)%(n+1),求拜访完所有学校后的最小费用思路:两学校的编号之和要接近n+1,学校按从1~n排,每次从选取两端的学校,就是最小的,然后就有规律可以找#includeint main(){ int n; while(scanf("%d",&n)!=EOF) { int ans=(n-1原创 2017-05-18 15:18:29 · 384 阅读 · 0 评论 -
codeforces 793A Oleg and shares
题意:可以在数组a中,对任意一个元素进行减k操作,问最少操作多少次使得所有a的元素相等,若不能做到输出-1思路:选取a数组中的最小元素m,无解的条件为存在(ai-m)%k!=0,(0=还有一种思路:http://blog.csdn.net/harlow_cheng/article/details/70568269但是不懂证明#includeconst int maxn = 1e5原创 2017-05-18 17:12:46 · 283 阅读 · 0 评论 -
codeforce 797A - k-Factorization 唯一分解定理
题意:给定两个数n,k。(2 ≤ n ≤ 100000, 1 ≤ k ≤ 20).找到k个数使它们的乘积为n,如果不能找到,输出-1思路:任意一个数可以唯一分解成如下形式:n= (a1^b1)*(a2^b2)...(an^b^n)其中a1~an为质数且,满足a1#includeconst int maxn = 21;int a[maxn*1000];int main(){ i原创 2017-05-18 19:54:25 · 381 阅读 · 0 评论 -
codeforces 808B - Average Sleep Time
题意:给定一组数,每k个长度求一次和,求平均值#include#includeusing namespace std;int a[2*100001];int main(){ int n,k; //freopen("in.txt","r",stdin); while(~scanf("%d%d",&n,&k)) { int num=n-k+1; double su原创 2017-05-18 22:02:03 · 362 阅读 · 0 评论 -
codeforces 789A - Anastasia and pebbles
题意:一个人有两个口袋,她要每天都要从路上带走一些石头,路上的石头有n种,每种有ai块,她的每个口袋最多装k个石头,并且强迫症不允许她将石头混合。所以一个口袋只能装一种。她每天只来一次,求最少次数将所有石头带走。思路:因为两个口袋容量一致。所以可以先看成每一次只装一个口袋,求得总次数再除个2,可能会单出一个,就要向上取整。#include#include#includeusing n原创 2017-05-19 16:32:29 · 2253 阅读 · 0 评论 -
codeforces 780B - The Meeting Place Cannot Be Changed 二分
题意:n个人在一条直线上,第I个人在坐标ai处,步行的最大速度为vi(单位m每s),他们能往左或往右走,求出他们能够在一点相遇的最小时间思路:二分枚举时间t,判断他们所能到达的边界,有交集的不断合并,只要有一个没有交集说明这个时间不能到达同一点。#include#include#define ll long longusing namespace std;const int max原创 2017-06-19 20:31:33 · 406 阅读 · 0 评论 -
codeforces 808D - Array Division
题意:一个数组中可以将一些元素的位置移动到任意位置,问能否将一个移动后数组从某一位置处分成两部分,使得这两部分和相等思路:首先求出数组所有元素总和以及前缀和,总和不能与2整除直接判断NO,然后再枚举要移动的元素,这个元素可以可以往前移,也可以往后移。如果不移动元素,就存在两部分和相等,那么必有某个前缀和pre[x]=sum/2。现在考虑移动第I个元素,如果往前移动则存在某个小于I的x,pre[原创 2017-06-20 19:27:57 · 300 阅读 · 0 评论 -
codeforces 799C Fountains 线段树
题意:购买喷泉有两种方式,用硬币或砖石,都有对应的价格,和美丽度。给定初始的硬币和砖石数,要求买两个喷泉且美丽度之和最大。如果不能买两个输出-1思路:三种情况:两种都用C或D,CD各一个。C,D各一个只要选择能够买得最大美丽度的喷泉。两种都用C或D,选择了一个之后,另外一个能够买得范围就确定了。#include#include#include#define ll long long原创 2017-06-21 21:02:44 · 515 阅读 · 0 评论 -
codeforces 813C The Tag Game dfs
题意:给一颗树,某人A在1节点处(1是根结点),去追在另外一个结点上的人B,B想尽量迟一点最抓到,A想尽快抓到B,每人都是走最优的。求B最后被抓到总共行动的步数。思路:先分别计算出A到所有点的距离,和B到所有点的距离。如果db[I]#include#include#include#include#include#include#include#include#include原创 2017-07-27 10:40:38 · 270 阅读 · 0 评论 -
Codeforces 780C-Andryusha and Colored Balloons dfs
题意:给定一颗树,要在结点上涂色。规定要求每三个直接相连的结点颜色不能相同。求用最少的颜色使满足要求,并输出颜色结点颜色。#include#include#include#include#include#include#include#include#include#include#define cle(a) memset(a,0,sizeof(a))#define in原创 2017-07-27 11:34:10 · 231 阅读 · 0 评论 -
codeforces 399 B. Code For 1 归并
题意:给一个数n,和一个区间[l,r].数n可以做样的变化n=> n/2,n%2,n/2 生成一个序列。如果序列中有大于等于2要继续生成,直到全部数小于2.求区间l,r上1的个数#include#include#include#include#include#include#include#include#include#include#define cle(a) me原创 2017-07-27 12:36:17 · 329 阅读 · 0 评论 -
CodeForces 519D A and B and Interesting Substrings 前缀和
题意:给出26个小写字母的权值,给出一个字符串s,要求找出所有这样的子串,他们的首尾字符相同,并且除了首尾外其余字母首尾之和为0的子串。将数目输出出来。思路:找前缀和相同,并且字符相同的数目。简直是黑科技#include#include#include#include#include#include#include#include#include#include#d原创 2017-07-27 19:58:28 · 193 阅读 · 0 评论 -
Codeforces 264 (Div. 2) D. Gargari and Permutations
题意:给定k个1~n的排列,求出k个序列的LCS长度。思路:如果k列中,每个i都在j前面,那就在i到j之间连一条有向边。这样问题转换为求最长DAG。还可以这样建图。。#include//思路:如果k列中,每个i都在j前面,那就在i到j之间连一条有向边。这样问题转换为求最长DAG #include#include#include#include#include#include原创 2017-07-29 19:31:18 · 252 阅读 · 0 评论 -
codeforces 586D - Phillip and Trains dfs
题意:一个图有三行n列。他要从最左边到达最右边,图中有一些火车,主角每次可以向右移动一格的同时还可以选择向上走或向下走或不动。同时每辆火车可以向左移动两格。问最后主角能到达最右端吗题目:http://codeforces.com/problemset/problem/586/D#include#include#include#include#include#include#in原创 2017-07-29 21:15:10 · 251 阅读 · 0 评论 -
codeforces 338D - GCD Table 扩展中国剩余定理
题意:给一个n*m的表G,和一个含k个整数的M序列。 (1 ≤ n, m ≤ 1012; 1 ≤ k ≤ 10000). 表中每个元素值为G[i][j]=GCD(i,j).判断表G中是否存在一行从某列开始的元素和所给的序列重合 首先如果存在,那么一定出现在I=lcm(M1,M2,…,Mk) ,cf上的证明没怎么看懂。如果I>n 可以直接判NO了。 对j: j=0 mod m1 j+1=0原创 2017-08-03 09:55:05 · 417 阅读 · 0 评论 -
Codeforces 652E Pursuit For Artifacts 双连通分量缩点
题目链接http://codeforces.com/problemset/problem/652/E题意给定一无向图,图中有些边被标记,某个人从s走到t,每条边只允许走一次,判断从s到t的路径中,是否可能存在被标记的边。(图保证连通)思路双连通分量缩点,如果缩点之后,缩点内存在被标记的边,那么将缩点标记。不同缩点之间存在标记边,在新图中同样给边加标记。这样缩点后的图,变成树,树中存在被标记的边和被标原创 2017-09-16 14:08:07 · 534 阅读 · 0 评论 -
codeforces dfs序+线段树+bitset
题目链接http://codeforces.com/problemset/problem/620/E题意给定一个树,现在有60种颜色,要做如下操作 1 v c:将v及其子树然成c颜色 2 v:查询v及其子树中含有多少不同颜色思路用dfs序存储子树,bitset代表子树中含有的颜色。#include<cstdio>#include<iostream>#include<algorithm>#i原创 2017-10-26 19:56:01 · 255 阅读 · 0 评论 -
codeforces C. System Administrator 构造含割点的图
题目链接http://codeforces.com/problemset/problem/245/A题意构造一个含指定割点的连通图思路将v左边连一个,右边连n-2个,右边最大连边数为n+1+ (n-2)*(n-3)/2 ,然后n个点至少连n-1条边。#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#i原创 2017-10-26 22:07:24 · 356 阅读 · 0 评论 -
codeforces 397div2 D Artsem and Saunders 贪心
题意:给一个数n,和一个数k。已知k是n进制的。但是k里面没有字母,比如A可能用10表示,求出k十进制的最小值。思路:贪心:从低位开始,要让其在数中每个位的大小接近n,这样位数越小。得到的十进制值越小。#include#include#include#include#include#include#include#include#include#include#defi原创 2017-07-26 14:02:17 · 208 阅读 · 0 评论