博文
PKU ACM 1013 Counterfeit Dollar(2009-09-16 21:41:00)
摘要:#include <iostream>
#include <string>
using namespace std;
struct input{
string left;
string right;
string state;
}in[3];
bool Light(char &ch)
{
for(int i=0;i<3;i++)
{
switch(in[i].state[0])
{
case 'u':
if(in[i].right.find(ch)==string::npos)
return true;
break;
case 'd':
if(in[i].left.find(ch)==string::npos)
return true;
break;
case 'e':
if(in[i].left.find(ch)!=string::npos||in[i].right.find(ch)!=string::npos)
return true;
break;
default:
return false;
}
}
return false;
}
bool Heavy(char &ch)
{
for(int i=0;i<3;i++)
{
&......
PKU 1061 (扩展欧几里德)(2009-09-13 00:41:00)
摘要:
所谓扩展欧几里德,就是在欧几里德算法的基础上加入变量X,Y,使得aX-bY=GCD(a,b)。
此时X,Y是该不定方程式的一组解。
求a * x + b * y = n的整数解的过程:
1、先计算Gcd(a,b),若c不能被Gcd(a,b)整除,则方程无整数;否则,在方程两边同时除以Gcd(a,b),得到新的不定方程a' * x + b' * y = n',此时Gcd(a',b')=1;
2、利用上面所说的欧几里德算法求出方程a' * x + b' * y = 1的一组整数解x0,y0,则n' * x0,n' * y0是方程a' * x + b' * y = n'的一组整数解;
3、根据数论中的相关定理,可得方程a' * x + b' * y = n'的所有整数解为:
x = n' * x0 + b' * t
y = n' * y0 - a' * t
(t为整数)
上面的解也就是a * x + b * y = n 的全部整数解。
关于1061的解法
由题意:
(x+mt)-(y+nt)=pL
=>(m-n)t-(y-x)=pL
=>(m-n)t-pL=(y-x) 即 (m-n)t≡(y-x)MOD(L)
令a=m-n,b=L,c=y-x,X=t,Y=p
则原等式转换为 aX-bY=c
使用扩展欧几里德 求出一组解X0,Y0=>aX0-bY0=GCD(a,b)
令d=GCD(a,b) 若c%d!=0 则无解
......
ACM基本算法分类、推荐学习资料和配套pku习题(2009-09-08 00:13:00)
摘要:
一.动态规划
参考资料:
刘汝佳《算法艺术与信息学竞赛》《算法导论》
推荐题目:
http://acm.pku.edu.cn/JudgeOnline/problem?id=1141
简单
http://acm.pku.edu.cn/JudgeOnline/problem?id=2288
中等,经典TSP问题
http://acm.pku.edu.cn/JudgeOnline/problem?id=2411
中等,状态压缩DP
http://acm.pku.edu.cn/JudgeOnline/problem?id=1112
中等
http://acm.pku.edu.cn/JudgeOnline/problem?id=1848
中等,树形DP。可参考《算法艺术与信息学竞赛》动态规划一节的树状模型
http://acm.zju.edu.cn/show_problem.php?pid=1234
中等,《算法艺术与信息学竞赛》中的习题
http://acm.pku.edu.cn/JudgeOnline/problem?id=1947
中等,《算法艺术与信息学竞赛》中的习题
http://acm.pku.edu.cn/JudgeOnline/problem?id=1946
中等,《算法艺术与信息学竞赛》中的习题
http://acm.pku.edu.cn/JudgeOnline/problem?id=1737
中等,递推
http://acm.pku.edu.cn/JudgeOnline/problem?id=1821
中等,需要减少冗余计算
http://acm.zju.edu.cn/show_problem.php?pid=2561
中等,四边形不等式的简单应用
http://acm.pku.edu.cn/JudgeOnline/problem?id=1038
较难,状态压缩DP,《......
快速排序的随机化版本(2009-09-06 15:19:00)
摘要:
#define MAX_SIZE 100
#include <iostream>
#include <ctime>
using namespace std;
//交换指针p1,p2指向的值
void exchange(int *p1,int *p2)
{
int temp=*p1;
*p1=*p2;
*p2=temp;
}
//pa为指向A[]的数组,p,r为下标,对A[p..r]进行就地重排,以A[r]为主元
//划分为小于主元和大于主元的两部分,返回主元的下标q
//例如:A[1..6]={18,8,16,6,9,10}结果:A[1..6]={8,6,9,10,18,16} q=4
//(元素顺序可能与结果不一致,但小于10的元素在10前面,大于10的元素在10后面)s
int partition(int *pa,int p,int r)
{
int x=*(pa+r); //主元
int i=p-1,j; //i表示小于主元的最后一个元素q
for(j=p;j<r;j++)
{
if(*(pa+j)<x)
{
i++;
exchange((pa+i),(pa+j));
}
快速排序的C++实现(2009-09-05 01:07:00)
摘要:
//quick_sort by suqiang @ neuq & jlu 更详细的内容请访问:http://blog.csdn.net/china8848
#define MAX_SIZE 100
#include <iostream>
using namespace std;
//交换指针p1,p2指向的值
void exchange(int *p1,int *p2)
{
int temp=*p1;
*p1=*p2;
*p2=temp;
}
//pa为指向A[]的数组,p,r为下标,对A[p..r]进行就地重排,以A[r]为主元
//划分为小于主元和大于主元的两部分,返回主元的下标q
//例如:A[1..6]={18,8,16,6,9,10}结果:A[1..6]={8,6,9,10,18,16} q=4
//(元素顺序可能与结果不一致,但小于10的元素在10前面,大于10的元素在10后面)s
int partition(int *pa,int p,int r)
{
int x=*(pa+r); //主元
int i=p-1,j; //i表示小于主元的最后一个元素q
for(j=p;j<r;j++)
{
if(*(pa+j)<x)
{
i++;
exchange((pa+i),(p......
ACM PKU 1011 Sticks 深度优先搜索(2009-09-04 22:46:00)
摘要:
以下是lowai的程序,牛啊,学习中。
#include <stdio.h>
#include <stdlib.h> //due to:qsort
#include <string.h>
int n;
int stick[100];
int total;
int ns; //一共需要还原出的木棍数ns
int ok;
int len; //当次需要达到的长度
int cmp(const void *a,const void *b) {
int a1 = *(int *)a;
int a2 = *(int *)b;
return a2 - a1;
}
int used[100];
int adds() {
int j = 0;
for (int i = 1;i <= n;i++)
j += stick[i];
return j;
}
void search(int,int,int);
void s(int x) { //x 正在还原第x根木棍
if (x > ns) {
ok = 1;
&nb......
PKU ACM 1008--玛雅历(2009-09-02 10:13:00)
摘要: //第一次做的,结果不正确!!
/*
玛雅历Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 32258 Accepted: 9841
Description
上周末,M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有365天的叫做hMonth的历法。这个hMonth历法拥有19个月,在开始的18个月,一个月有20天,月份的名字分别是pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu。这些月份中的日期用0到19表示。hMonth历的最后一个月叫做uayet,它只有5天,用0到4表示。玛雅人认为这个日期最少的月份是不吉利的,在这个月法庭不开庭,人们不从事交易,甚至没有人打扫屋中的地板。
因为宗教的原因,玛雅人还使用了另一个历法,在这个历法中年被称为Tzolkin(holly年),一年被分成13个不同的时期,每个时期有20天,每一天用一个数字和一个单词相组合的形式来表示。使用的数字是1~13,使用的单词共有20个,它们分别是:imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau。注意:年中的每一天都有着明确唯一的描述,比如,在一年的开始,日期如下描述: 1 imix, 2 ik, 3 akbal, 4 kan, 5 chicchan, 6 cimi, 7 manik, 8 lamat, 9 muluk, 10 ok, 11 chuen, 12 eb, 13 ben, 1 ix, 2 mem, 3 cib, 4 caban, 5 eznab, 6 canac, 7 ahau, ,8 imix, 9 ik, 10 akbal ……也就是说数字和单词各自独立循环使用。
hMonth历和Tzolkin历中的......
c++中string的用法(2009-09-01 13:04:00)
摘要:
原文地址:http://hi.baidu.com/clnju/blog/item/4e10b81bc622e4118618bf1a.html
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。
首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>。如下:
#include <string> //注意这里不是string.h string.h是C字符串头文件
1.声明一个C++字符串
声明一个字符串变量很简单:
string Str;
这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下:
a) string s; //生成一个空字符串s
b) string s(str) //拷贝构造函数 生成str的复制品
c) string s(str,stridx) //将字符串str内"始于位置stridx"的部分当作字符串的初值
d) string s(str,stridx,strlen) //将字符串str内"始于stridx且长度顶多strlen"的部分作为字符串的初值
e) string s(cstr) //将C字符串作为s的初值
f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
g) string s(num,c) //生成一个字符串,包含num个c字符
h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
i) s.~string() //销毁所有字符,释放内存
都很简单,我就不解释了。
2.......
如何把字符串转换为整型数(2009-09-01 12:27:00)
摘要:
char* c="123";
int i=atoi(c);
//
char* ch="12.3";
double j=atof(ch);......
怎样初始化一个动态数组的所有元素为0.(2009-08-27 20:36:00)
摘要:
(CC++)怎样初始化一个动态数组的所有元素为0.数组很大.若建议用循环初始化谢绝回复.谢谢!
悬赏分:0 - 解决时间: 2009年02月25日 00时05分
动态申请的数组.编译器应该不会自动初始化为0值吧.
提问者: sdf7895 - 超级魔法师 九级
最佳答案
#include <iostream>
#include <memory.h>
using namespace std,
void main()
{
int n=100000,
long* array=new long[n],
memset(array. 0. n*sizeof(array)),
}
出自:http://it.wenda.sogou.com/question/2161539.html......