• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






Storm_Spirit

不忘初心,方得始终。
 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

随笔分类 -  思路奇特

上一页 1 2 3 下一页

 
UVA 11853 Paintball ——(dfs+圆交判定)
摘要:题意:给出一个1000*1000大小的矩阵,里面有若干圆,表示障碍物,现在要找出从左边到右边的一条通路,输出入口和出口的坐标,如果有多答案,输出y值最大的答案。 分析:从与上面相连的圆开始dfs,每次找与之相交的圆作为dfs的路径,如果能访问到下面,那么左边和右边肯定是不连通的;否则,连通。并且在d 阅读全文
posted @ 2017-01-15 08:20 Storm_Spirit 阅读(179) 评论(0) 推荐(0)
Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined)
摘要:A题,直接开map统计需要的字母即可。但是样例1的单词不是题目中的那个单词,被坑了一次。不过学习了min原来可以min({1,2,3});这样写来比较多个参数。 B题,类似于筛法nlogn即可。但是题目中说了,如果只有一个宠物,是不会自己打自己的,因此如果只有一个1,答案应该是1(也即答案至少为1) 阅读全文
posted @ 2017-01-13 11:16 Storm_Spirit 阅读(115) 评论(0) 推荐(0)
CodeForces Good Bye 2016
摘要:A题,水题略过。 B题,也水,但是想复杂了。只要运动超出[0,20000]的范围就算不可能了。 C题,我自己的方法是解不等式,然后取最大的答案即可。代码如下: 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #i 阅读全文
posted @ 2017-01-12 16:03 Storm_Spirit 阅读(149) 评论(0) 推荐(0)
Codeforces Round #388 (Div. 2)
摘要:A题B题,水的不行,跳过。 C题,每一个人都肯定消灭掉后面的一个字母不同的人,那么用队列保存两个阵营的人的位置,每一轮以后都让位置加上n即可。具体见代码: 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #inc 阅读全文
posted @ 2017-01-12 15:50 Storm_Spirit 阅读(116) 评论(0) 推荐(0)
CodeForces 754C Vladik and chat ——(xjbg)
摘要:虽然是xjbg的题目,但是并不很好做。 题意不难理解。读入有点麻烦。做法是先正着推每段对话的?可能是谁说的,然后反过来选择即可。正推时,其中vis数组表示谁已经被用过了,cnt表示该组当前可以选择几个,choose[i][j]表示第i段对话中,选择第j个名字作为说话者是不是可能的。 那么正推时就不难 阅读全文
posted @ 2017-01-11 12:37 Storm_Spirit 阅读(346) 评论(0) 推荐(0)
CodeForces 754D Fedor and coupons ——(k段线段最大交集)
摘要:还记得lyf说过k=2的方法,但是推广到k是其他的话有点麻烦。现在这里采取另外一种方法。 先将所有线段按照L进行排序,然后优先队列保存R的值,然后每次用最小的R值,和当前的L来维护答案即可。同时,如果Q的size()比k大,那么就弹出最小的R。 具体见代码: 另外,输出方案的方式也值得注意一下。 阅读全文
posted @ 2017-01-10 19:29 Storm_Spirit 阅读(180) 评论(0) 推荐(0)
hihoCoder #1199 : Tower Defense Game ——(树型dp)
摘要:题目链接:https://hihocoder.com/problemset/problem/1199。 题意:一棵以1为根的树,每个点有一个p值和q值,到这个点需要当前分数大于等于p,然后消耗掉(p-q)的分数。问一种遍历方式,使得一开始在1所需的分数最小并能够遍历完所有的点。 分析见代码: 阅读全文
posted @ 2016-12-21 21:16 Storm_Spirit 阅读(178) 评论(0) 推荐(0)
趣题:寻找出现了奇数次的数
摘要:看到16级的做广工的新生赛某题,找一组数中出现了奇数次的两个数(其他数都出现偶数次),竟然不会= =。 解释在此:http://www.matrix67.com/blog/archives/511。 当然,手写hash表应该也是可以的。。 阅读全文
posted @ 2016-12-05 19:43 Storm_Spirit 阅读(151) 评论(0) 推荐(0)
HDU 5183 Negative and Positive (NP) ——(后缀和+手写hash表)
摘要:根据奇偶开两个hash表来记录后缀和。注意set会被卡,要手写hash表。 具体见代码: 阅读全文
posted @ 2016-11-28 17:40 Storm_Spirit 阅读(222) 评论(0) 推荐(0)
CodeForces 675C Money Transfers(贪心+奥义维护)
摘要:题意:n个银行。 其中存款有+有-。 总和为0。 n个银行两两相邻((1,n),(1,2)...(n-1,n)); 问最少移动几次(只能相邻移动)能把所有数变为0。 分析:思路很简单,起始答案算它为n,然后每存在一段,这段的和为0(包括就一个0的情况),这个答案就减1。如1 2 3 -6,只有一段, 阅读全文
posted @ 2016-10-15 10:53 Storm_Spirit 阅读(156) 评论(0) 推荐(0)
CodeForces 714E Sonya and Problem Wihtout a Legend(单调数列和DP的小研究)
摘要:题意:给你n个数字,每个数字可以加减任何数字,付出变化差值的代价,求最后整个序列是严格单调递增的最小的代价。 首先我们要将这个题目进行转化,因为严格单调下是无法用下面这个dp的方法的,因此我们转化成非严格的,对严格下而言,a[j]-a[i]>=j-i,那么得到a[i]-i<=a[j]-j。这样,我们 阅读全文
posted @ 2016-10-14 20:53 Storm_Spirit 阅读(384) 评论(0) 推荐(0)
CodeForces 722D Generating Sets
摘要:题意:如果你有一个原数列的话你可以对任何一个数字进行操作,令这个数字乘2或者乘2后在加1。现在给你一个目标数列,让你求一个原数列,这个原数列是所有可能的原数列当中最大的一个元素最小的那种。注意原数列和目标数列都必须满足set内元素的性质(即每个元素都不相同),但是在变化的过程中不需要满足这个条件。 阅读全文
posted @ 2016-10-02 09:46 Storm_Spirit 阅读(296) 评论(0) 推荐(0)
CodeForces 721D Maxim and Array
摘要:题意:给出n个数,k次机会,每次机会可以使得任意一个数字减少或者加上x,问使得最后的乘积最小的n个数,每个数是多少。 分析:贪心思路是每次取出绝对值最小的一个数,判断乘积的符号以及这个数的符号来做出加或者减的操作。 具体见代码: 顺便回顾一下,优先队列是默认的每次弹出优先级最大的元素(默认less) 阅读全文
posted @ 2016-10-01 09:13 Storm_Spirit 阅读(393) 评论(0) 推荐(0)
HDU 5884 Sort ——(K叉哈夫曼树)
摘要:这题真心比较奥义,先见这个人的博客:http://blog.csdn.net/libin66/article/details/52565484 补0的方法是使得其满足成为满K叉树,而其博客中所说的“所以当(n-1)%(k-1)!=0的时候,会出现归并不能最大化个数的情况,这样会影响二分的单调性”我作 阅读全文
posted @ 2016-09-18 21:34 Storm_Spirit 阅读(235) 评论(0) 推荐(0)
CodeForces 707D Persistent Bookcase ——(巧妙的dfs)
摘要:一个n*m的矩阵,有四种操作: 1.(i,j)处变1; 2.(i,j)处变0; 3.第i行的所有位置1,0反转; 4.回到第k次操作以后的状态; 问每次操作以后整个矩阵里面有多少个1。 其实不好处理的操作只有第四个,但是这题的思路很巧妙,123三种操作全部建立顺边,第四种操作将k和这次操作的序号建边 阅读全文
posted @ 2016-08-26 08:38 Storm_Spirit 阅读(172) 评论(0) 推荐(0)
HDU 5813 Elegant Construction ——(拓扑排序,构造)
摘要:可以直接见这个博客:http://blog.csdn.net/black_miracle/article/details/52164974。 对其中的几点作一些解释: 1.这个方法我们对队列中取出的元素,把仍有出度的点连接到这个点时,这个点是不会连接到多余的点的,因为:一个点出队列的时候其他没入队的 阅读全文
posted @ 2016-08-21 21:29 Storm_Spirit 阅读(195) 评论(0) 推荐(0)
2016 Multi-University Training Contest 4 部分题解
摘要:1001,官方题解是直接dp,首先dp[i]表示到i位置的种类数,它首先应该等于dp[i-1],(假设m是B串的长度)同时,如果(i-m+1)这个位置开始到i这个位置的这一串是和B串相同的,那么dp[i]还应该加上dp[i-m],因为从i-m+1开始可以被替换成另外一种意思。详细的见代码吧。我们当时 阅读全文
posted @ 2016-07-29 11:19 Storm_Spirit 阅读(142) 评论(0) 推荐(0)
UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
摘要:这两个题的模型是有n个人,有若干的关系表示谁是谁的父亲,让他们进行排队,且父亲必须排在儿子前面(不一定相邻)。求排列数。 我们假设s[i]是i这个节点,他们一家子的总个数(或者换句话说,等于他的子孙数+1(1是他本身)),f[i]是以i为根的节点的排列种数。那么总的种数为n!/(s[1]+s[2]+ 阅读全文
posted @ 2016-07-12 20:28 Storm_Spirit 阅读(347) 评论(0) 推荐(0)
UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)
摘要:先看第一题,有n*m个点,求在这些点中,有多少条直线,经过了至少两点,且不是水平的也不是竖直的。 分析:由于对称性,我们只要求一个方向的线即可。该题分成两个过程,第一个过程是求出n*m的矩形中,dp[i][j]代表在这个矩形中终点是到(i,j)这个点的满足题意的直线条数,那么,用dp的话就可以得出递 阅读全文
posted @ 2016-07-12 19:58 Storm_Spirit 阅读(236) 评论(0) 推荐(0)
腾讯2017暑期实习生编程题(3题)
摘要:第一题:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。 思路:区间DP即可。我一开始想的是统计i~j内可以回文的字符个数,然后ans=len-dp[1][len]; 后来发现没法实现,即使是一个字符也是回文的这种情况也考虑到 阅读全文
posted @ 2016-07-08 09:13 Storm_Spirit 阅读(485) 评论(0) 推荐(0)
 

上一页 1 2 3 下一页