自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (2)
  • 收藏
  • 关注

原创 省赛了

<br />四月初省赛就要开始,算法这条路真可谓跌跌跌撞撞的,大一,感觉自己学的程序比较好,打算努力搞搞算法,可惜那时候不知道听谁说,ACM不是我们这些人搞的,是那些高中有基础的人搞的,于是我放弃了。<br />到了大二期中新手赛的时候,我才听说赵牛这个人,听了他传说,大学才开始学编程,现在就成为中大最牛的ACMer,无比佩服,也在此时发现自己是有信心的,于是也开始学了。<br />可是项目多了,又搞到我没时间学了。<br />省赛就要来了,把项目搞好就逼一逼算法。<br />我是负责数论+计算几何,没接触

2011-02-28 00:17:00 1728 3

原创 ndk初体验

(其实只是写了个helloworld)1.跟往常一样,先建一个Android的project2.在工程的根目录下面建一个jni的文件夹,里面创建你需要用到的c/c++源文件以及Android.mk.3.编写c/c++代码:以下是我的测试:#include //这个加上jstring Java_cn_com_alfred_MyJNI_stringFromJNI(JNIEnv* env, jobject thiz) { return (*env)->NewStringUTF(env, "Alfre

2011-02-25 12:49:00 550

原创 sicily 1180.Pasting Strings

<br /><br />18 23 <big>100, <bigger>1000, <biggest>10000</biggest></bigger></big><br />19 24 <big></big><bigger>1000, <biggest>10000</biggest></bigger></big> <br />注意这两组数据就得了,输出为:<br /><br /><big><bigger>1000,</bigger></big><br /><bigger>1000,</bigger></bi

2011-02-24 14:52:00 1026

原创 sicily 1176 Two Ends dp(记忆化搜索)

#include #include #include using namespace std;int n;int num[1001];int sum;int f[1001][1001];int dp(int beg, int end) { if(f[beg][end] == 0) { if(beg == end - 1) //剩下两个数的时候真的要贪心了 return f[beg][end] = max(num[beg], num[end]); //

2011-02-24 13:28:00 2238 1

转载 android ndk windows 环境配置

<br /><br />记录一下Windows下Android NDK的配置方法。<br />1.下载NDK<br />http://dl.google.com/android/ndk/android-ndk-r4-windows.zip<br />此为r4版,因此以下均为r4版的配置方法。<br />2.下载安装Cygwin<br />http://www.cygwin.com/setup.exe<br />此为安装程序,需要在线下载一些安装包,选一个台湾的镜像下载,速度能够快一些。<br />选择安装包

2011-02-24 09:38:00 961

原创 poj 1042 钓鱼问题 枚举+贪心

#include #include int f[25]; //第一个五分钟能钓到的鱼 int curF[25]; //目前各湖能钓到的鱼数 int d[25]; //每五分钟鱼量减少的数目 int ans[25]; //能钓到最大鱼数时各湖停留的时间 int ansTmp[25]; int t[25]; //从i走到i+1所需要的时间 int n;int times;

2011-02-22 12:36:00 1020

原创 hdu 1165 递推

这种dp。。刚开始做是用备忘录,结果栈溢出,后来不要递归,直接dp,发现数组远远不够大,肯定MLE,因为当m等于3,n等于23的时候已经好大好大了。。无耐之下百度,结果就发现是用递推公式做的,完全抄的。。 m=0时 A(m,n)=n+1;m=1时 A(m,n)=A(0,A(1,n-1))=A(1,n-1)+1=A(1,n-2)+1+1=……=n+2;m=2时 A(m,n)=n*2+3m=3时 A(m,n)=A(2,A(m,n-1))=A(m,n-1)*2+3其实当m=3的时候还可以递推,不过官方分类是dp。

2011-02-21 20:38:00 1312

原创 poj 1590

<br />。。WA4次。原因是有一句没加句号。。。。。。。<br />#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stack>#include <map>using namespace std;string s;map<char, char> mirr;map<char, char>::iterator iter;void init() { mi

2011-02-20 23:42:00 680

原创 hdu 2844 Coins 多重背包

#include #include #include using namespace std;struct node { int a; int c;}data[100];bool f[100001]; int n, m;int ans[32001];int p, h, c;int count, sum;int main() { //freopen("1.txt", "r", stdin); while(cin >> n >>

2011-02-20 12:17:00 597

原创 hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 多重背包

<br />中国加油!四川加油!<br />#include <iostream>#include <cmath>#include <cstring>using namespace std;int f[101]; //物品组int n, m;int ans[32001];int p, h, c;int count, sum;int main() { //freopen("1.txt", "r", stdin); int t; cin

