自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jason

博客搬家了,欢迎移步:www.jiesheng.asia与我讨论

  • 博客(133)
  • 收藏
  • 关注

原创 LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数)

题目大意:首先你需要明白欧拉函数是什么:欧拉函数指的是n以内与n互质的所有数的个数。假如n是质数,很明显,它的欧拉函数等于n-1;题目给你n个x,然后你要求出n个数的和,这n个数对应的欧拉函数大于x这道题我就是这么乱搞,然后过了。我也说不清楚为什么。打出100w内的素数表。然后找到x+1之后的第一个素数就ok了。代码当中还有打出100W以内所有数的欧拉函数的方法,比较慢,但

2015-05-09 00:00:46 1736 1

原创 ACdream的高速公路(暴力)

题目思路:每一个加油站所提供的油是任意的,也就是你不需要加到满.所以在这个加油站的位置p以及满油可以跑的最远距离d,p+1~p+d这个范围内,假如这个加油站的油价是最低的,则这段路就加这个加油站的油,假如有那一部分比较高,那就跑另外一个加油站的油,这是一开始就想到的.但具体做法还是没能够实现.其实只需要暴力一遍.price表示的是每一个单位路径所加油的单价就可以了.#define

2015-05-08 19:49:57 794

原创 CodeForces 538C Tourist's Notes (简单题)

题目大意:你在爬山,总共有n个时刻,在hi高度.每次你可以选择不动,或者向上1或者向下1.现在给你最多高的时刻n,以及中间的m个记录表示该时刻在多少海拔.问在1-n内,处于的可能的最大海拔是多少.思路就不说了,只要遍历,检查这个时刻与上一个时刻否成立,方法看代码吧.这边说一下坑点.最大的坑点是一开始是多少高度是不确定的,假如第一个数据是a,b则一开始所处的最好的高度

2015-05-05 20:32:15 897

原创 CodeForces 538B Quasi Binary(不错的贪心题 进制想法)

题目思路:你现在有一些数叫quasibinary ,这些数仅由0 和1构成,如10,.101,0,1现在给你k,你要用最少的quasibinary 数,加起来等于k,先输出个数,然后输出这些数是哪些.一开始的思路比较挫,而且严重错误.这边说一下正确的思维方法:由于我们有的数仅仅是0和1,所以这边假设4135,则至少要加5次.而且也只需要5次,因为个位无论我们取什么,他每次都是1

2015-05-05 19:41:36 1345

原创 HDU 5215 Cycle (搜索)

这个题目跟同比赛的Exploration类似,做法也类似。在那道题目只需要判断出是否存在环。而这道题目则判读这个环的边是奇数边还是偶数边。我这边采用的方法是用num表示这个点在搜索到第几条边是被搜到。下次在被搜到的时候,边数减掉上一次搜到时候的边数,就是从这个点出发回到这个点的边数了。然后判断一下奇偶就可以了。假如已经有奇数和偶数,就不用在继续搜了,直接结束,也算是小小的剪枝。#p

2015-05-04 15:48:45 777 2

转载 FZU 最小费用

其实这道题目是学习别人的.copy from wdcjdtc思路:对于 01011->11100如果只靠相邻位移动是需要5步的。然而不管怎么移动,步数是固定的。那我们就把最前面的0和最后面的1交换假设0在i,1在j。我们交换的代价就是min(y,x*(j-i))然后累加求和就好了!很棒的脑洞题!#include"cstdlib"

2015-05-03 20:05:31 488

原创 FZU 2192 位置信息挖掘 (并查集或暴力)

思路:将城市一样,并且相互未知的联一条边.然后对每一个已知的城市进行遍历,将和他相同的点,并且是未知的,变成已知.跑多次.直到不再增加新点为止.#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#includeusing namespace std;#define MAX 210000int h

2015-05-03 16:51:54 715

原创 HDU Exploration (DFS判断环,以及重边可算的处理方法)

题目大意:有若干个点,每个点之间有无向边或者有向边,并且只能走一次。问有没有存在一个点能够走出去又走回来的。思路:这道题思路当时一下子就想出来了。从每一个联通块的任何一个点出发去dfs,搜到一个点,将其标记,并继续往下搜,假如这个点已经被标记过了,那么说明之前从这个点出发过,并且现在又可以回到这个点。结束!现在说一下处理边只走一次的方法:我是用奇数表示一个方向,偶数表示这个

2015-05-02 18:33:38 695

转载 ACdream 1070 神奇的%系列二(YM)

对数据进行离线处理。这边主要是要能够想到区间的建边问题,学习了,YM大神#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#includeusing namespace std;#define MAX 110000vectorf[MAX];int a[MAX];int num2[MAX];in

2015-05-02 01:05:20 451

原创 HDU 2486 A simple stone game (K 倍动态减法博弈游戏,还未理解)

