自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round #325 C Gennady the Dentist

题意:一个医生给n孩子拔牙,每个孩子的都有三个参数,分别为他的v哭声,d失去信心,p原有信心每当一个孩子拔了牙之后,他的哭声会传递使其他的孩子失去信心,初始值为vi,每经过一个人减少vi-1,直至vi为0、如果其中有一个孩子,他的信心问你,这个医生能给几个孩子拔牙,输出他们的编号、思考:如果一个孩子为负数,他要跑,他后面的孩子都要-di、还有就是,如果这个孩子已经为负数的话,那么我

2015-10-13 03:31:53 583 1

原创 Codeforces Round #325 B Laurenty and Shop

题意:给你两组数,表示第一条街每家,相邻道路的要走的时间、第二组数表示第二条街每相邻道路的时间第三行表示,每家对应的马路行走要花费的时间、那么他从右下角走到做上角再回来要花费的时间是多少?他只允许过两次道,并且,他回来不可以走与第一次走的想同的路、思路:看图,从又下角走到左上角,只有n中方式、如果要想不同,直接将这n中花费的时间排序,输出最小的两个时间的合就是答案AC代码:#i

2015-10-13 00:08:27 393 2

原创 Codeforces Round #325 A Alena's Schedule

题意:给你n个数,表示这个人的课程有则为1,没课则为0,每当他有课的接下来没课的时候,他就要回家他回家有个条件,就是有课之后最少是连续两次没课,他才可以回家,否则要在学校等待有课,那么,输出他在学校呆的时间、思路:将有课的下标记录下来,直接比较两者的距离,用总时间减掉回家的时间、注意:开头和结尾都会有空课,要注意减去AC代码:#include#includeconst int

2015-10-12 23:30:11 345

原创 Codeforces Round #320 D "Or" Game

题意:输入n,k,x分别表示有n个数,然后可以使每个数乘以x,x可以使用k次思路:既然x>=2那么表示,如果某个数*x了最少,他要进1位、 那么既然如此,我们可以把所有的情况都找出来也就是说,首先我将k个x相乘,那么这样我就可以使某个数进位最多,既然如此我只要模拟情况然后相乘就可以了、模拟的方法就是,我将前i个|运算预处理出来,后n-i个|运算预处理出来、最后我找每个数*x和我预处理出

2015-10-12 15:12:28 270

原创 5499 SDOI

题意:一年一度的全国信息学奥林匹克竞赛(NOI)即将举办,SD省组织进行了一次省队选拔,一共有 n (n \leq 100)n(n≤100)名选手参加了这次省队选拔。今年,SD省的省队名额为 m (m \leq 50)m(m≤50) 人,即,今年的SD省队有 mm 名队员。按照惯例,SD省的省队选拔有两轮比赛,依次为“Round1”和“Round2”,每个Round的满分为 300300 分

2015-10-10 23:52:22 292

原创 BestCoder Round #59 B HDU 5500

题意:dxy家收藏了一套书,这套书叫《SDOI故事集》,《SDOI故事集》有n(n\leq 19)n(n≤19)本,每本书有一个编号,从11号到nn号。dxy把这些书按编号从小到大,从上往下摞成一摞。dxy对这套书极其重视,不允许任何人动这套书。有一天Evensgn到dxy家玩,dxy因为和妹子有约会,就让Evensgn自己待在他家。Evensgn对这套书非常好奇,偷偷的看了一下,结果发现

2015-10-10 22:34:22 334

原创 Codeforces Round #324 C Marina and Vasya

题意,给你一个n和t,n表示S1和S2串的长度,让你找出任意一个T串,T串与S1对应位置不同的个数=t,T串与S2对应位置不同的个数=t、 如果没有T串输出-1,有则输出一种T串便可、思路:模拟,将S1[i]=S2[i]的赋值到T[i],然后将T串的其他位置初始为既不等于S1又不等于S2的、接下来直接模拟就可以了、感觉没什么难度、AC代码:#include#include

2015-10-07 21:48:00 337 2

原创 Codeforces Round #324 D Dima and Lisa

