
水题
_Phoenix
人一我百,人十我万!追逐青春的梦想,怀着自信的心,永不放弃!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
计蒜客一轮 A
感觉没bug....但是不知道为什么超时TAT #include #include using namespace std; int main() { char s[1000010]; scanf("%s",s); for (int i=0; i<strlen(s); ) { if (s[i]=='0' && s[i+1]=='k' && ((s[i+2]>='0'&&s[i+2]原创 2015-07-20 16:19:27 · 503 阅读 · 0 评论 -
hdu 1241
题意大致就是在一个矩阵中从从上下左右以及对角线八个方向找到最大的连续'@' 然后思路的话就直接各个点进行深搜,搜完一个点就用‘*’覆盖‘@’来避免重复搜索...#include using namespace std; int m,n; char s[110][110]; int dr[8][2] = {{1,0},{-1,0},{1,1},{-1,-1},{0,1},{0,-1},{1,-1}原创 2015-07-17 20:00:53 · 461 阅读 · 0 评论 -
hdu 5130 && BestCoder 1st Anniversary 1001
思路很简单,就是看q/m之后的平均价格和p比较大小。值得注意的是要#include #include using namespace std; int main() { int t; scanf("%d",&t); while (t--) { int n,m,p,q; int w = 0; scanf("%d %d %d %d",&n,&m,&p,&q); if (n <=原创 2015-07-26 20:35:07 · 620 阅读 · 0 评论 -
hdu 1004
map的使用,用完一次记得清空,不然会WA#include #include using namespace std; int main() { map m; map::iterator it; int n; cin >> n; while (n != 0) { string s = "0"; string c = "0"; int a = -10; for (int原创 2015-07-20 16:50:16 · 355 阅读 · 0 评论 -
hdu 1082
题意大致是N个矩阵,如果要求计算的矩阵例如(AB),如果A的列等于B的行,进行:A.行*A.列*B.列这样的运算,如果A的列不等于B的行,输出error。 大致感觉和逆波兰表达式类似,用stack来进行存取会比较方便。如果计算(A(BC)),那么得先计算BC,再与A乘。可以以')'为标志,出现)则弹栈,取出C、B(注意栈顺序)。计算之后再将新的行列入栈,遇到下一个)时与A计算。 /* 注意进出原创 2015-07-20 15:53:35 · 1486 阅读 · 1 评论 -
hdu 1020
用map写了一发结果果断的WA了,然后发现并不需要对字符统计排序。。。#include using namespace std; int main() { int n; cin>>n; while (n--) { string s; cin>>s; for (int i=0; i<s.length(); ) { int c = 1; while (s[i] ==原创 2015-07-17 03:50:56 · 632 阅读 · 0 评论 -
POJ1979(经典深搜)
水题,代码如下 #include #include using namespace std; char a[22][22]; int dr[4][2] = {{-1, 0}, {1, 0}, {0, -1},{0, 1}}; int x, y; int w, h; int num = 0; void dfs(int x, int y) { int m, n; for (int原创 2015-11-03 12:51:36 · 710 阅读 · 0 评论 -
错排递推公式的证明
书架上面有n本书,我们打乱次序重新排,要求每本书重新排好之后位置要与之前不同,那么有多少种排放的方法。 首先,我们从规模较小的数据出发。 如果是一本书,那么不会出现错拍,则f[1] = 0; 如果是两本书,那么两两交换会出现一次错排,则f[2] = 1; 如果是三本书,那么错排次数是2,令原序是(1, 2, 3),则错排可以是(3, 1, 2),(2, 3, 1),即f[3] = 2;原创 2015-12-01 01:45:10 · 1266 阅读 · 0 评论 -
HDU 1421
dp[i][j] = min(dp[i - 2][j - 1] + (v[i] - v[i - 1]) * (v[i] - v[i - 1]), dp[i - 1][j]); 事先对物品重量v进行排序,则只有相邻两件物品之差最小。 对于dp[i][j]其中i表示物品n,j表示搬运次数k,结果为dp[n][k]。 策略有两种,一种为选取当前第i件物品,那么得到公式dp[i - 2][j - 1原创 2016-09-12 20:56:03 · 450 阅读 · 0 评论