自定义博客皮肤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与我讨论

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

原创 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 428

原创 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 412

原创 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 461

原创 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 434

原创 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 377

原创 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 524 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 481

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

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

2015-04-07 19:45:33 675

原创 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 550

原创 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 508

原创 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

原创 【BestCoder】36 B Gunner(哈希)

#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;#define MAX 1000010#define mod 1000007int head[MAX],cnt;struct edge{ int x; int cnt; int next;

2015-04-04 22:36:05 531

原创 kuangbin群赛-1002-Repeat Number

思路:总共就46个特殊的数字,每个带进区间计算就可以了。注意处理一下偶数的情况就ok。比赛的时候漏了一个一百一十一万一千一百一十一,wa到比赛结束,醉了。#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;int a[] = { 11, 22, 33, 44,

2015-04-02 19:50:57 667 2

原创 HYSBZ 1036 树的统计Count(树链剖分)

简单题,1A#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;#define MAX 30030#define ls rt<<1#define rs ls|1#define m (l+r)>>1int sum[MAX << 2], sum2[MAX << 2]

2015-04-02 10:54:12 443

原创 HYSBZ 2243 染色(树链剖分)

思路:单点的树链剖分题目.大致的思路与边问题的树链剖分大同小异.只是在处理相邻的颜色的计算的时候需要仔细.wa了几发.这边就写一下我处理的思路以及记得起来的wa点.理解树链剖分之后,你会明白,树链剖分是按照路径两边往中间缩.所以我用cu,cv标记两端的颜色.当需要从u开始搜的时候,我就比对一下该端的上一个边缘颜色是否相同.假如相同的话必然减一.好了,这个可以解决大部分问题.

2015-04-02 09:33:25 432

空空如也

空空如也

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

TA关注的人

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