题意:给你一个奇数n,问你这个"奇数"可以由哪k个素数的合构成、 1思路:暴力,首先找出距离n的最近的素数,然后直接找就可以了、时间复杂度sqrt(n)*log(n)、AC代码:#include#include#includeint n;int falg;int prime(int x){ for(int i=2;i<=sqrt(x);i++){

2015-10-07 15:53:53 277

原创 Codeforces Round #324 B Kolya and Tanya

题意:输入n,一共有3n个人,围着一个桌子坐,每个人有1~3个硬币,如果 ai + ai + n + ai + 2n ≠ 6发硬币的人是满意的、 输出让这个发硬币的人满意的方法、 有可能很大答案要mod09 + 7、思路:考虑反面,每个三元组互相独立,然后有7种方案和为6,那么有7^n个不合法方案,答案就是27^n-7^nAC代码:#includeconst int mod

2015-10-07 12:55:36 330

原创 Codeforces Round #324 A Olesya and Rodion

题意:输入一个n和t让你输出任意一个n位数能整除t,如果没有则输出-1、思路:太水、、、只有n为1,t为10的时候为-1、AC代码:#includeint main(){ int n,t; while(scanf("%d %d",&n,&t)!=EOF){ if(t==10){ if(n==1) pri

2015-10-07 12:51:55 259

原创 Codeforces Round #323 D Once Again...

题意:给你n和T,n表示n个数,T表示将这n个数复制T次、 问:复制了T次之后新生成的n*T个数的最长不下降子序列的长度为多少?思路:首先考虑一个问题,如果复制了T次之后,这T次中间的很多次是不是选择的是n个数中出现最多的某个数? 答案是,一定是。那么,接下来还有一个问题就是,我很有可能将这n个数复制了很多次之后这些数可以组成一个新的最长不上升子序列、 首先,我们算出将n个数中出现次数

2015-10-06 00:09:22 415

原创 Codeforces Round #323 C GCD Table

题意:由n个数,可以构成n*n的gcd矩阵给你n*n个数,表示这个n*n矩阵的元素(是任意顺序的)然后让你找到这n个数,满足这个gcd矩阵思路:既然满足矩阵,那么首先我将这n*n个数排序,按照降序找一定是可以的,因为首先要满足矩阵,最大的数一定是n个数中的一个。既然如此,每在确定一个数之前我将我已经确定的数他们的gcd都找出来,并且-2,

2015-10-05 15:19:02 518

原创 Codeforces Round #323 B Robot's Task

题意:给你n个数,没选定一个数之后要找大于等于他的最小的,也就是从最小的开始找,然后找第一个大于等于他的,问将所有的数都找完最少需要换几次方向、思路:直接模拟+贪心,一直到找完所有的数、从最小开始找,一直到找完,左边找完找又边,依次从左边的头或者右边的头开始找,一直到找完、AC代码:#include#includeconst int maxn = 1100;int n;int

2015-10-04 04:48:35 369

原创 Codeforces Round #323 A Asphalting Roads

题意:给你n*n个组数,要在n*n的格子里面,每个交点铺沥青,每组数有两个数值一个为行标一个为列标,问你在这n*n个组数中,在满足所有的行和列都填上要在哪几个工人处铺路,最后将工人按升序输出、思路:直接标记,如果当前行和列没有被标记那么选择当前工人、最后直接输出便可、AC代码:#include#include#includeusing namespace std;const i

2015-10-04 04:41:10 370

原创 HDU 5444 Elven Postman 2015 ACM/ICPC Asia Regional Changchun Online

题意:给出你n个数来表示一个二叉树,让你查询q个数的位置,如果再根节点换行,否则按照图上小于当前根节点为"E",大于则为“W”、思路:直接模拟就可以了、 如果大于则输出"W",小于则输出“E”,如果大于则找第一个大于当前数的,小于则找第一个小于当前数的、边找边输出、AC代码:#include#includeconst int maxn=1010;int T;int n,m;i

2015-10-02 16:09:00 308

原创 HDU 5443 The Water Problem 2015 ACM/ICPC Asia Regional Changchun Online

题意:给你n个数求这n个数中[l,r] 中的最大值为多少、思路:水题,直接过、#includeconst int maxn = 1100;int a[maxn];int q,l,r;int T,n;int main(){ scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=1;i

