03 2014 档案

POJ 1286 Necklace of Beads
摘要:// 3中颜色的n个珠子 问有多少种不同数量 旋转和翻转后相同算一种 // 先考虑旋转 转i格 循环节 gcd(i,n)// 翻转的话 n为奇数 每种翻转循环节 n/2+1// n为偶数 n/2的循环节为 n/2 n/2的循环节为 (n-2)/2 +2// 最后用 polya定理#include #include using namespace std;#define LL long longLL Pow(LL a,LL b){ LL t=1; for(;b;b>>=1) { if(b&1) t=t*a; a=a*a; } retur... 阅读全文

posted @ 2014-03-30 12:06 江财小子 阅读(149) 评论(0) 推荐(0) 编辑

POJ 2154 Color
摘要:// polyya定理 题意就是n种颜色n个球 求不同染色方案 "不考虑翻转"//首先 n^gcd(n,i) i=0~n-1// n太大 求 k=gcd(n,i)的个数 枚举q|n 1~sqrt(n) 再求phi(n/q) phi(q)// #include #include using namespace std;int Pow(int a,int b,int m){ int t; a=a%m; for(t=1;b;b>>=1) { if(b&1) t=(t*a)%m; a=(a*a)%m; } return t;}int p... 阅读全文

posted @ 2014-03-28 17:07 江财小子 阅读(217) 评论(0) 推荐(0) 编辑

hdu 2461 Rectangles
摘要:求矩形的并 矩形个数 1...20m次询问 回答要求的r个矩形的并容斥原理dfs优化: 遇到面积交为0时 这个dfs分支可以不下去了#include #include #include#include #include #include #include #include using namespace std;//#define LL long long#define LL __int64struct Rectan{ int x1,y1; int x2,y2; Rectan jiao(Rectan &R) { Rectan t; t.x1... 阅读全文

posted @ 2014-03-25 17:22 江财小子 阅读(153) 评论(0) 推荐(0) 编辑

Scoi 2010 幸运数字
摘要:【题目描述】在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是太少了,比如在[1,100]的区间内就只有6个(6,8,66,68,86,88),于是他又定义了一种“近似幸运号码”。lxhgww规定,凡是“幸运号码”的倍数都是“近似幸运号码”,当然,任何的“幸运号码”也都是“近似幸运号码”,比如12,16,666都是“近似幸运号码”。现在lxhgww想知道在一段闭区间[a, b]内,“近似幸运号码”的个数。【输入】输入数据是一行,包括2个数字a和b 阅读全文

posted @ 2014-03-25 17:00 江财小子 阅读(429) 评论(0) 推荐(0) 编辑

poj 1426 Find The Multiple
摘要://给你一个整数 1#include #include #include #include #include #include #include using namespace std;#define LL __int64//#define LL long long#define N 1010struct node{ int num; int fa; int lf;}No[N];int h[210];void output(int id){ if(id) { output(No[id].fa); printf("%d",No[id].n... 阅读全文

posted @ 2014-03-23 22:27 江财小子 阅读(147) 评论(0) 推荐(0) 编辑

hdu 1695 GCD
摘要:// 题意: 给你区间[a,b] [c,d] 在两个区间各取一个数x,y,要求gcd(x,y)= k// 题目给的区间中说 0 #include #include#include #include #include #include #include using namespace std;#define LL __int64//#define LL long long#define N 100010struct node{ int cnt; int pr[10];}hs[N];LL phi[N];LL ans;void init(){ int i,j; for(i... 阅读全文

posted @ 2014-03-23 21:42 江财小子 阅读(150) 评论(0) 推荐(0) 编辑

poj 3370 Halloween treats
摘要://poj 3370 c个小孩 n户人家 n>=c 每个人家有一些糖果,找些人家糖果和是c的倍数 输出找到人家的编号 (从1开始计算)//鸽巢原理// n个数必定存在某段连续和是n的倍数// 累加求余可以看出这个#include #include #include using namespace std;#define LL __int64LL a[100010];int h[100010];int main(){ int c,n; while(scanf("%d%d",&c,&n),c|n) { // printf("%lld\n" 阅读全文