2011-02-20 11:59:00 960

原创 sicily 1346 金明的预算方案 有依赖的背包问题

<br /><br />他还从因特网上查到了每件物品的价格(都是10元的整数倍)注意这句话就ok了。。之间没留意,结果TLE<br />#include <iostream>#include <cmath>#include <cstring>using namespace std;struct node { int v; //价格 int p; //重要度 int q; //所属主件的编号}data[61];int f[60][32001];

2011-02-20 11:32:00 2030

原创 关于Android的线程问题

<br />之前做的色觉翻译和模拟的时候总出现假死机情况,原因是没加线程,Android把所有的资源都用于处理(执行我的操作),后来加上线程,就没了这假死情况。<br />在Android系统中创建和启动线程的方法与传统的Java程序相同,首先要创建一个Thread对象,然后使用Thread类的start方法开始一个线程。线程在启动后,就会执行Runnable接口的run方法。

2011-02-20 01:14:00 591

原创 关于startActivityForResult

<br />今晚用到了这个函数,才发现我是如此的不熟悉,哈哈,不过也是的,太久没碰了。<br />在此记录一下:加入有A启动B,然后有B返回A,则应有A调用startActivityForResult()函数,而不是B调用,今晚就错在这里。。<br />在A中,<br />Intent intent = new Intent(A.this, B.class);startActivityForResult(intent, 1); //其中1为requestCode,用于唯一标识B返回时的状态(不知

2011-02-20 01:06:00 837

原创 poj 1882 Stamps 二维费用背包

//f[i][l][k]表示第i组数,话费l或l个以下的邮票可达到k价值//f[i][l][k] = f[i][l][k] | f[i][l - 1][k - a[i][j]] || f[i][l - 1][k];#include #include #include #include using namespace std;bool f[10][11][1001];int n;int d[10];int a[10][10];int _max[10];int _

2011-02-19 15:53:00 884

原创 hdu 2602 Bone Collector 01背包

<br />#include <iostream>#include <cmath>#include <cstring>#include <algorithm>using namespace std;struct node { int volume; int value;}data[1000];int f[1001];int main() { //freopen("1.txt", "r", stdin); int t; cin >> t; while(t

2011-02-19 13:54:00 544

原创 poj 3624 Charm Bracelet 01背包

<br />#include <iostream>#include <cmath>#include <cstring>#include <algorithm>using namespace std;const int INF = 12881;struct node { int w; int d;}data[3402];int f[12881];int main() { //freopen("1.txt", "r", stdin); int n, m;

2011-02-19 13:37:00 433

原创 poj 2392 Space Elevator 多重背包

为什么我那种循环找最大就会出错。按道理最高且不为0的元素就是最大的吧?求指点#include #include #include #include using namespace std;struct node { int h; int c; int a;}data[400];int f[40001];bool cmp(const node& A, const node& B) { if(A.a == B.a) return A.h > B.h; retu

2011-02-19 13:22:00 509

原创 poj 1948 Triangular Pastures 01背包

<br />其实,之前说背包简单,现在就觉得不是。。郁闷<br />怎么表示状态还是不简单啊。。这就是所谓的dp的难点?<br />//用f[i][j][k]表示到第i根木棒能否摆出边长分别为j,k的三角形//01背包//f[i][j] = f[i - len][j] | f[i][j - len]#include <iostream>#include <cmath>#include <cstring>using namespace std;bool f[801][801];

2011-02-19 11:48:00 1166 1

原创 poj 1252 zoj 1558 Euro Efficiency 完全背包

<br />雷同poj 3260<br />//看不懂题目,百度,发现题意如此,完全背包,计算方案数//大意:六种货币,面值都小于100。用这六种货币(可加可减)//用最少的货币数组成1到100。求出这1到100中最大的,并求平均值。#include <iostream>#include <cmath>#include <cstring>#include <cstdio>using namespace std;const int INF = 20000000;const

2011-02-19 10:36:00 1588 1

原创 poj 3260 the fewest coins

<br />那个给钱上限是百度的,原来我是用所有的价值加起来作为上线,结果TLE<br />背包问题都很简单,不过加上优化就可能难一点了<br /> <br />//f1[i]表示支付i元所需的最小硬币数//f2[i]表示找i元所需的最小硬币数//买T元东西所需的最小硬币数为f1[T + i] - f2[i]//f1[i] = min(f1[i], f1[i - k] + 1)//f2[i] = min(f2[i], f2[i - k] + 1)//其中f1[i]多重背包,用二进制拆分求