大神博客:http://www.cnblogs.com/jianglangcaijin/archive/2012/12/19/2825539.html#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;int a[2100000];int b[2100000];in

2015-05-01 23:42:19 668

转载 zoj 3876 May Day Holiday (基姆拉尔森计算公式)

大神博客:http://blog.csdn.net/u013050857/article/details/45287775

2015-05-01 18:02:37 662

原创 ZOJ 3872 Beauty of Array

题目大意:将连续的子序列,这边需要搞懂什么是连续子序列,想了半天,举一个栗子:2 3 3,他连续子序列是(2),(3),(3),(2,3),(3,3),(2,3,3)。这样子就懂了吧。beauty summation 指的就是这个序列当中不重复的数的和。这道题就是要求所有子序列的beauty summation的和。方法:从左直接扫。由于是连续,所以这个数除了自己一个之外,都要

2015-04-29 21:49:23 495

原创 ACdream 暴力专场F

跟校赛的那道质数搜索类似.求一个数可以由多少k个数相加组成.从大到小搜索一遍就可以了.并且正好符合他的条件,学习了.#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;int n,k;int ans;void dfs(int id, int sum,int

2015-04-29 18:57:32 450

原创 ACdream 暴力专场B

思路:只有一个方向,就不需要递归了,假如递归就会RE;另外需要标记这个点某个方向是否走过以及被消灭了就不能再被消灭.三点注意了就可以过了.'#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;int Div[4][2] = { 1, 0, 0, 1, -

2015-04-29 18:38:12 524

原创 HDU 3951 Game (找规律)

题目大意:其实就是一个环形的巴什博奕。n个硬币排成一环,每次我们只能取连续的1-k个。问最后取玩为胜的是谁。这边k=1的时候需要特判。当k大于1的时候。可以知道假如k那么先手取完之后,假设取了x,这时候就剩下长度为n-x的类巴什博弈问题。因为要取连续,所以隔断部分不算连续,就不能取。这时候后手的必胜策略是,假如n-x小于k,这取光。否则将该段分成两端。在之后的操作过程当中,

2015-04-22 13:42:09 508

原创 HDU 3032 Nim or not Nim? (SG函数应用)

题目大意:与一般的尼姆博弈不同之处在于,每一堆石子你可以进行的操作是,你可以将其分成两堆,并且两堆的个数可以不同。这边求出SG函数,然后异或判断是奇异局势就可以了。这边因为范围比较大,所以SG函数的求法是推出来的。多写几组就可以了。最近刚开始研究SG函数,所以这题也是看别人的题解,说不上怎么推出SG函数的公式,更多的解释,大家可以去看大神的解释。这边SG(4k)=4k-1;

2015-04-21 23:54:55 427

原创 B - 娜娜梦游仙境系列——跳远女王 (最短路)

思路:比赛的时候并没有想到,赛后的时候也并没有想出来。自己一直无法突破的地方在于1000个点,要是我给每个点建边的话,那么100W就会爆,其实并不会爆。而且这边可以采用的是建双向边,就是j跟j前面的建双向边。这样最终时间会少很多,而且效果是一样的。最终跑一遍SPFA就可以了自己一直没有好好学过图和搜索。听说建图的方法有邻接链表还有什么表来着,自己都不会,可笑。难怪遇到题目的时候

2015-04-16 09:03:20 1293

原创 HDU 2177 HDU 2177 取(2堆)石子游戏 (威佐夫博奕)

题目思路:威佐夫博奕的裸题。必败态为奇异局势。并且1、非奇异局势可以转化成奇异局势这是必胜的前提。#define _CRT_SECURE_NO_WARNINGS#include#include#includeusing namespace std;//威佐夫博奕//ak=k*(1+sqrt(5))/2//bk=ak+k;//假如局势不是奇异局势的话//那么可以转化成奇

2015-04-16 00:32:12 599

原创 工程校赛 G(欧拉函数+扩展欧几里得+快速乘法+快速幂)

#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #include using namespace std;char str[] = "abcdefghijklmnopqrstuvwxyz,.;:!?";char str2[110000];//欧拉函数的直接求法//欧拉函数其实就是表示为//f

2015-04-16 00:09:30 411

原创 HDU 2176 取(m堆)石子游戏 (尼姆博弈)

思路:对于一组数,必胜态肯定是所有数异或后不为0必败态的话异或之后为0;必胜态可以转换成必败态。即从a[i]中选择一个数是他变成其他所有a[i]数的异或和。这样最终异或值为0,使得对手陷入必败态。相关知识可以查看http://blog.csdn.net/acm_cxlove/article/details/7854530#include #include #includ

2015-04-14 23:23:33 460

原创 Code Forces 298 D Handshakes (思维要清楚)

