上一页 1 2 3 4 5 6 ··· 18 下一页
摘要: 1308: 音乐会的等待 时间限制: 1 Sec 内存限制: 128 MB 提交: 297 解决: 89 [提交][状态][讨论版] 题目描述 N个人正在排队进入一个音乐会。人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人。队列中任意两个人A和B,如果他们是相邻或他们之... 阅读全文
posted @ 2017-03-10 16:49 see_you_later 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 思路: DP[i]代表从1 到 i 以 a[i] 为末尾的子序列个数,dp[i]=dp[i]+dp[j](a[i]!=a[j]) +1 利用树状数组维护以值 a[i] 结尾的子序列个数。 #includeusing namespace std;typedef long long LL;con... 阅读全文
posted @ 2017-03-10 00:13 see_you_later 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 思路: 裸的矩阵快速幂,读完题,感觉有点对不起四级算法题这一类。 #includeusing namespace std;typedef long long LL;const LL mod=1e9+7;int n;struct asd{ LL a[102][102];};asd mul(asd ... 阅读全文
posted @ 2017-03-09 23:43 see_you_later 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 思路: 大体可以看到:大的越后面越好,但是首先要保证如果他对于一个比他小的字符后面存在他。 主要操作就是利用栈,每次对栈里的元素询问是否比他大,且他的后面还存在。 #includeusing namespace std;char s[100010];int len,num[27];bool vi... 阅读全文
posted @ 2017-03-09 23:17 see_you_later 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 题意: 使得所有的位置都能通向一个机场,问最小花费。 思路: 最小生成树。 本来还想标记一下没有出现过的点,其实那个数组已经解决了。==。 PS:注意路比建造机场还贵?直接造机场得了? if there are several answers with minimal cost, choos... 阅读全文
posted @ 2017-03-09 20:12 see_you_later 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 思路: 利用并查集/DFS都可以处理连通问题。 PS:注意Find()查找值和pre[]值的区别。 #includeusing namespace std;const int N=1e3+10;int val[N];int pre[N],n,m;vectorxs,ans;int Find(i... 阅读全文
posted @ 2017-03-08 23:23 see_you_later 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 思路: 在一个方向上走K步,基础BFS。 注意标记; 注意路径; PS:显著注释是记录路径。 #includeusing namespace std;const int N=5e2+10;char ma[N][N];bool vis[N][N];int dx[4]={0,0,-1,1};int ... 阅读全文
posted @ 2017-03-08 23:21 see_you_later 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 基础题。 PS:注意unsigned long long; 以及%llu #includeusing namespace std;typedef unsigned long long ULL;typedef long long LL; const int N=5e6+10;bool ispri... 阅读全文
posted @ 2017-03-08 21:43 see_you_later 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 思路: 连通快+二分图,每次+二分图大的元素个数。 #includeusing namespace std;typedef unsigned long long ULL;typedef long long LL;const int N=2e4+10;bool ex[N],vis[N];vecto... 阅读全文
posted @ 2017-03-08 21:41 see_you_later 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 思路: 根据案例的规律其实已经猜的差不多了,answer=n*m/2; 有一条边是1的情况,也很好判断,answer=n*m; 就是有一条边是2的时候比较隐秘:是连续2*2一块可以填,然后2*2不填,没想出总结的公式,就直接模拟了。 #includeusing namespace std;typ... 阅读全文
posted @ 2017-03-08 21:39 see_you_later 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 思路: 最终就是求一个数的约数(除了1)对吧. 然后想要枚举sqrt(N)受阻,枚举素数数组受阻,加上prime[i]*prime[i]using namespace std;typedef long long LL;LL prime[1000100];bool IsPrime[1000100]... 阅读全文
posted @ 2017-03-06 20:36 see_you_later 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 翻车!翻车! codeforces782A A题: 水。 代码: #include using namespace std;typedef long long LL;int num[100010];int main(){ int n,x; memset(num,0,sizeof(n... 阅读全文
posted @ 2017-03-06 12:54 see_you_later 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 思路: DP[ i ] 代表以 i 结尾的方案数. dp[i] += sum[i] - sum[j - 1] != 0 ? dp[j] : 0 ; 对于100%的数据,满足1using namespace std;typedef long long LL;const LL mod=1e9+7;... 阅读全文
posted @ 2017-03-05 18:28 see_you_later 阅读(223) 评论(0) 推荐(0) 编辑
摘要: codeforces 535A-水题; #include using namespace std;typedef long long LL;char s2[15][20]={"eleven","twelve","thirteen","fourteen","fifteen","sixteen","... 阅读全文
posted @ 2017-03-05 11:00 see_you_later 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 正好这个“水水”的C4来了 先把甲级刷完吧。(开玩笑-2017.3.26) 这是一套“伪题解”。 wacao 刚才登出账号测试一下代码链接,原来是看不到。。有空弄题(xia)解(che)。。 //“今天”的“收获”: BST的中序遍历特性;栈那题利用树状数组+二分维护;哇咔咔,题意真难,根据案例... 阅读全文
posted @ 2017-03-03 20:42 see_you_later 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 思路: 如果体积乘以数量>=W,那么直接用完全背包模型。如果不到的话,用二进制优化就好了。 基础题,感觉这样写很优雅?回去睡觉。 #include using namespace std;typedef long long LL;int dp[50010],n,W;int c,w,v;void ... 阅读全文
posted @ 2017-03-03 00:50 see_you_later 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 思路: 因为工人造完一个房子就死了,所以如果m#include #include using namespace std;typedef long long LL;priority_queue, greater >q; // 定义小的先出队int main(){ int T,n,m,k,x... 阅读全文
posted @ 2017-03-01 16:30 see_you_later 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题意: 给n个不同的数,求一个4个数(a,b,c,d)的组合满足a+b+c=d;求最大的d。 思路: 没想到可以用hash搞/ 这个就是数据结构里的分离链接法~ 解决hash冲突的方法:将所有关键字为同义词的结点链接在同一单链表中。 a+b+c=d转化成a+b=d-c; 先将所有的a+b has... 阅读全文
posted @ 2017-02-28 21:29 see_you_later 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题意: 百度。 思路: 一个连续数组111222233344444555666的每一个起伏转折即需要一张万能牌。 然后二分一下得最长区间。 #include#include#include#include#include#include#include#includeusing namespa... 阅读全文
posted @ 2017-02-28 16:46 see_you_later 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出长为n的字符串,含有前k种小写字母,求两个不含重复元素的连续子串,使得他们的长度乘积最大。 思路: 字符种类16 ->(套路) 状压 暴力2000*2000得所有连续子串的长度,得每个状态的最优; dp使得包含字符个数最优。 利用异或取反得最大值。 #include#include#... 阅读全文
posted @ 2017-02-28 16:41 see_you_later 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 一开始做的时候(TLE),A,C,G这三类作为边,然后点和点直接建边搜个环:then time BOOM! 可以发现只属于“A”类的之间都并在一起就好,同理“G”类和“C”类,那么整幅图会变成? 所以我们只需要分析三角的位置,从而就能搞出整个图是否是个环。 一种思路: 直接分类!但是要严谨。。... 阅读全文
posted @ 2017-02-28 15:22 see_you_later 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 没看到Beginner,然后就做啊做,发现A,B太简单了。。。然后想想做完算了。。没想到C卡了一下,然后还是做出来了。D的话瞎想了一下,然后感觉也没问题。假装all kill.2333 AtCoder Beginner Contest 052 A题意: 输出大的面积? 思路: max(A*B,... 阅读全文
posted @ 2017-02-27 21:23 see_you_later 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题意: 给你n个人的位置,每个人能往后跳一格或两格到无人的位置,跳到0位置,这个人消失,n个人消失组成一个排列,问有多少种排列。 思路: 额,搞了一整场这个A...代码也巨挫了。 处理成1,3,5,7,9.....的位置情况,当出现连续的时候,比如1,3,5,7,8的话那么后面的数怎么跳都不会在... 阅读全文
posted @ 2017-02-25 22:50 see_you_later 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 思路:哈夫曼树~~哇塞,那么有道理。 利用堆维护:每次从堆里取两个最小加起来,然后还是最小的两个,最后只剩一根总的 #include using namespace std;typedef long long LL;priority_queue, greater >q; // 定义小的先出队i... 阅读全文
posted @ 2017-02-25 17:00 see_you_later 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 具体看:萌新笔记之Nim取石子游戏 可以这么写: #include using namespace std;typedef long long LL;int bit[35];void solve(int n){ int num=0; while(n) { n%2=... 阅读全文
posted @ 2017-02-25 15:18 see_you_later 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 以下笔记摘自计算机丛书组合数学,机械工业出版社。 Nim取石子游戏 Nim(来自德语Nimm!,意为拿取)取石子游戏。 前言: 哇咔咔,让我们来追寻娱乐数学的组合数学起源! 游戏内容: 有两个玩家面对若干堆东西(硬币,石子,豆子···)进行游戏。设有k≥1堆硬币,各堆分别含有n1,n2..... 阅读全文
posted @ 2017-02-25 12:51 see_you_later 阅读(1771) 评论(0) 推荐(1) 编辑
摘要: 最近状态极差。。水题不想写,难题咬不动。。哎,CF的题那么简单,还搞崩了= =、真是巨菜无比。 Codeforces777A 题意:略。 思路: 构造出3!次变换,然后输出就好。 Code: #include using namespace std;int a[6][4]={{1,2,3},{2... 阅读全文
posted @ 2017-02-24 21:49 see_you_later 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 第一题LCA,代码参考自:Ice_Crazy 思路: 这个最短路算法是想都别想了,可以看出这幅图就是树嘛,那么对于查询就是求树上两个结点最短距离。 这里就是利用LCA的tarjan离线算法。 算法的大致流程: 对于每一点u, ① :建立以u为代表元素的集合。 ② :遍历与u相连的结点v,... 阅读全文
posted @ 2017-02-24 15:44 see_you_later 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一系列值和对应的陷阱,对于陷阱如果存在两个就抵消,求价值最大。 思路: 折半枚举,利用异或 #include using namespace std;typedef long long LL;int v[30],k[30];int trap[30][60],n,ans;mapmp;... 阅读全文
posted @ 2017-02-23 18:07 see_you_later 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题意: 要排一个L长度的序列,当 j 放在 i 后面的时候会增加v[ i ][ j ]的值,求构成L长度序列的最大值。 思路: 可以想到预处理任意两点的最大值是多少,然后题目还有个限制,就是长度,那么再加一维k, DP[k][i][j] 代表长度为k,i 到 j的最大价值。 但是我们看到L很大... 阅读全文
posted @ 2017-02-23 15:15 see_you_later 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 前言:本萌新这里的笔记基本摘自于书+一些自己的浅层理解,如有错误请吐槽!欢迎指正! 鸽巢原理 定理: 如果n+1个物体,被放入n个盒子,那么至少有一个盒子包含两个或多个物体。(这一点无需证明也能理解吧) 应用1: 在13个人中存在两个人,他们的生日在同一个月份。(哇,看似好简单啊~这破应用... 阅读全文
posted @ 2017-02-20 23:53 see_you_later 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 题意: 有一个长度为n的序列,序列有长度为1...n的连续子序列, 一个连续子序列里面最小的值称作这个子序列的子序列的strength, 要求出每种长度的连续子序列的最大的strength。 思路: 以当前位置为最小值,向两边延伸。 那我就能知道这个位置作为最小值时长度。 具体思路忘了。。。... 阅读全文
posted @ 2017-02-20 23:23 see_you_later 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 题意: 百度。 思路: 如果该查询的R比前面的所有都大,那么前面所有都失效。 那么我先预处理出这些有效的。 那最坏的情况不就是栈里面元素(R)很多 n,n-1,n-2,n-3,n-4而且都是相反排序的。。。 总不能每次都那样循环一下,跟着他变吧。 所以找特性: 如果有序列132456 我的... 阅读全文
posted @ 2017-02-20 23:17 see_you_later 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 因为本来打算好好看一下容斥的,以为一两个小时可以看完。翻开组合数学的目录吓了一跳,原来有那么多知识点。 以前也觉得组合数学非常有意思,现在坚持每天学习一个小时吧!有空做笔记!在这作为一种分享! 嘿嘿嘿!(●'◡'●) 争取做到一星期一次分享~ 2017.2 鸽巢原理 2017.2 Nim取石... 阅读全文
posted @ 2017-02-20 13:11 see_you_later 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 思路:转化成对于某一位置为最小值求向两边最远>=他的位置,用单调栈就能轻易完成。那么ans=(left+right)*h[i];维护单调递增还是递减呢?我们能很快反应到,一旦碰到一个比他小的元素,那么之前的那个比他大的就要结束了。ok,大致了解到碰到比他小的元素,那么比他大的呢?也简单呀,对于比... 阅读全文
posted @ 2017-02-19 22:52 see_you_later 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 思路: 单调栈。 鄙人的记忆:按当前为最大值的两边延伸就是维护单调递减栈。 //#include #include #include #include #include #include #include #include #include #include using namespace st... 阅读全文
posted @ 2017-02-19 22:49 see_you_later 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一系列数,对每个查询区间,计算有多少个子区间异或为k。 思路: 可以先预处理异或前缀,一个区间[L,R]的异或值=sum[R]^sum[L-1]; 如果当前区间是[a,b],加一个右端点b+1,那么这个b+1的贡献就是[a,b]区间内有多少个sum[x]=sum[b+1]^k 那么我... 阅读全文
posted @ 2017-02-19 19:49 see_you_later 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 前言: 主要最近在刷莫队的题,这题GCD的特性让我对莫队的使用也有了新的想法。给福利:神犇的一套莫队算法题 先撇开题目,光说裸的一个莫队算法,主要的复杂度就是n*sqrt(n)对吧,这里我忽略了一个左端点(增加/删除)或者右端点(增加/删除)的所带来的复杂度, 之前也遇到过卡这里的复杂度,但是... 阅读全文
posted @ 2017-02-18 22:36 see_you_later 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 题意: 把一堆数分成两堆,使得两堆的差值最小。 思路: 先把一堆数分成两堆,然后用个set存一堆的所有组合,枚举第一堆的状态,二分查找第二堆接近half_value。 瞎说时间复杂度:O(2^17*34); (代码来着某位神犇) #include#include#include#include... 阅读全文
posted @ 2017-02-18 14:35 see_you_later 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一个序列和一些区间,每次询问对区间所有不同的数,求每个不同的出现的个数的平方*其值的总和 2*2*1+1*1*2 思路: 裸的莫队算法。 补: 1.cmp写错。 2.LL运算不会进行转化。 3.莫队的起始应该直接先处理好L,R。 卡了将近2.5h,水题让自己很生气。以及不会查错误真的撒... 阅读全文
posted @ 2017-02-18 10:20 see_you_later 阅读(159) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 18 下一页