
想法题
Benzema67
北京邮电大学学生
展开
-
POJ 1147 Binary Codes 杂题
这个题我是看着解题报告做的。首先可以根据最后一列推出第一列。然后依次寻找每一行自己左移得到的下一行记录到next数组中#include#includeint main(){ int n; int lastcol[3005]; int firstcol[3005]; int firstrow[3005]; int visit[3005]={0};原创 2012-01-16 12:44:39 · 1077 阅读 · 0 评论 -
leetcode single-number-ii
n个数,只有一个数出现1次 其他每个数都出现了3次 找出只出现一次的数。显然先想到的就是按位加模3了,拿一个数组去记数的二进制每一位,大概long long的数复杂度O(64*n)。常数略大,进而想到用位运算来优化,拿两个变量,one和two分别记录到当前为止,哪些位只出现了单独1个1,哪些位恰出现了2个1,每次循环处理到当前的数,先去和two看能不能凑够3个1就可以把two的当前位消为0,然原创 2014-03-13 12:18:52 · 2610 阅读 · 0 评论 -
与三角形三边有关的几个题
1.BOJ 320 求一个数组的有多少组任意三个数能够组成三角形#include#include#includeusing namespace std;int n,in[3100];int sea(int l,int h,int num){ int ans=l-1; while(l<=h){ int mid=(l+h)>>1; if(in[mid]>=num)原创 2013-04-13 00:01:50 · 1065 阅读 · 0 评论 -
BOJ 1450
把原来的数组相邻两数逐个求差构造新数组,这样若a[i]!=0,只需要更新a[i+k]即可,达到o(n^2)的复杂度#include #include #include #include #define N 100100typedef long long ll;using namespace std;int a[3010],b[3010],c[3010];int main()原创 2013-03-26 17:17:00 · 946 阅读 · 0 评论 -
POJ 2549 Sumsets
3-sum问题http://en.wikipedia.org/wiki/3SUM#include#include#includeusing namespace std;#define N 1010int a[N];int main(){ int i,j; int n; while(scanf("%d",&n)){ if(n==0)break;原创 2013-03-12 16:49:01 · 870 阅读 · 0 评论 -
HDU 4260
简单递归#include#include#includeusing namespace std;char s[100];int len;long long dfs(int pos,char to){ if(pos==-1) return 0; if(to=='A'){ if(s[pos]==to) return原创 2012-09-15 15:54:59 · 837 阅读 · 0 评论 -
一个经典小问题
面试题:从给定的N个正数中选取若干个数之和最接近M解法为背包:分2种情况如果N个正数全部比M打的话,直接取最小值即可;否则先背包求一遍和比M小的最大值,即为S,然后再背包求一下和比M+M-S小的最大值,然后两者中更接近M的即为所求。证明仔细想想也是显然的。原创 2012-10-05 18:21:44 · 1061 阅读 · 0 评论 -
HDU 4334 && ZOJ 3631
都是用到了求分别在两个数组中的两个数使之和满足某个条件方法是先排序,然后用两个指针 i,j 分别指向两个数组的头和尾,再调整移动指针。zoj 3631#include #include #include #include #include using namespace std;int main(){ int i,j,a[50],ans,n,m; int原创 2012-08-02 20:30:16 · 1648 阅读 · 1 评论 -
sgu 397
手写链表#include#includeusing namespace std;char s;int tem,head,nex,last;struct word{ char c; int next; int last;}seq[1000100];int main(){ int i,f=1; //freopen("a.txt","r",std原创 2012-07-11 20:48:05 · 798 阅读 · 0 评论 -
Google code jam Round 1B
好久不写题,第一题的二分也看不出来了......#includeint main(){ int t,T,i,j,n,sum,all,tem,yes; int a[210]; double b; freopen("A-large-practice.in","r",stdin); freopen("b.out","w",stdout); scanf("%d",&T); for(原创 2012-05-06 14:17:54 · 944 阅读 · 0 评论 -
BOJ 519
Description给定一个正整数X,求一个最小的正整数N,使得N能被X整除。并且N有个性质:其各位数字都相同,比如1111,222222……Input有若干组测试数据,以EOF结束。对于每组测试数据只有一行,包含一个正整数X(0 Output每组测试数据输出一行,包含1个正整数N。如果不存在则输出"No Solution"。Sample Input74S原创 2012-04-16 18:44:11 · 1169 阅读 · 3 评论 -
程序员编程艺术第二十五章:Jon Bentley:90%无法正确实现二分查找
第二十五章:二分查找实现(Jon Bentley:90%程序员无法正确实现)作者:July出处:结构之法算法之道引言 Jon Bentley:90%以上的程序员无法正确无误的写出二分查找代码。也许很多人都早已听说过这句话,但我还是想引用《编程珠玑》上的如下几段文字:“二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包转载 2012-02-25 11:41:18 · 787 阅读 · 0 评论 -
BOJ 170 Fake Coins
题目地址http://acm.bupt.edu.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=170这个题用到信息论里的几个概念。信息量、熵(不会的百度一下)假币可轻可重,每枚硬币都可能是假币。故此问题共有2*n种情况,每种情况的概率为1/(2*n)。所以此问题的熵为log(2*n)/log2。实验最多可能原创 2012-01-26 12:59:21 · 1017 阅读 · 0 评论 -
编程之美 正方形
时间限制: 1000ms 内存限制: 256MB描述在 N 条水平线与 M 条竖直线构成的网格中,放 K 枚石子,每个石子都只能放在网格的交叉点上。问在最优的摆放方式下,最多能找到多少四边平行于坐标轴的长方形,它的四个角上都恰好放着一枚石子。输入输入文件包含多组测试数据。第一行,给出一个整数T,为数据组数。接下来依次给出每组测试数据。每组数据为三个用空格隔开的整数 N,M,原创 2014-04-09 20:38:24 · 1626 阅读 · 0 评论