题目大意:每个人需要握ai次手,有三个人话,这三个人可以选择去比赛,不和别人握手.问你入场顺序思路:对于编号来说,只要他需要握手的次数是一样的,那么无论放在哪里都是可以的.所以最终形成的序列他们需要握手的次数一定是0-k 0-x这样子的#include#include#include#include#includeusing namespace std;int a[2200

2015-04-14 20:25:27 490

原创 Code Forces 298 C Polycarpus' Dice

题目大意:有多个骰子。每个骰子可以转出1-d[i]内的所有数字。现在给你总和A,问你每个骰子不能够转出的数字有哪几个。结合一下样例应该就懂了。思路:我的思路是这样子的。对于一个骰子d[i];他所能够转出的数值是1-d[i];所以其他的骰子应该给他提供a-d[i],a-1之间的数,不能提供的就是答案。其他骰子可以提供的数为n-1,sum[n]-d[i];区间合并一

2015-04-14 13:52:08 433

原创 Code Forces 298 A EXAM

题目大意:要你将n中的数排序,每个数必须与前面差值大于1。没有思路,最后还是看的别人代码。看来最近思维真的不行了。很简单的题目,只需要将奇数一起输出来,偶数再一起输出来就是答案了。不过有几个情况需要特判。1,2,3,4.都需要特判。#include #include #include #include using namespace std;int a[5500];

2015-04-14 13:21:16 376

原创 HDU 2897 邂逅明下 (找规律)

思路:请原谅刚开始博弈,不知道这是一道什么类型的博弈.不过思路是这样的.我是从必败态开始找.很容易看出假设x为初始个个数,必败态为T,必胜态为S(都是对于先手,或者说面对该情况的人而言)xp进而推出q+pq+2p...所以x%(p+q)余数在(0,p)之间就必败,其他情况必胜!#include #include #include using n

2015-04-13 18:54:19 399

原创 HDU 2516 取石子游戏 (斐波那契博弈)

大神博客:http://blog.csdn.net/acm_cxlove/article/details/7835016#include #include #include #include using namespace std;long long f[60]={0,1,2};int main(){ for(int i=3;i<60;i++) f[i

2015-04-13 17:59:51 508

原创 【HDU】2147 kiki's game (博弈 找规律)

题目大意:就是有一个游戏,在一个n*m的矩阵中起始位置是(1,m),走到终止位置(n,1);游戏规则是只能向左,向下,左下方向走,想走到终点的为获胜者。想法:根据必胜点和必败点去递推,多写几组,看出N,M决定胜负的情况。就可以了。这过程需要耐心#include using namespace std;int main(){ int n,m; while(cin>>n>

2015-04-13 12:42:35 490

原创 HDU 3998 Sequence(最大流+最长上升子序列)

题目大意:一个序列,让你求出最大上升子序列是多少,然后有多少个最长上升子序列(即每一个元素都不相同)思路:用nlogn的方法求出最长上升子序列.这边讲一下网络流的建图模型:添加超级源点和超级汇点.每一个序列长度为1的元素与源点容量为1;并且长度为x与x-1的元素有一条容量为1的边.表示可以属于同一个序列.这边我是用vector存下每个长度的元素编号,下次直接拿出来建边就可以

2015-04-08 21:15:11 512

原创 HDU 3277 Marriage Match III (最大流+拆点+并查集)

思路:其实这道题抄完之后,回想一下,和上一道题其实几乎完全一样.不同的在于,这道题的女生可以选择k个和自己吵过架的男生.所以在建图的时候,女生有一条容量为k的边,连向和自己吵过架的男生,并且中间一个节点来.也就是将女生拆成两个点,一个点连接源点,容量依然是最大的配对数量mid这个点与没吵过架的男生都有一条1的边.另外一个点与吵过架的男生有1的边.与这一点有容量为k的边就可以了.

2015-04-08 10:01:25 521 1

原创 【HDU】 3081 Marriage Match II (最大流+并查集)

生和男生配对,有些女生相互是朋友,每个女生也可以跟她朋友所配对的男生配对每次配对,每个女生都要跟不同的男生配对。问最多能配对几轮。思路:这边需要用到并查集的思想,由于太久没有碰并查集了,所以看到并查集就只记得父亲节点这个东西了。看了题解,如何实现同一个朋友共享关系。他的一个想法是:当遇到X女孩的时候,枚举女孩,假如两个女孩的祖先相同,则意味着这两个女孩是朋友,则另外一个女孩就可

2015-04-07 23:17:26 419

原创 【HDU】 2883 kebab(最大流+时间段离散化)

思路:这道题目应该说看懂题意很重要。看懂之后就很简单了。 有一个烧烤机,每个单位时间最多能烤 m 块肉,现在有 n 个人来买烤肉,每个人到达时间为 si,离开时间为 ei,点的烤肉数量为 ci,点的烤肉所需烘烤时间为 di,其实这边的ci和di有点描述的不清楚。明白一点的描述应该说的是,点的烤肉体积为ci,需要等待的时间为di。          每个人要烤的肉可以分成若干份在