posted @ 2014-03-23 20:43 江财小子 阅读(133) 评论(0) 推荐(0) 编辑

poj 2661 Factstone Benchmark (Stirling数)
摘要://题意是对于给定的x,求满足n! #include #include#include #include #include #include #include using namespace std;// #define LL __int64#define LL long longconst double pi=acos(-1.0);const double inx_2=log(2.0); // log -> inx log10int f[30];int main(){ f[0]=1; int i; for(i=1;i<30;i++) f[i]=f[i-1]*2; int ... 阅读全文

posted @ 2014-03-18 11:54 江财小子 阅读(196) 评论(0) 推荐(0) 编辑

Hdu 1521 排列组合
摘要:a1 n1 a2 n2 ... ak nkn=n1+n2+...+nk从n个数中选r个排列(不是组合噢)// 指数型母函数// 模板#include #include #include#include #include #include #include #include using namespace std;#define LL __int64//long longstruct node{ LL u,d; // u/d node(){} node(LL a,LL b){ u=a; d=b; } LL gcd(LL a,... 阅读全文

posted @ 2014-03-17 12:47 江财小子 阅读(208) 评论(0) 推荐(0) 编辑

hdu 1023 Train Problem II
摘要:// 用h[n]表示n节火车的出站方法总数// 那么分别考虑每一辆车最后出站// 比如第一辆最后出站 则 有 h[0]*h[n-1]种出站方法// 第二辆最后出站 则 有 h[1]*h[n-2]种出站方法// ... // 第i辆最后出站 则 有 h[i-1]*h[n-i]种出站方法// 卡特兰数 // 递推公式 h[n]=h[n-1]*(4*n-2)/(n+1);#include #include #include#include #include #include #include #include using namespace std;#define LL long lon... 阅读全文

posted @ 2014-03-16 23:19 江财小子 阅读(127) 评论(0) 推荐(0) 编辑

POJ 1850 Code
摘要://这题和上题没什么区别// 就是数据大了点而已// 直接参考上题 http://www.cnblogs.com/372465774y/p/3604095.html#include #include #include#include #include #include #include #include using namespace std;#define LL long longLL C[40][40];int dp[40];void init(){ int i,j; for(i=0;i0) { index--; lf='z'-str[index]... 阅读全文

posted @ 2014-03-16 22:55 江财小子 阅读(111) 评论(0) 推荐(0) 编辑

POJ 1496 Word Index
摘要:// 给你一个字符串 看下是否符合里面字符都是递增的// 如果是,那么求出他的编号// a是1号 ab是27号 .... 以此类推// 思路:给你的串长n 求长度为 1,2...n-1的合法串个数 C[26][1]+C[26][2]+...+C[26][n-1]// 求长度为n的串在同等长度里面排第几// 然后就OK了#include #include #include#include #include #include #include #include using namespace std;#define LL long longint C[40][40];int dp[40];vo.. 阅读全文

posted @ 2014-03-16 22:47 江财小子 阅读(309) 评论(0) 推荐(0) 编辑

POJ 3252 Round Numbers
摘要:// 求区间 [s,f]中有几个数在二进制表示下0的个数// 转化成求 0到某个值里面有多少这样的数// n二进制有m位 先求 1,2,3...m-1位二进制数里面有多少个符合// 再求n位里面比n小的二进制数里面有几个符合// 具体就是 将n写成二进制 从高位(m-1位)往地位枚举// 如果该位是1 则改成0 求剩下位数里面满足的情况总数// 如果该位是0 则不变 继续往下#include #include #include#include #include #include #include #include using namespace std;#define LL long lon. 阅读全文

posted @ 2014-03-16 21:25 江财小子 阅读(195) 评论(0) 推荐(0) 编辑

