- 博客(55)
- 资源 (1)
- 收藏
- 关注
转载 WJMZBMR在成都赛区开幕式上的讲话
各位选手,各位教练,大家好,我是来自清华大学交叉信息学院的陈立杰,今天很荣幸站在这里代表全体参赛选手发言。对于我来说,这是我第一次正式参加ACM的比赛。不过我跟ACM之间的缘分,大概在很早的时候就已经存在了。 我还依稀记得,在我初三的时候,晚上我的一个好朋友在用手机跟妹子聊天,而我在用手机看OI和ACM的题目。自习课上我的那个朋友跟妹子一起学习,而我则翘课想去机房,有时候机房老师不让
2014-10-31 10:55:03 1793
原创 给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
解法一:举例说明,为了减少复杂度,就使用八位二进制吧。设 A = 0010 1011, B = 0110 0101.1. C = A & B = 0010 0001;2. D = A | B = 0110 1111;3. E = C ^ D = 0100 1110;//异或运算4. 结果E中有4个1,那么也就是说将A变成B,需要改变4位(bit)。至于如何判断E的二进制表示中有
2014-10-31 10:53:25 1943
原创 算法-求二进制数中1的个数
int BitCount(unsigned int n){ unsigned int c =0 ; // 计数器 while (n >0) { if((n &1) ==1) // 当前位是1 ++c ; // 计数器加1 n >>=1 ; // 移位 } return c ;}2. 快速移位+计
2014-10-31 10:51:13 577
原创 斯特灵公式
计算阶乘位数,利用斯特灵公式:一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用,而且,即使在n很小的时候,斯特灵公式的取值已经十分准确。 公式(1)推导: ln(n!)=0.5*ln(2*PI*n)+n*ln(n/e) =0.5*ln(2*PI*n)+n*ln(n)-n
2014-10-31 10:48:03 647
原创 hdu-1004
map的应用#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int main() { int n; map s; while
2014-10-31 10:44:31 499
原创 平面分割问题
平面分割问题 (1) n条直线最多分平面问题题目大致如:n条直线,最多可以把平面分为多少个区域。析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。 这样就会得到n-1个交点。这些交
2014-10-31 10:41:39 634
原创 C语言:位异或运算符^
C语言:位异或运算符^ 位运算符家族中,最常用的,某过于异或运算符。异或运算符是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0例如:10100001^00010001=101100000^0=0,0^1=1 可理解为: 0异或任何数,其结果=任何数1^0=1,1
2014-10-31 10:39:37 15490 1
原创 排错公式
排错公式 错排:n封信放入n个信封,要求全部放错,共有多少种放法,记n个元素的错排总数为f(n)假设有n封信,第一封信可放在(2-n)的任一个信封里,共n-1种放法,设第一封信放在了第k个信封里,若此时第k封信放在了第1个信封里,则只要将剩下的n-2错排,即f(n-2),若第k封信没有放在了第1个信封里,可将第1封信的位置看成是“第k个位置”,即将n-1封信错排,即为f
2014-10-31 10:36:14 1467
原创 poj-3278
广搜简单题#include #include #include #include #include #include #include using namespace std;int n,m;int vis[100010];int main (){ while (scanf("%d%d",&n,&m)!=EOF) { for (int
2014-10-31 10:01:20 559
原创 hdu-1754
#include#include#include#include#include#include#include#include#include#include#include#include#include #include #include #include using namespace std;int max (int a,int b){
2014-10-29 21:09:25 638
原创 hdu-1166
线段树点操作#include#include#include#include#include#include#include#include#include#include#include#include#include #include #include #include using namespace std;struct node{ i
2014-10-29 21:06:58 567
原创 背包专题
一、01背包问题 (先枚举物品,再逆序枚举容量) AC 1、Hdu 2602 Bone Collector 非常常规的01背包问题,用一维和二维数组都可以做,一维快相当多。解题报告 AC 2、Poj 3624 Charm Bracelet 赤裸裸的01背包问题。解题报告 AC 3、Hdu 2546 饭卡 n种菜选若干种使剩下的钱最少,背包容量是开始时的钱,物品体
2014-10-29 21:00:31 688
原创 light-1001
#include #include #include #include #include using namespace std;int main(){ int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); int a=0,b=n;
2014-10-29 11:10:17 510
原创 light oj-1000
#include #include #include #include #include using namespace std;int main(){ int t; scanf("%d",&t); int s=1; while (t--) { int a ,b; scanf ("%d%d",&a,&b)
2014-10-29 11:07:45 376
原创 hdu-1176
数塔DP的变形#include #include #include #include #include using namespace std;int p[100101][15];int main (){ int n; int x,t,t1; while (scanf ("%d",&n)!=EOF && n) { t
2014-10-28 18:46:13 504
原创 hdu-5019
第二次做这个题了...#include #include #include #include using namespace std;long long gcd(long long a, long long b){ long long r = a%b; while (r) { a = b; b = r;
2014-10-25 17:10:48 545
原创 C++单例模式【设计模式】(转)
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式通过类本身来管理其唯一实例,这种特性提供了解决问题的方法。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问。唯一实例类Singleton在静态成员函数中隐藏创建实例的操作。习惯上把这个成员函数叫做
2014-10-25 10:38:37 469
原创 判断互质数的方法
一、概念判断法 公约数只有1的两个数叫做互质的数。根据互质数的概念。可以对一组数进行判断。如,4和9的公约数只有1,所以它们是互质数。 二、规律判断法 根据互质数的定义,可总结出一些规律,利用这些规律可迅速判断一组数是否互质。 (1)两个不相同的质数一定是互质数。例如,19和13是互质数。 (2)两个连续的自然数一定
2014-10-25 01:58:28 6567
原创 poj-2785
题目连接 :http://poj.org/problem?id=2785折半枚举就OK了#include #include #include #include #include #include #include #include #include using namespace std;int a[4444],b[4444],c[4444],d[4444]
2014-10-24 18:39:16 571
原创 数据结构 课设一:停车场管理
停车场管理【问题描述】 设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供 汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向 南排列(大门在最南端),若停车场内已停满n辆汽车,则后来的汽车 只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即 可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出
2014-10-22 01:57:24 6448 5
原创 等概率洗牌算法
遍历数组,遇到第i个元素时,产生一个i到n-1之间的随机数,然后两个位子的数互换。void shuff(int *ap, int n){ int i; for (i=0; i<n; i++) { int t = rand()%(n-i)+i; swap(a[i],a[t]); }}
2014-10-22 00:13:10 740
原创 源代码到可执行文件过程
编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。源代码-->预处理-->编译-->优化-->汇编-->链接-->可执行文件Source--(编译)--> Assembly--(汇编)-->Obj--(链接)-->PE/ELF1.编译预处理读取c
2014-10-21 23:59:43 612
原创 利用1~7的随机数,产生一个1~10的随机数
必须是等概率的。int rand10(){ int i = rand7() - 1; int j = rand7() - 1; int num = rand7()*i + j; if ( num >= 40 ) return rand10(); else return num%10 + 1;}这题一开始我做的时候,我以为直接对这个ra
2014-10-21 23:42:18 2256 1
原创 二叉树层序前序中序后序遍历,深度
层序利用队列:void PrintFromTopToBottom(BinaryTreeNode *pTreeRoot){ if(!pTreeRoot) return; std::queue queTreeNode; dequeTreeNode.push_back(pTreeRoot); while(!queTreeNode.em
2014-10-21 23:30:17 498
原创 poj-1064
二分搜索 : #include #include #include #include #include #include #include #include #include using namespace std;int n;int k;double p[20000];int c (double x){ int num = 0; fo
2014-10-21 16:36:23 525
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人