- 博客(14)
- 收藏
- 关注
原创 hdu3006
题意:给你一些集合,求出可以组成的集合数;用二进制方法:3表示成 100;4表示成1000;则3,4组成的集合表示成1100;在求按位或即可代码:#include#includeint vis[(1<<14)+1];int main(){ int n,m,i,j; while(~scanf("%d%d",&n,&m)) {
2013-03-28 20:38:08 501
原创 hdu4512
题意为求给定序列中单调递增子序列,且相邻的两个小标之差大于d;用线段树可解,(单点更新,查询线段) 线段树中的点是存以a【i】结尾的所要求的字串的最大值,动态规划也可解,但自己不明白如何变形,路过大神留下意见;线段树代码:#include#include#includeconst int maxn=100110;int tree[4*maxn];int maxnum(i
2013-03-25 21:08:37 900
原创 不使用其他变量交换a,b的值
偶然间想到,就仔细了想了想 原来的两个数 a ,b 1: a=a+b; b=a-b; a=a-b; 2: a=a*b; b=a/b; a=a/b; 3:a=a-b; b=a+b; a=b-a;4:a = 9;b = 11;a=a^b; 1001^1011=0010b=b^a; 1011^001
2013-03-22 21:42:01 608
原创 poj2823单调队列
用两个优先队列,一个升序,一个降序;c++6s,G++tle 求解;详细见代码:#include#include#includeusing namespace std;int res1[1000002];int res2[1000002];struct ss{ int val; int x;};struct mycomp1{
2013-03-22 14:42:44 509
原创 FOJ1897志愿者选拔
如果是Q命令,则判断当前队列中是否仍有元素,如果没有则输出-1,如果有则直接输出队首。如果是G命令,则对last加1,之后对于队列中所有超出范围的前端元素进行出队操作。(该元素在原序列中的位置>=last)如果是C命令,则将该元素加入队列中,并和队尾元素比较,维护队列的单调性。这里考虑一个问题,当前元素加如后对队尾元素为什么可以毫无保留的删去呢?因为当前加入的元素比队尾元素大,且该
2013-03-22 10:04:32 614
原创 hdu4002
此题求1~n之间n/φ(n)最大的n,φ(n)=n/(1-i/p1)*(1-1/p2)······(1-1/pk); n/φ(n)=p1/(p1-1) * p1/(p1-1) * ·······*pk/(pk-1);所以得出n的素因子越多,n/φ(n)就越大。而且最后结果一定是连续素数的乘积; #include#include#include#incl
2013-03-22 07:39:54 569
原创 hdu1041规律+大数
#include#includeconst int mod=10000;int a[1020][700];void fun(){ a[1][1]=0;a[2][1]=1; a[3][1]=1;a[4][1]=3; int i,j,tmp=0; for(i=5;i<1020;i++) for(j=1,tmp=0;j<700
2013-03-21 10:18:43 801
原创 hdu1402
大数乘法自己的代码tle,快速傅里叶变换没弄懂: #include#include#include__int64 sum1[13550],sum2[13550];__int64 sum[13550];void fun(char *str1,char *str2){ int num1=0,len=strlen(str1),num2=0;; fo
2013-03-21 09:23:56 610
原创 hdu1297
大数问题,找规律#include#includeconst int mod=10000;int a[1002][700];void fun(){ a[1][1]=1;a[2][1]=2; a[3][1]=4;a[4][1]=7; int i,j,tmp=0; for(i=5;i<1002;i++) for(j=1,t
2013-03-20 19:44:13 617
原创 诡秘的余数 (zjutoj)
http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1010模拟过程代码:#include#include#includevoid work(char *str,int len,int m){ int i,n; for(i=0,n=0;i<len;i++) { n=n*10+str[i
2013-03-20 19:07:17 1537
原创 N!
每位存4个数。#include#includeconst int maxn=10001;const int mod=10000;int a[maxn];int main(){ int n,i,j,s,m,k; while(~scanf("%d",&n)) { memset(a,0,sizeof(a));
2013-03-19 15:52:31 645 1
原创 a+b(整数)
#include#include#include#includeusing namespace std;string operator +(string &a,string &b){ int i; int sum[2001]={0}; int len1=a.length(); int len2=b.length(); for(i=0;i<len
2013-03-19 14:56:15 605
原创 hdu1717
小数(纯循环小数、混循环小数、不循环小数)化成分数纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位上的数都是9。9的个数与循环节的位数相同。一个混循环小数的小数部分可以化成分数,这个分数的分子是第二个循环节以前的小数部分组成的数与小数部分中不循环部分组成的数的差。分母的头几位数是9,末几位是0。9的个数与循环节中的位数相同,0的个数与不循环部分的位数相同
2013-03-07 20:10:48 1121
原创 hdu2180
先计算出所有时针与分针重合的点,在比较时针与分针重合求法:60x=11y,x为时针,y为分针,枚举x即可#includedouble norm[]={0,65.45, 130.91, 196.36, 261.82, 327.27, 392.73, 458.18, 523.64, 589.09, 654.55, 720.00, 785.45, 850.91,
2013-03-07 13:34:12 880
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人