
oj
木木木木子子子
这个作者很懒,什么都没留下…
展开
-
cf990 B. Micro-World 模拟
第一次wa 是直接模拟,用vector erase换了一个思路 反着来 考虑一个数会不会被另一个数吞并。而不是考虑一个数能够吞并多少个数第二次wa 是visit 用了short 应该用int 的getset 无重复元素,有序的for(auto &t:s) 这个是c++11 并且t 是数值不是指针iterator it 不能=kk.begin()+1#include <iostre...原创 2018-06-10 21:04:42 · 454 阅读 · 0 评论 -
A*
转自http://www.mamicode.com/info-detail-1534200.html康托展开X = a[1]*(n-1)!+a[2]*(n-2)!+...+a[i]*(n-i)!+...+a[n-1]*1!+a[n]*0!其中a[i]表示在num[i+1..n]中比num[i]小的数的数量逆康托展开由于:a[i]≤n-i, a[i]*(n-i)!≤(n-i)*(n-i)!<(...转载 2018-04-13 18:40:40 · 157 阅读 · 0 评论 -
Recursive sequence 矩阵快速幂解递推公式
1. 通常首先能用矩阵快速幂优化的递推类型是f[n]=5f[n-3]+6f[n-2]+2f[n-1]+n^2+n+8之类的也就是说递推是线性递推且f[n-i]前面的系数是常数,可以含有与n有关的多项式,也可以含有常数的这种递推2.比如以下fn=2fn−2+fn−1+n4通常左边是f(n )及其后几项 根据具体情况定而右边则是f(n-1) 开头的 对应左边的每一个都是n-1但是n-1 ^4 要怎么变...转载 2018-04-06 19:49:51 · 426 阅读 · 0 评论 -
B.Train Seats Reservation 暴力枚举
题目:https://nanti.jisuanke.com/t/17309总是忘了s起点有可能>t终点先创建一个数组a[i] 表示的是在第i个车站 车上的人有多少个 for(int j=1;j<=n;j++){ scanf("%d %d %d",&l,&r,&k); if(l>r) swap(l, r); ...转载 2018-04-05 15:38:57 · 177 阅读 · 0 评论 -
poj 3295 Tautology 构造法
1.第二次做了还是没有思路2.我是从字符串的长度考虑,如果长度=1 ,就会怎样 长度=3 就有多少种可能,并且打算用递归的算法,把一个字符串分解成几小部分来解,但是问题来了,我应该怎么分解对于一个字符串,第一个肯定是运算符,但是后面应该怎么拆分,拆分后又怎么能够利用子式。这些都无法解决3. 看别人的解题思路,既然这和运算符有关的,那就考虑栈操作,这不就是我们学栈这个数据结构时的例题吗3.同时我没有...转载 2018-04-17 16:10:42 · 201 阅读 · 0 评论 -
Radar Installation 贪心 水
果然好久没A题,都不记得题目给的数据有可能有坑。。。1.注意小岛的y有可能是负数。。。2.看清题目,坐标为整数4.关于priority queue 要想它先吐出小的数可以按照下面结构体的运算符重载 5.思路1)将小岛从左到右编号1~n。2)访问第一个小岛,根据小岛坐标计算出雷达在海岸线上的坐标范围,取该区间的最右侧建立雷达。3)继续访问下一座小岛,如果该小岛处于已经建立的雷达范围内,跳过。如果不在...原创 2018-04-16 21:23:57 · 161 阅读 · 0 评论 -
poj 1753 Flip Game dfs 技巧
dfs 有翻和不翻两种选择,妙#include <iostream>using namespace std;int map[4][4];int next[4][2]= {{0,1},{1,0},{0,-1},{-1,0}};void turn(int x,int y){ int tx,ty; map[x][y]=-map[x][y]; for(int...原创 2018-04-16 19:43:02 · 150 阅读 · 0 评论 -
FatMouse' Trade 贪心
不知道为啥wa 思路是对的还有涉及double 的要考虑精度#include <iostream>#include <queue>#include <stdio.h>using namespace std;class ss{ public: int id; double value; bool operator<(...原创 2018-04-03 15:45:11 · 163 阅读 · 0 评论 -
POJ1020-Anniversary Cake 有技巧的dfs
转自https://blog.youkuaiyun.com/lyy289065406/article/details/6683250对于这种标记,不考虑线段树,而是有技巧的1.首先将小蛋糕的size记录在数组sizeNum[size]++这样做就不用排序什么了,因为数据小在循环时可以用(for(size=10;size>0;size++))来将蛋糕一个个从大到小地放进去2.其次最重要的 用col[i] ...转载 2018-04-10 17:11:47 · 206 阅读 · 0 评论 -
hdu 2209 翻纸牌游戏 模拟技巧 反转问题
题目http://acm.hdu.edu.cn/showproblem.php?pid=2209转自https://blog.youkuaiyun.com/cillyb/article/details/53002362从左往右翻,如果当前牌左边为1,此时必须翻牌。一直翻到最后一张,最后判断最后一张是否朝上即可判断是否能成功。但是有个问题,第一张牌前面没牌,可翻也可不翻,分类讨论下即可。...转载 2018-04-10 16:43:21 · 236 阅读 · 0 评论 -
poj3463 Sightseeing dijkstra 寻找最短路的数量和次短路数量
在dijkstra上改进1.寻找最短路数量 首先说一个能够记录最短路路径的方法 1. 如果边可以松驰就用adj【to】=from,把一个点的前一个节点记录下来,下一次松弛的时候会被覆盖掉,最终覆盖掉的就是最短路上的前一个节点 2. 用dfs找回路径 void findway(int s){ if(s==-1) return ; else ...转载 2018-04-15 14:13:11 · 180 阅读 · 0 评论 -
双向广搜
题目http://acm.hdu.edu.cn/showproblem.php?pid=1043 八数码转自https://blog.youkuaiyun.com/thudaliangrx/article/details/50659007http://blog.sina.com.cn/s/blog_8627bf080100ticx.html一、主控函数:void solve(){1. 将起始节点放入队列q1,...转载 2018-04-09 21:02:29 · 399 阅读 · 0 评论 -
Kuhn-Munkres算法模板(二分图最大权匹配)
讲解https://blog.youkuaiyun.com/thundermrbird/article/details/52231639代码https://blog.youkuaiyun.com/pi9nc/article/details/12250247int n;int weight[MAX][MAX];int boy[MAX];bool sx[MAX],sy[MAX];bool max_match(int ...转载 2018-04-30 18:17:25 · 352 阅读 · 0 评论 -
poj 3687-Labeling Balls 逆序拓扑排序
https://blog.youkuaiyun.com/u013486414/article/details/42616073原创 2018-04-30 20:53:33 · 162 阅读 · 0 评论 -
hash +线段树 HDU 3973 AC's String
本题使用字符串的Hash来解决。将一个字符串看成是一个P进制的数字(可以联想10进制数),那么可以知道每一个字符串都可以被唯一表示(P> 256, 并不考虑高精度)。可是由于字符串的长度比较大,那么我们无法保存如此大的数字。于是使用Hash mod2^64来作为Hash.(的却可能会冲突,可是冲突的概率趋于无穷小)然后就是Hash(s,P) = s[0]*P^(Len-1) + s[1] *...转载 2018-05-01 16:19:08 · 180 阅读 · 0 评论 -
map 好用! C. Equal Sums
C. Equal Sumstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given kk sequences of integers. The length of the ii-th sequence equals to ni...原创 2018-06-09 11:34:47 · 343 阅读 · 0 评论 -
数论 gcd 判断p/q 在k进制下 是不是循环小数
转自https://blog.youkuaiyun.com/we1215053460/article/details/80345769主要先化简看分母和k进制数之间的关系,#include<stdio.h>int n;__int64 a,b,c,s,t;__int64 get_gcd(__int64 u,__int64 v){ if(v==0) return u; re...转载 2018-05-20 23:06:08 · 646 阅读 · 0 评论 -
2018 5 20
巧妙的转换,转换为一个二维数组求其相等两行的最大距离 hash poj3274 Gold Balanced Lineuphttps://www.cnblogs.com/lyy289065406/archive/2011/07/30/2122224.html解释的很清楚我的想法是求如果不同位置的1出现的次数相等,则这个区间的数(十进制)相加就是2^n-1的倍数问题是怎么求这个...转载 2018-05-20 21:43:43 · 172 阅读 · 0 评论 -
Codeforces Round #478 (Div. 2) D Ghosts 会超时的判断两个之间关系,可以用map
给出起始坐标(x,y)要充分利用题目条件,最好全都列出来运动方向(Vx,Vy)很容易得到判断两个是否相碰(gho[a].y-gho[b].y)*1.0/(gho[a].vy-gho[b].vy)==(gho[a].x-gho[b].x)*1.0/(gho[a].vx-gho[b].vx)但是每一个都判断双重循环肯定超时不要忘了题目为什么给定初始位置在一条直线上,而不是任意位置,肯定是为了化简上面式...转载 2018-05-13 17:00:12 · 155 阅读 · 0 评论 -
DP
1.可以从记忆化搜索推出dp表达式2.在多重背包中 注意到有些数据太大,不能作为数组下标,就选择数据小的作为数组下标来dp3.可以往前推,比如在前i个能否满足k 则就要判断前i-1个 能否满足k-a[i]4.可以往后推 比如现在站在第1个 会怎么样d[1],站在第2个d[2]=d[1]+1 ....之类的...原创 2018-05-13 16:34:22 · 211 阅读 · 0 评论 -
放苹果,把M个苹果放在N个相同的盘子里
http://poj.org/problem?id=1664func(appleNum, plateNum) 为放的方法数 m=appleNum, n=plateNum1. 首先分析 m≥n 和m<n 这两种情况(m>n 和m≤n) 是相同的2. 对于appleNum<plateNum return func(m,m) 多出来的盘子是没有用的3. 对于appleNum&g...转载 2018-05-19 14:52:09 · 1185 阅读 · 0 评论 -
Codeforces Round #479 (Div. 3)
D利用visit记录访问的顺序#include <iostream>#include <stdio.h>#include <cstring>using namespace std;long long a[101];int visit[101];int num;int count=0,flag=0;void dfs(int k){ vis...原创 2018-05-12 16:01:38 · 122 阅读 · 0 评论 -
KMP
模板 参考https://blog.youkuaiyun.com/starstar1992/article/details/54913261注意 对于cal_next 中 k=next[k] 我的解释:要比较的是0~k+1 和 p-k~ p 前缀和后缀是否相等(这也是next数组的含义) 若k+1 != p则 k跳到next[k] 即跳到0~k 的前缀的最后一位(本来k在0~k 的后缀最后一位 )之后类似...转载 2018-05-05 21:01:47 · 132 阅读 · 0 评论 -
Codeforces Round #480 (Div. 2)
A 略B C一直都是从前往后考虑,所以浪费了很多时间 ,后来换个思路,从后面往前考虑 这是破点可以保证if(visit[j]!=-1) j 到 i 这个区间一定是没有被访问过的#include <iostream>#include <stdio.h>#include <cstring>using namespace std;int a[100004];...原创 2018-05-11 19:01:09 · 135 阅读 · 0 评论 -
Tarjan
模板 转自https://blog.youkuaiyun.com/nothi/article/details/7739741#include <iostream>#include <math.h>#include <stdio.h>#include <string.h>#include <stdlib.h>using namespace s...转载 2018-05-04 21:23:38 · 201 阅读 · 0 评论 -
模板题 Truck History poj1789
#include <iostream>#include <string>#include <cstring>#define INF 9999999using namespace std;int n,sum;string s[2005];short book[2001];int low[2001];int e[2001][2001];void ...原创 2018-04-20 16:59:30 · 127 阅读 · 0 评论 -
大数 Buy the tickey玄学
http://acm.hdu.edu.cn/showproblem.php?pid=1133乘法int len;int c[1000];void multipul(int a[],int b[])//数是逆着记录的{ for(int i=0;i<len;i++) { for(int j=0;j<len;j++) { ...原创 2018-04-09 19:41:20 · 180 阅读 · 0 评论 -
spfa
//spfa算法模板(邻接矩阵)://c++ code:void spfa(int s){ for(int i=0; i<=n; i++) dis[i]=99999999; //初始化每点i到s的距离 dis[s]=0; vis[s]=1; q[1]=s; 队列初始化,s为起点 int i, v, head=0, tail=1; while (head<tail){ ...转载 2018-04-27 22:02:01 · 736 阅读 · 0 评论 -
hdu 2050 折线分割平面 递推
转自http://blog.youkuaiyun.com/a576323437/article/details/6163850解题思路:1递推递推,先分析下直线分割平面的情况,增加第n条直线的时候,跟之前的直线最多有n-1个交点,此时分出的部分多出了(n-1)+1; 2折线也是同理,f(1)=2,f(2)=7,先画好前面n-1条折线,当增加第n条拆线时,此时与图形新的交点最多有2*2(n-1)个,所以...转载 2018-03-09 20:03:51 · 151 阅读 · 0 评论 -
hdu1166 敌兵布阵 线段树
#include <iostream>using namespace std;int t,n,as[50005],cas=1,first,last,num,sum[50005<<2];void pushup(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void buildtree(int...原创 2018-03-15 20:30:23 · 138 阅读 · 0 评论 -
Vasya and Chess CodeForces - 493D 博弈
通过举例n=4,n=5 猜测奇数的,白色都可以赢,并且第一步都向右走,使得地图变成偶数,相当于偶数的n,而黑色成了先手。同时发现n为奇数时后手肯定赢#include <map>#include <cstring>#include <string>#include <iomanip>#include <algorithm>#inc...原创 2018-03-01 15:38:25 · 144 阅读 · 0 评论 -
poj2442 Sequenc 优先队列的运用
wa代码 /*priority_queue<int,vector<int>,greater<int> > q[100]; int num,n,m,a; cin>>num; while(num--) { cin>>m>>n; for(int i=0; i<m;...转载 2018-03-01 14:41:00 · 204 阅读 · 0 评论 -
poj3784 Running Median查找中位数
参考http://blog.youkuaiyun.com/sdfzyhx/article/details/52735387凡是关于排序,可以考虑优先队列。#include<cstdio>#include<cstring>#include<queue>using namespace std;priority_queue<int,vecto...转载 2018-03-01 12:48:15 · 121 阅读 · 0 评论 -
Tempter of the Bone dfs+剪枝
#include <iostream>#include <cstring>#include <algorithm>using namespace std;int n,m,t,cx,cy;char map[7][7];int visit[7][7];int nexts[4][2]={{0,1},{1,0},{-1,0},{0,-1}};bool ...原创 2018-03-08 20:12:36 · 126 阅读 · 0 评论 -
HDU 1789 Doing Homework again 贪心
每天做一份作业,给出每份作业的deadline和分值,求在最好策略下扣的分值最少的情况。首先根据作业的分值从大到小排序,如果分值相同,则时间小的排在前面。之后按顺序将作业放在deadline的那一天, 比如有一份作业的期限是3天,就将他放在第三天来做,如果第三天已经放了作业,就往前安排,如果第一第二天都满了,这份作业就只能被扣分了。#include <iostream>#includ...原创 2018-02-28 16:07:03 · 140 阅读 · 0 评论 -
hdu 2199 Can you solve this equation? 二分
1.精度问题 由于是double类型,r=mid 而不是r=mid-12.如果首位两端(f(0)和f(100))同号,证明解不在[1,100]区间内 这是我之所以TE的原因,没有预先判断3.若在这个区间内,则一定可要求出解 所以binarysearch 返回m#include <time.h>#include <iomanip>#include <cstdlib&...原创 2018-02-27 18:37:15 · 133 阅读 · 0 评论 -
poj-3273 Monthly Expense 二分
题意是给出n天的每一天的钱,求将这些钱按照顺序分为m组,使得每一组的钱尽量少,并且输出分组后钱最多的那一组的钱数。参考了http://blog.youkuaiyun.com/change_ac/article/details/507552131. 分组后的每一组的最大的钱一定大于等于全部钱的最大值,小于等于钱的总和,由此得到最初的high和low2.那就在所得到的范围内一个个试,看哪一个符合条件,但不是盲目试...原创 2018-02-27 12:34:07 · 141 阅读 · 0 评论 -
hdu 1325 Is It A Tree? 判断是一棵树还是有回路
Sample Input 6 8 5 3 5 2 6 45 6 0 08 1 7 3 6 2 8 9 7 57 4 7 8 7 6 0 03 8 6 8 6 45 3 5 6 5 2 0 0-1 -1 Sample Output Case 1 is a tree.Case 2 is a ...原创 2018-02-26 18:06:50 · 149 阅读 · 0 评论 -
zoj 3747 Attack on Titans dp 待补充
转自http://blog.youkuaiyun.com/cc_again/article/details/24841249补充几点:1. dp[0][0]=1; //初始状态 dp[0][1]=0; dp[0][2]=0; 为什么要这样初始,是因为第0个位置无论放什么方法数都为1。所以只需在上面的三个式子中随便将一个设置为1,即可,因为看下面 sum=(dp[i-1][0]+dp[i...转载 2018-03-10 10:27:39 · 130 阅读 · 0 评论 -
pku 2533 Longest Ordered Subsequence 最长递增字串
方法一 利用low-bound函数 lower_bound()函数需要加载头文件#include<algorithm>,其基本用途是查找有序区间中第一个大于或等于某给定值的元素的位置#include <iostream>#include <algorithm>#define INF 999999using namespace std;int ary[10...原创 2018-03-17 09:46:34 · 147 阅读 · 0 评论