- 博客(18)
- 收藏
- 关注
原创 CodeForces 55D Beautiful numbers
题意:找出L~R中所有的数字,数字和可以被每一位数字整除的总个数思路:1~9中,如果同时能被 比如1 3 5整除,那么一定能被最小公倍数15整除建立HASH映射,反应在最小公倍数的情况下 for(int i=1;i { if(MOD%i==0) { Hash[i]=cnt++;
2017-01-26 14:03:22 242
原创 1116 K进制下的大数
思路:暴力枚举#include #include #include #include using namespace std;char s[1000005];int main(){ cin>>s; int st=0; for(int i=0; s[i]; i++) { if(s[i]>='A'&&s[i]<='Z')
2017-01-24 14:59:54 277
原创 Codeforces Round #393 (Div. 2) Frodo and pillows
题意:孩子分枕头。相邻的不差1.思路:二分#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define ll long long#define inf 0x3f3f3
2017-01-23 10:05:26 299
原创 hdu 3549 FlOW Problem
题意:N个点,m条边。1~N最大流量思路:模板#include #include #include#include using namespace std;const int N = 205;const int INF = 0x3f3f3f3f;int n,m,mp[N][N],path[N],flow[N],st,ed;queue q;int bfs(){
2017-01-22 13:04:27 245
原创 POJ-1273 Drainage Ditches
题意:n个河流,m个点,询问从1->m最大的流量是多少思路:网络流基础知识,http://www.cnblogs.com/luweiseu/archive/2012/07/14/2591573.html去这个看吧,写的真够好。然后就是。。。板子#include #include #include#include using namespace std;const i
2017-01-22 12:54:04 213
原创 HDU-3652 B-number(数位DP)
题意:找出1~N中所有既包含13这个子串又可以被13整除的数字个数思路:和之前做的数位DP一样,套路同样很强。就是增加了一个余数的记录。并且多加了一个状态状态一:前面一位是3状态二:存在13状态零:前面一位不是1,并且不存在13#include #include #include #include using namespace std;typedef
2017-01-19 10:49:04 226
原创 HDU - 3555 Bomb
题意:问从1~N里有多少个数字含有49这个子串思路:同不要62,基础数位DP,代码里注释#include #include #include #include #include typedef long long ll;using namespace std;ll dp[1000][2];ll a[1000];ll dfs(int len,bool
2017-01-18 20:08:00 265
原创 HDU 2089 不要62 数位DP入门
思路:第一次写数位DP,学了大半天也没看明白网上dfs版本的数位DP,之后了下学长,才明白过劲!第一篇,争取写详细一点。数位DP有些人会和DP一样找出一个转移方程,然后依据转移方程写一个同其他DP题一样的解法。但是数位DP也有另外一种解法:记忆化搜索,下面的主要是写记忆化搜索的想法:先将每一个数字拆分,之后开始搜索,搜索时需要三个参数:第一个:当前位,也就可以找到当前位的数字
2017-01-18 15:03:48 311
原创 51nod-1117 聪明的木匠
思路:经典合并果子问题#include#include#include #include #include#include using namespace std;priority_queue,greater >q;int main(){ int n; int ans=0; cin>>n; while(n--) {
2017-01-17 22:12:29 268
原创 51nod-1102 面积最大的矩形
思路:单调栈,维护左右边界#include #include #include #include #include #include using namespace std;typedef long long ll;ll a[50005];ll l[50005];ll r[50005];int main(){ int n; cin>>n; f
2017-01-17 16:09:57 210
原创 51nod-1101 换零钱
思路:和种类01背包一样,外层种类,内层对于当前种类以此后推#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;l
2017-01-17 15:02:37 257
原创 51nod-1100 斜率最大
思路:规律题,按X轴排序,如果可能是斜率最大点,一定是相邻两点#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;stru
2017-01-17 09:40:08 248
原创 51nod-1099 任务执行顺序
思路:记得之前做过一个背包的题,就用到过这种类似思想的排序关系、这个题交了3次,前两次都是认为如果空间利用率 也就是做除法比值大就可以,但是2.4号测试点过不去。就想了想这种特殊的排序方法果然过去了。个人感觉这种排序的方法的大体想法是: 如果当前这个任务可以省下的空间比下一个大,就优先执行当前的。其次:想记录下为什么说取比值的方法不对:24 28 4对于这样类型
2017-01-17 01:26:12 314
原创 CodeForces 755C PolandBall and Forest
题意:给出第I点到第p i点是最远的,询问有多少个区域。思路简单并查集一遍成!#include #include #include using namespace std;#define maxn 100005int father[maxn];int find(int x){ if(father[x]!=x) father[x]=fin
2017-01-16 15:07:52 316
原创 51nod-1096 距离之和最小
思路:找中间点。#include#include#include #include #include#include #include #include using namespace std;int a[100005];int main(){ int n; cin>>n; for(int i=1;i<=n;i++) cin>>
2017-01-13 13:37:28 230
原创 51nod-1043 幸运号码(滚动数组)
思路: 一开始写了一个DP[2][1000][9999]的结果ME了,之后开始用01背包的二维数组开始滚动dp[i][j] #include#include#include#include#include#include#include using namespace std;const int mod=1e9+7;long long dpx[3][10000]
2017-01-12 21:41:29 237
原创 1021 石子归并(区间DP)
思路:这题是道经典题,真的很有意思,才学DP学详细点吧!应该算上一个区间的DP,在写DP的时候我觉得不仅仅只想状态转移方程,更要确定i j dp i j 等各个状态参量的实际意义,否则DP方程是无法确定的。一开始想的是按照数塔阶段性转移,i表示第几次合并,j表示合并第几个,但是并不行。实际解题步骤:确定i,j开始区间DP, 表示从i石子到j石子合并需要的最小代价。之后开始把大问
2017-01-12 12:01:02 367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人