2015-04-07 21:08:54 479

原创 A^X mod P (2013山东省赛)(用拆分思想求解重复问题)

思路:其实这道题目最终的一个思想跟我之前做过的一道二进制拆分思想是一样的。那道题目那时候是因为求解是次数很大上亿,而我最多可以的到的是百万级别的,因为数组只能开到百万那时候我很强烈的思想就是那我就每次求解一百万嘛。这边的时间接近o(1)然后重复最多也就1000次,这样时间还是很短。所以那时候就果断那样做了。这次这道题目和那道题目有相似之处。由于其中都是求解A的幂之和,每次幂

2015-04-07 19:45:33 673

原创 Boring Counting (2013山东省赛)(划分树+二分)

思路:建立一棵划分树,然后在区间里面二分,寻找最大的小于a的数是第几小的,以及寻找最大的小于等于b的数是第几小的两个相减就是答案了。#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;#define MAX 100050#define m (l+r)>>1int

2015-04-07 17:43:50 549

原创 Alice and Bob (2013山东省赛)-二进制拆分组合

思路:将式子合并拆开可以发现。对于7次方,则他的系数分别是他二进制为1下标的系数之和例如a0*a1*a2x^7,对应的7的二进制111。wa了两次。原因在于p可能很大,下一次n可能很小,会访问之前的区域,所以用之前都要将a归0;#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing name

2015-04-07 16:32:31 607

原创 【CodeForce】 4C Registration system(map乱搞)

思路:用map存一下出现的字符串,以及衍生出来的字符串个数就可以了。之前只是单纯记录是否出现,结果超时。只要记录衍生出来的字符串,下一次直接跳到最后那一个,判断,即可。#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#includeusing namespace std;char str[110

2015-04-07 00:10:00 565

原创 HDU 3605 Escape(最大流+合并相同点)

思路:题目的模型就是简单的最大流.但是点数较多.直接建图的话,肯定超时.这边需要采用一定的技巧.由于m所以可以按照可以去的行星的情况进行合并相同点.能去的行星全部相同的就是同一个点,在建图的时候,流量就是这些人的数量就可以了.这样子的话,建图的点就可以缩小到1024个点.非常给力.#define _CRT_SECURE_NO_WARNINGS#include#inc

2015-04-06 19:50:53 451

原创 poj 3281 Dining(网络流最大流+分点)

题目大意:有N种食物,和N种饮料.每头牛有喜欢的饮料和食物.问有多少头牛可以同时吃到自己喜欢的饮料和食物.思路:这道题主要在于建图问题.添加超级汇点和超级源点自然不用多说了.正确的建模:源点-->food-->牛(左)-->牛(右)-->drink-->汇点  (转载的)网上把这个叫做折点,不过我觉得交分点可能比较合适,使需要同时满足的条件都在一条路径上.#define _

2015-04-06 16:32:07 413

原创 【HDU】 3416 Marriage Match IV(最大流+SPFA)

题目大意:让你找出有多少条没有交集的最短路。思路:先用spfa找出可行的边,然后给每条可行的边加上容量1.即表示这条边只能走一次。接下来跑一遍ISAP就可以得出答案。关于判断边可行的方法如下。先从头跑一遍spfa,得到起点到其他所有点的最短路径dis1再从尾跑一遍spfa,得到终点到其他所有点的最短路径dis2对于边u-v w假如dis1[u]+dis2[v]+w==d

2015-04-06 13:01:20 783

原创 【HDU】3572 Task Schedule (最大流 ISAP算法)

开始做网络流了。一开始的学习依然是无脑的,只能借鉴大神的博客。其实这道题蛮不错的。说是要对题目进行建模,从而转化成网络流的题目。从这道题来看,网络流看来对思维训练很有帮助啊。稍微说一下建模的想法吧。添加一个超级源点和一个超级汇点。将每个工程看成一个点。每一天都是一个点。一个工程对应的每一天都有一个流量为1,因为一天只能一个机器去完成一个单元。每一天到超级汇点流量为m,因为有

2015-04-06 00:09:45 506

原创 HDU You’ll be Working on the Railroad (最短路)

还没解决...只要这组数据过了.这道题就可以过了50 2 1002 4 1000 3 13 4 14 1 1

2015-04-05 16:46:44 470

原创 【Best Coder】#36 C tree

好吧,我承认是抄别人的代码的。但感觉这道题目确实得好好学习学习。#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;#define MAX 50005struct node{ int v; int id;}h[MAX],q[MAX];int co[MAX];

2015-04-04 23:08:25 817

空空如也

空空如也

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

TA关注的人

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