2011-02-19 09:51:00 1173

原创 poj 3628 Bookshelf 2 01背包

<br />//f[i]表示能达到i高度的由牛组成的最小高度//f[i] = min(f[i], f[i - h] + h) h <= i <= b// min(f[i], h) 0 <= i < h#include <iostream>#include <cmath>#include <cstring>using namespace std;int f[120001];int n, b;int data[6];int main() { freo

2011-02-18 16:35:00 834

原创 hdu 3721 Ahui Writes Word 多重背包

<br />刚开始是用01背包做,TLE,百度,发现这是多重背包。<br />ps:二进制拆分要熟练一点!!<br />#include <iostream>#include <cmath>#include <cstring>#include <cstdio>using namespace std;int f[10001];int n, c;int a[11][11];int main() { //freopen("1.txt", "r", stdin); c

2011-02-18 13:05:00 769

原创 poj 1014 Dividing 多重背包 二进制拆分

方法是:将第i种物品分成若干件物品,其中每件物品有一个系数,这件物品的费用和价值均是原来的费用和价值乘以这个系数。使这些系数分别为1,2,4,...,2^(k-1),n[i]-2^k+1,且k是满足n[i]-2^k+1>0的最大整数。例如,如果n[i]为13,就将这种物品分成系数分别为1,2,4,6的四件物品。其实就是拆分成所有的和加起来等于n[i];拆分后别忘了加权,即乘以价值。#include #include #include using namespace std;int f[120

2011-02-18 11:07:00 2268

原创 poj 1384 Piggy-Bank 完全背包

#include #include #include using namespace std;int f[10001];int E, F;int main() { //freopen("1.txt", "r", stdin); int t; cin >> t; while(t--) { cin >> E >> F; int weigh = F - E; for(int i = 0; i > n; while(n--) { int p,

2011-02-18 09:04:00 636

原创 hdu 1248 寒冰王座 完全背包

#include #include #include using namespace std;int a[3] = {150, 200, 350};int f[10001];int main() { //freopen("1.txt", "r", stdin); int t; cin >> t; while(t--) { int n; cin >> n; memset(f, 0, sizeof(f)); for(int i = 0; i f[

2011-02-18 08:38:00 563

原创 poj 2063 Investment 完全背包

//dp完全背包//f[i] = max(f[i], f[i - value] + interest);//注意预处理每个value,由于他们都是1K的倍数,故都除以1K,//不处理会超时。#include #include #include using namespace std;struct node { int value; int interest;}data[10];int f[50000];int main() { //freopen("1

2011-02-18 08:29:00 597

原创 hdu 2159 FATE

<br />本来这题我一直用int f[101][101]; //表示杀掉n只怪得到经验后剩下的忍耐度后来得到钟大牛指点,才发现我自己对背包的概念完全不理解,背包的价值、容量,这题,应该是经验是价值,忍耐度是容量,因为忍耐度是有限的,而经验是无限的。<br />还是高中数学老师彭清华那句话:“概念要清晰!!”<br /> <br />//f[i][j] = max(f[i][j], f[i - 1][m - b] + a)//f[i][j]表示杀掉i只怪用掉j忍耐度所能获得最大的经验值#includ

2011-02-17 23:12:00 566

原创 sicily 2014 完全背包

<br />#include <iostream>#include <cstring>using namespace std;int f[301];int n, c;int main() { while(cin >> n >> c) { memset(f, 0, sizeof(f)); f[0] = 1; for(int i = 0; i < c; i++){ int tmp; cin >> tmp; for(int j = tmp; j <

2011-02-17 10:07:00 823

原创 hdoj 1074 doing homework

<br />//n<=15,由题意知,只需对这n份作业进行全排列,选出扣分最少的即可。//用全排肯定会超时,o(n!),当然,我试过,超时了。//用一个二进制数存储这n份作业的完成情况,第1.。。。n个作业状况分别//对应二进制数的第0,1.。。。。,n-1位则由题意,故数字上限为2^n//其中 2^n-1即为n项作业全部完成,0为没有作业完成。。。//用dp[i]记录完成作业状态为i时的信息(所需时间,前一个状态,最少损失的分数)。//递推条件如下//1.状态a能做第i号作业的

2011-02-16 15:08:00 865

原创 hdoj 1058 Humble Numbers

WA两次,一次没判重,一次不会序数词的定义。。。#include using namespace std;int a[4];int b[4] = {2, 3, 5, 7};int ans[5842];int main() { //freopen("1.txt", "r", stdin); for(int i = 0; i