POJ 1019 Number Sequence
摘要:// 11212312341234512345612345671234567812345678912345678910123456789101112345678910......// 给你个n 求上面的序列第n个数字是多少// 我是先按尾巴数字位数分组// 定义如下数据结构// 然后在求在确定位数里面的第几个// 再求这个子序列里面的某一位// 就是分组 归类的思想// 1Y ,看来思路清晰,代码清晰对于准确率来说是满重要,以前老是迷迷糊糊就开始写代码#include #include #include#include #include #include #include #include u 阅读全文

posted @ 2014-03-16 19:41 江财小子 阅读(143) 评论(0) 推荐(0) 编辑

POJ 1942 Paths on a Grid
摘要:// n*m 的格子 从左下角走到右上角的种数// 相当于从 n+m 的步数中选 m 步往上走// C(n+m,m) #include #include #include#include #include #include #include #include using namespace std;#define LL long longLL C(LL n,LL k){ LL m=1; if(k>n/2) k=n-k; // 不加这句会超时 比如C[10^9][10^9 - 1] int i; for(i=1;i<=k;i++) { m*=(n-i+... 阅读全文

posted @ 2014-03-16 12:27 江财小子 阅读(227) 评论(0) 推荐(0) 编辑

POJ 1306 Combinations
摘要:// 求 C[n][m]// 组合公式 C[i][j]=C[i-1][j-1]+C[i-1][j];#include #include #include#include #include #include #include #include using namespace std;#define LL long longLL C[123][123];int main(){ int i,j; for(i=0;i<=100;i++) C[i][0]=1; for(i=1;i<=100;i++) for(j=1;j<=i;j++) C[i][j]=C[i-1][j-... 阅读全文

posted @ 2014-03-16 12:04 江财小子 阅读(278) 评论(0) 推荐(0) 编辑

POJ 2249 Binomial Showdown
摘要:// n 个 数 取 k个数的取法// C(n,k) 注意些细节#include #include #include#include #include #include #include #include using namespace std;#define LL long longLL C(int n,int k){ LL m=1; if(k>n/2) k=n-k; // 不加这句会超时 比如C[10^9][10^9 - 1] int i; for(i=1;i<=k;i++) { m*=(n-i+1); m/=i; } r... 阅读全文

posted @ 2014-03-16 11:50 江财小子 阅读(371) 评论(0) 推荐(0) 编辑

UVA 10098 Generating Fast, Sorted Permutation
摘要:// 给你字符串 按字典序输出所有排列// 要是每个字母都不同 可以直接dfs ^_^// 用前面说的生成排列算法 也可以直接 stl next_permutation#include #include #include#include #include #include #include #include using namespace std;char s[100];int n;void change(int l,int r){ while(l0&&s[i-1]>=s[i]) i--; if(!i) return false; int k=i,j=n-1; ... 阅读全文

posted @ 2014-03-16 11:10 江财小子 阅读(264) 评论(0) 推荐(0) 编辑

POJ 1146 ID Codes (UVA146)
摘要:// 求下一个排列// 如果已经是最后一个排列// 就输出 No Successor// stl 或 自己写个 生成排列 我测试了下 两个速率是一样的、只是代码长度不同/*#include #include #include#include #include #include #include #include using namespace std;char s[100];int n;int main(){ while(scanf("%s",s),strcmp(s,"#")) { n=strlen(s); if(next_permutation(s,s 阅读全文

posted @ 2014-03-16 10:40 江财小子 阅读(296) 评论(0) 推荐(0) 编辑

POJ 1833 排列
摘要:题意: 给你某个排列 求从下一个排列开始的第k个排列如果是最后一个排列 则下一个排列为1 2 3 ... n// 1 用stl 里面的 next_permutation// 2 用生成下一个排列算法// 1)从末尾开始找第一个正序 A[i-1]A[i-1]// 3)交换 A[i-1],A[j]// 4)将下标从i开始的序列翻转 #include #include #include#include #include #include #include #include using namespace std;int s[2000];int n,k;void change(i... 阅读全文

posted @ 2014-03-16 10:20 江财小子 阅读(437) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示