2015-10-02 16:02:35 254

原创 Codeforces Round #322 D Three Logos

题意:给你6个数x1,y1,x2,y2,x3,y3、 这6个数分别为一个广告牌的长和宽、问你这3个广告牌是否可以组成一个n*n的正方形、 第一个广告牌的字母为A,第二个为B第三个为C输出这个正方形,如果有多组,随便输出其中一组便可、广告牌只能用一次,也可以旋转、思路:可以想到,如果三个广告牌可以组成正方形的话,那么正方形N的边长一定为6个数中的最大值、那么既然知道了正方形的大小,便可以将边

2015-09-30 11:01:39 320

原创 Codeforces Round #322 C Developing Skills

题意:给你N个数,和k值,问你这N个数除以10的整数位的最大值,可以将k值给N个数,问你能得到的最大值,N个数+k的值不可以超过100,超过100则无效、思路:模拟+贪心、 将n个数从小到大排,依次将k给出去就可以了、AC代码:#include#include#includeusing namespace std;const int maxn = 100100;struct no

2015-09-30 10:52:08 274

原创 Codeforces Round #322 B Luxurious Houses

题意: 给出你N个数,问你这个数想要比后面的数都大至少要加几? 思路: 有一点点考思路,从后向前找,依次找出最大值,直接比较就可以了,有一点点细节,就是要记录最大数和当前数的下标是否是同一位置,如果是则为0否则,直接算便可、AC代码:#include#includeconst int maxn=100100;int a[maxn];int b[maxn];int n;int

2015-09-30 10:47:40 354

原创 Codeforces Round #322 A Vasya the Hipster

题意:给出一个人蓝色袜子和红色袜子的数量、 出门穿一只蓝色一只红色就是时尚、否则为一般、 问:可以穿时尚和一般的天数各为多少、思路:水题,直接模拟一次过、AC代码:#include#includeint main(){ int a,b; int x,y; while(scanf("%d %d",&a,&b)!=EOF){ x=y=0;

2015-09-30 10:42:52 270

原创 Codeforces Round #321 B Kefa and Company

题意:给你n和d,n表示有几个人,d表示相差值,给出你每个人的价值和友谊值,让你求出在每个人之间相差不超过d的情况下,友谊值的最大值、思路:模拟,依次向前找,找出一个那么便与之前我找过的友谊值的和值进行比较大小,最后输出最大值、之前写的结构体型似乎有问题、因为在大数据的时候会超时,换成用容器就过了、48msAC代码:#include#include#include#inclu

2015-09-23 20:08:55 384

原创 Codeforces Round #321 A Kefa and First Steps

题意:给你N个数,让你求连续最长不上升子序列的元素个数、思路:一重for循环,直接模拟,一次过、AC代码:#includeconst int maxn=110000;int a[maxn];int n;int main(){ while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++) scan

2015-09-23 20:06:14 241

原创 HDU 5463 Clarke and minecraft

题意:给出你n个材料,这个人的背包有36个格子、每个格子最多装一种材料64个、 n行给出你每个材料的种类和属性、让你求最少要来回几次、思路:简单的模拟,有点贪心的意思、AC代码:#include#includeconst int maxn=1100;int T;int n,m,r;int vis[maxn];int main(){ scanf("%d",&T);

2015-09-20 00:45:17 297

原创 HDU 5455 Fang Fang

题意:给出你F0、F1、F2以及Fn=Fn-1+' f '、 给出你串S,S串是首位相连的、问S串在F里面选择最少用多少个Fi组成,必须将整个S串分解完毕、如果不能分解完毕那么输出-1、思路:模拟,将每个c的字符的位置求出来,因为c与c之间一定最少有两个f如果没有两个f那么一定是-1、 最后一个c与第一个c之间距离几个f特殊处理便可、还有两种特殊情况,一种是全为f的情况,如果是这种情况,那

2015-09-20 00:41:24 442

原创 UVA 1388 - Graveyard