2011-02-15 10:19:00 678 1

原创 sicily 1421 搬寝室

<br />//虽然看着dp的ppt,但是刚开始做还是用了深搜,毫无疑问,TLE//想着不对路,但是想不到怎么用dp,百度,搜到了转移方程://分两种情况//当i-1>=j*2时//b[i][j]=min{b[i-1][j], b[i-2][j-1]+(a[i]-a[i-1])^2} .//当i-1<j*2时//b[i][j]=b[i-2][j-1]+(a[i]-a[i-1])^2 .#include <iostream>#include <cstring>#includ

2011-02-15 09:36:00 358

原创 hdoj 1176 免费馅饼

<br />//转移方程:ans[t][x] = a[t][x] + max(ans[t - 1][x - 1], ans[t - 1][x], ans[t - 1][x + 1])//关键处理开始的几秒#include <iostream>#include <cstring>#include <algorithm>#include <string>#include <cstdio>using namespace std;int ans[100010][11];int a

2011-02-12 19:09:00 430

原创 hdoj 1087 Super Jumping! Jumping! Jumping!

//转移方程:ans[i] = max(a[i], ans[j] + a[i]) j #include #include #include using namespace std;int ans[1010];int a[1010];int n;int main() { //freopen("1.txt", "r", stdin); while(cin >> n && n != 0) { for(int i = 1; i > a[i]; ans[i]

2011-02-12 18:33:00 449

原创 hdoj 1003 Max Sum

再次鄙视一下hdoj的评测系统。。做这个花了我半个小时,原因:第一次提交WA,我死找问题,没找出,然后百度,发现原理都一样,然后又看,又想,结果把代码再交一次。。AC。。完全没修改。。。//转移方程:ans[i] = max(a[i], ans[i - 1] + a[i]);#include #include #include #include using namespace std;struct node { int sum; int _beg; int _end;

2011-02-12 18:13:00 441

原创 hdoj 1159 Common Subsequence

//根据LCS的最优子结构定理可得转移方程/* 0 i == 0 || j == 0len[i][j] = len[i - 1][j - 1] + 1 s1[i] == s2[j] max(len[i - 1][j], len[i][j - 1]) s1[i] != s2[j] */#include #include #include #include using namespace std;int len[1000][1000];

2011-02-12 17:23:00 516

原创 FatMouse's Speed

<br />http://acm.hdu.edu.cn/showproblem.php?pid=1160<br /> <br />用类似求最长不减子序列的方法,比较水,转移方程为:f[n] = max(f[n], f[i] + 1)-----满足w[n] > w[i] && s[n] < s[i];<br />刚开始WA了几次,因为没注意到是严格单调增的<br />#include <iostream>#include <cstring>#include <algorithm>using nam

2011-02-12 16:50:00 522

原创 HDOJ

<br /><br />模拟题, 枚举<br />1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1

2011-02-12 16:11:00 2878

原创 sicily 1264 Atomic Car Race[Special judge]

<br />计算第n个站时,到第1~n-1个站的时间已经计算好且为最小,故只需要计算在第i个站换tire然后再开到第n个站的时间,取最小。<br />#include <iostream>#include <cstdio>using namespace std;double ans[110]; //到达各站的最短时间double times[10010]; //走x米的时间,各个参数相同,可用同一个表示int a[110];double b, v, e, f;int n,

2011-02-11 17:08:00 1543 1

原创 sicily 1768

<br />//如果队列inSeq中存在i<j<k,使得inSeq[k]<inSeq[i]<inSeq[j],那么inSeq[i]和inSeq[j]不能被放进同一个栈中#include <iostream>#include <stack>#include <cmath>#include <cstring>#include <string>using namespace std;#define INF 10000int color[1010];bool adj[1010][

2011-02-10 19:18:00 1019 4

原创 sicily 1004

先发发已过的代码,思想很简单,就是判断线段共线且相交的情况。不过我WA了10次,哈哈。附上AC代码。有兴趣帮忙看看我不过的代码,在后面,我搞不到为啥过不了,TL就情有可原。。。#include #include #include using namespace std;#define ZERO 1e-8 //误差范围[-1e-8, 1e-8];struct line { double x1; double x2; double y1; double y2; doub

2011-02-08 23:11:00 854

mail.jar, activation.jar, xerces.jar, xmlsec-1.2.1.jar

mail.jar, activation.jar, xerces.jar, xmlsec-1.2.1.jar 做Axis开发必备

2011-11-29

数据结构殷人昆课后答案

数据结构殷人昆课后答案 数据结构殷人昆课后答案

2010-10-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除