基础算法
ThunderSei
这个作者很懒,什么都没留下…
展开
-
矩阵快速幂
思路和简单快速幂一样简单快速幂只是乘法规则变成矩阵乘法了POJ3070#include#include//using namespace std;int m[2][2];int ans[2][2];int r[2][2]; const int MOD=10000;void set(int a[2][2],int b[2][2]){ int i,j;原创 2013-10-25 21:41:34 · 411 阅读 · 0 评论 -
lightoj 1211 立方体面积交
#include#includeusing namespace std;int main(){ int cas; scanf("%d",&cas); for(int T=1;T<=cas;T++) { int n; scanf("%d",&n); int bl[3],tr[3]; for(int i=0;i<3;i++) scanf("%d",&bl[i]原创 2013-11-10 14:57:32 · 679 阅读 · 0 评论 -
lightoj 1214 大数除法
#include#includeint main(){ int cas; scanf("%d",&cas); for(int T=1;T<=cas;T++) { char num[300]; long long div; scanf("%s%lld",num,&div); printf("Case %d: ",T); if(div==0) { print原创 2013-11-10 15:51:39 · 720 阅读 · 0 评论 -
lightoj 1109 struct is good
#include#includeusing namespace std;struct P{ int num; int count; bool operator < (const P &o) const { if(count==o.count) return num>o.num; return count<o.count; }};P n[1500];int原创 2013-11-09 20:06:54 · 613 阅读 · 0 评论 -
hangzhou 02
#include#include#include#include#include#includeusing namespace std;const int INF=12345678;int n,m;struct P{ int x,y; P(int a,int b) { x=a; y=b; } P(){}};int b[200][200];queue q原创 2013-11-09 14:21:27 · 673 阅读 · 0 评论 -
lightoj 1136 第一次打表找规律做题..
#includetypedef long long ll;ll getNum(ll n){ if(n==1) return 0; ll sum=2*((n+1)/3)-1; if((n+1)%3==0) return sum; return sum+1; }int main(){ int cas; scanf("%d",&cas); for(int T=1;T原创 2013-11-09 23:55:27 · 670 阅读 · 0 评论 -
lightoj 1189 水题叫你明白什么叫贪心....
#include#include#includeusing namespace std;typedef long long ll;ll fac[21];int main(){ int cas; fac[0]=1; for(int i=1;i<20;i++) fac[i]=fac[i-1]*i; scanf("%d",&cas); for(int T=1;T<=ca原创 2013-11-10 00:45:41 · 599 阅读 · 0 评论 -
sin PI and other things
#include#includeint main(){ double PI=2*acos(0.0); int cas; scanf("%d",&cas); for(int T=1;T<=cas;T++) { double R,r; double n; scanf("%lf%lf",&R,&n); double ang=PI/n; r=R*sin(ang)/(1+原创 2013-11-09 11:07:07 · 717 阅读 · 0 评论 -
lightoj 1045 有关进制的二三事
做完这道小题,对进制的理解加深了一点。进制就是把一堆1用log级别表示出来的方法。log的底数就是进制。不同进制(除了1进制之外)在表示的难度方面没有质的变化。所谓10进制并没有什么优势。2进制一样可以log级别表示数。总共有几位就是log(n)进制转换看这篇文章就好了http://www.cnblogs.com/phinecos/archive/2009/09/11/15原创 2013-11-08 22:39:53 · 648 阅读 · 0 评论 -
lightoj 1042 练一练位操作
要把数字变成1的个数相同,比这个数大的最少的一个数我的想法就是先找到第一个01这样的序列,把1向前移动一位,然后再把位置靠前的1移动到后面的0上。位操作:&= 可以把某位置0 通过1110111这样子的数字|= 可以把某位置1 通过0001000这样的数字^ 异或,与11111异或可以取反 另外两个相同的数与另一个数异或得到另一个数 5^2^5=2~ 按位取反原创 2013-11-08 20:24:01 · 825 阅读 · 0 评论 -
lightoj 1202
#include#includeusing namespace std;int main(){int t,tt=1;scanf("%d",&t);while(t--){int x,y,x1,y1;scanf("%d%d%d%d",&x,&y,&x1,&y1);printf("Case %d: ",tt++);int tmp1,tmp2;tmp1=x1-x;if(tm原创 2013-11-23 00:23:43 · 662 阅读 · 0 评论 -
LightOJ 1136 Division by 3
#includeusing namespace std;int main(){ int A, B, T; int caseNo = 0; cin >> T; while(T--){ int count = 0; cin >> A >> B; count = (B - A + 1) / 3 * 2; if((B - A + 1) / 3 * 3 == B - A -原创 2013-11-23 00:20:56 · 824 阅读 · 0 评论 -
LIGHTOJ 1056
#include#includeint camp[2000];int rt[500];int n,k;int count;bool C(int x){ memset(rt,0,sizeof(rt)); int sum=0; count=0; for(int i=0;i<n;i++) { if(camp[i]>x)//this is important retur原创 2013-11-08 00:04:38 · 602 阅读 · 0 评论 -
lightoj 1043 浮点数2分
2分ad的可能值,本来推公式也可以,但是感觉有点麻烦。2分50次就够了,2分20次反正挂了#include#includeint main(){ double ab,bc,ac; double ad,de,ae; double k; int cas; scanf("%d",&cas); for(int T=1;T<=cas;T+原创 2013-11-07 22:03:32 · 844 阅读 · 0 评论 -
难道2分真的要卡死我么 ZOJ3702
今天做浙大的校赛的时候见到的题目,被队友找规律秒掉了,但是听大牛说他是2分搞过去的。于是我也再用2分写一发。但是还是WA了好久,究其原因并不是2分的错,而是我输出格式少了换行。如果要用半开半闭区间的二分,就一直用吧。这道题是个二分查找,当做查上界或者查下界都可以做,毕竟相等的只有一个。最后的正确答案就是你的闭区间那部分。就有包括等号的那部分。#include#includet原创 2013-11-07 01:32:56 · 732 阅读 · 0 评论 -
poj2104 分桶法与平方分割 还有一些其他的感悟
其实这是一道划分树的题目,用这种方法可以说是纯粹搞过去的。不过还是从这里面学到了好多。 首先当然是搞这道题目的方法,分桶法与平方分割,分统法把元素每n^1/2分成一桶,这样可以把区间操作降低到O(n^1/2),比如分筒法的RMQ。 然后是关于程序中区间的理解,程序中用到的区间最好是半开半闭区间,STL 和 JAVA的类库都是这样实现的,这样有很多优点,其中一个优点就是区间的长度是原创 2013-11-04 23:56:38 · 1092 阅读 · 1 评论 -
UVA 10066 shuangzita...
//lun lcs de zhong yao xing ....#include#include#includeusing namespace std;int dp[102][102];int n1,n2;int a[200];int b[200];int lcs(){ memset(dp,0,sizeof(dp)); for(int i=1;i<=n1;i++) {原创 2013-11-25 13:36:21 · 692 阅读 · 0 评论