题意:n个点在一个圆上,每个点的距离平均分布,再加入M个点,那么最少需要移动多少距离可以让n+m个点平均分布,问最少移动的距离、思路:模拟,将N个点的位置求出来,再将n+m个点的位置求出来,第一个点都是固定不动的,其他的点只需要按照最短的移动便可、AC代码:

2015-09-10 00:29:58 356

原创 HDU 3336 Count the string

题意:问你所有前缀包含本身出现的次数是多少、 首先,不得不在这给大家叙说一个问题,那就是这道题的数据很弱,很多有BUG的代码,也能过、在这,还是希望按照正确的思路,正确的做法来AC这道题、对于这道题,我本身也是做过了这道题的,其实我刚开始的思路完全错误,不过我AC了、 我朋友在做这道题的时候,问了我一组数据,就是abababab这种情况的时候输出20、思路:这道题的思路是KMP+DP的

2015-09-09 01:28:41 228

原创 POJ 2752 Seek the Name, Seek the Fame

题意: 给出你一行字符串,输出在这行字符串中既是前缀又是后缀的字串的长度、思路:KMP中,next数组的性质、因为next数组求解的就是前后缀相同的个数、首先他自己本身一定是相同的,然后根据next数组依次向前跳跃、最后按照从小到大输出便可、AC代码:#include#includeconst int maxn=400200;char T[maxn];int lent,next

2015-09-08 11:43:33 205

原创 UVA 11300 Spreading the Wealth

题意:N个人围着圆桌坐,他们每个人手里有这段时间的收入,每个人可以给予他旁边的人钱、问:所有人分到的钱数相同最少转手多少钱、思路:推导过程、设P为平均钱数、设Xi为他本身拥有的钱,设字母A为第一个人得到的钱数,B为第一个人给出的钱数、字母是相对的,也就是每个人给出和得到的有所不同,用不同的字母来表示由题可知,每个人最后一定为P,因为所有人的钱最后一定是相同的,则有下列公式:P=X1

2015-09-08 02:35:19 256

原创 POJ 2406 Power Strings

题意: 其实就是查看该字符串是否循环,让你求出他的最大循环次数、思路:next数组性质、 长度最大时,循环次数最大、 if(len%(len-next[i])==0&&next[len) printf("%d",len/(len-next[len]));AC代码:#include#includeconst int maxn=1100000;char T[maxn];int ne

2015-09-07 10:11:16 290

原创 Codeforce Bubble Cup 8 - Finals D Tablecity

题意:警察抓小偷,有2行1000列个街区,警察总部要抓到这个小偷,小偷个小时都要换一个位置,换位是根据除了上下之外其他的六个方向中的一个行走,由于只有两行,所以小偷只能走他的左右位置和斜角位置,每个小时可以派两个队伍去抓捕其中两个位置的街区,问在2500个小时内能一定能抓到小偷的时间和两个队伍警察的坐标位置、没有输入,只有输出、思路:按照正常的思想来说,一定是两个队伍的警察是按照列来找的,

2015-09-07 02:33:34 691

原创 Uva 11292 The Dragon of Loowater

题意:在一个国家,m个鸭子出现了变异,变成了恶龙,国王有n个骑士,想要杀掉所有的恶龙要保护国家的安全,如果不能将其全部杀死,那么国家便要灭亡、 给出你m个恶龙的身高,和每个骑士的身高,只有当骑士的身高大于等于恶龙的身高,骑士才能杀死恶龙、 然而派出骑士要话费一些金额,他的金额与骑士的身高是一样的、国王是否能杀死所有的恶龙,如果能杀死,国王想要话费最小的代价来杀死所有的恶龙、 如果杀不死恶龙国家便要

2015-09-06 23:48:17 286

原创 UVA 11729 Commando War

题意:给你N个士兵,队长分别给每个士兵一个任务,每个士兵有不同的任务并且互不干扰,每个士兵有两个变量,第一个变量为队长交代任务的时间,第二个变量为当前士兵要完成任务的时间,问:当最后一个士兵完成任务的时候,时间最短为多少、 你可以安排队长给士兵安排任务的先后、思路:一道贪心题,首先要排序,将士兵完成任务的时间排序,因为如果这个士兵完成的时间大于第二个士兵交代的时间,那么我便相当于他们两个的时间

2015-09-06 23:29:13 297

原创 HUST 1010 The Minimum Length

题意:有一个字符串A,将A复制很多次变为新字符串 AAAAA........ 然后,在新字符串中 切出一部分、为B,那么现在给出你B串,问A串最短的长度为多少?思路:按照题意,切出的B串一定是包含部分A串的、 根据KMP中next数组的性质,next数组中存储的是最近回溯的位置,只需找到最后一位的长度便可求出循环节的长度、AC代码:#include#includeconst int

2015-09-06 19:24:14 260

原创 HDU 1358

题意:给你一组字符串,问从第二个位置开始,前n个字符串是否循环,循环的位置,以及循环的次数、思路:next数组最基本的两大特点之一,找出当前的循环节,以及循环长度、 再判断是否循环,直接输出当前串的长度/循环节的长度便可、唯一需要注意的就是最后多了个换行、AC代码:#include#includeconst int maxn=1000000;int lent;char T[ma

2015-09-06 11:18:37 484

原创 HDU 2087

题意:给出两个字符串,在第一组字符串找出第二组字符串、 并且不可以重叠、因为题意要求的是减出多少个第二个字符串,并不是找到、思路:根据next数组的性质,每次当我找到第二组字符串时,一定要将j初始化为0、 因为next数组找的是前后缀相同的最值、那么既然我找到了一个便一定要将其重新初始化、 因为题意要求不可重叠、而next数组找的是可以重叠的、 其他的就没什么需要注意的了。AC代码:

2015-09-06 10:54:32 239

原创 HDU 1686

题意:给你两组字符串,问第一组串在第二组串中出现了多少次、串一定要连续、 并且串可以重叠、思路:最基本KMP 将next数组计算出来然后,直接求解KMP就可以了、由于next数组中找的是前缀和后缀相同的最大值、 所以,就算重叠,也一样可以进行匹配、无需特殊处理、AC代码:#include#includeconst int maxn=1000001;const int maxm=1

2015-09-06 10:19:52 217

原创 HDU 1711

题意:给出两组数,第二组数是否在第一组数里面,一定连续、思路:最基本的KMP、 自己写的时候wr了、 发现第二组数,按照题意里面给的数组大小过不去、 开大点就过了、AC代码:#include#includeconst int maxn=1000000;const int maxm=100000;int S[maxn];int T[maxn];int next[maxm];

2015-09-06 10:06:52 237

原创 HDU 5428

题意:给你N个数,让你求出这N个数最小的因子之积,但要满足一个条件,那就是这个乘积必须包含三个因子可以为本身、思路:既然包含三个因子并且包含了本身、 那么完全可以知道,这个乘积只需要所有数中不包含1的最小因子的乘积、既然要找出最小因子的乘积、那么可以用筛选法来求出他的所有因子、首先找到其中的一个因子,然后除尽,一直除到不能除为止、将每个因子存入数组中、 要注意一个东西,那就是它自己是它

2015-09-06 03:17:54 843

原创 HDU 2639 Bone Collector II (背包 第K优解)

题意:给出N,V,K、 分别代表 物品的数量,背包的体积和满足条件的第K个大的值、  接下来两行分别有N个数字,分别代表着每个的价值,和体积、 最后求出第K个大的值为多少、思路:根据背包九讲中的思路来进行思考、 如果对背包不是特别理解的可以看一下背包九讲、 链接:http://blog.csdn.net/liuqiyao_01/article/details/8521776 

2015-09-02 15:38:55 352

原创 HDU 5014 Number Sequence

题意:给你N个数,已知有a、和b两个数组、a和b数组的大小都为N,每个数字都是在0~N里面选择,每个数字只能选择一次、 t=a[0]^b[0]+... a[i]^b[i]....a[N]^b[N]、 输出t的最大值,和对应的t数组思路:我是在纸上推导的、   推导的结果是从大到小推,每个数对应的一定为他除了最高位的反码、也就是说1010->101  那么,怎么才能由当前数字怎么求出他对应的

2015-09-01 20:06:56 250

空空如也

空空如也

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

TA关注的人

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