09 2012 档案
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1091题意:从 s 个数里挑出 k 个, 这个 k 个数的共因子大于 1 一共有多少种方法直接暴搜,注意剪枝优化View Code 1 typedef long long ll; 2 const int N = 60; 3 int ans,k,s; 4 bool vis[N]; 5 int flag; 6 int gcd(int a,int b) 7 { 8 if(!b) return a; 9 else return gcd(b,a % b);10 }11 bool juge(...
阅读全文
摘要:题目:http://acm.hdu.edu.cn/showproblem.php?pid=4414简单题目,直接枚举View Code 1 using namespace std; 2 typedef long long ll; 3 const int N = 60; 4 char map[N][N]; 5 int ans,ans1,ans2,ans3,ans4; 6 int n; 7 bool juge(int x,int y,int flag) 8 { 9 //cout<<"x = "<<x<<" "<<
阅读全文
摘要:题目:http://poj.org/problem?id=1111给出你个 n * m的图形,然后给出你鼠标点击的位置(鼠标只可以点击 X),鼠标可以从点击的点往八个方向走,问鼠标可以点击的区域的周长View Code 1 typedef long long ll; 2 const int N = 22; 3 bool vis[N][N]; 4 char map[N][N]; 5 int ans; 6 int n,m; 7 int move[8][2] = {{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,1},{1,-1}}; 8 struct no.
阅读全文
摘要:题目:http://acm.hdu.edu.cn/showproblem.php?pid=4291题意和解释网上一搜一大片,以前也做过一个用矩阵乘法求这种题的(这个还要求出嵌套的循环节),可是看到题的时候还是什么也没有想到,对以前的知识掌握的不好,也不会灵活用。。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <algorithm> 5 #include <vector> 6 #include <math.
阅读全文
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1748题意:定义:一个数的的因子个数称为该数的复杂度,给出一个n,求从 1 ~ n 范围内复杂度最大的数,如果有多个相等,输出最小的,并输出因子个数其实就是求反素数的(关于反素数:http://www.cnblogs.com/fxh19911107/archive/2012/07/28/2613150.html),先用求反素数的模板求出在n 范围内复杂度最大的数,然后再把 这个数分解成 素数 乘积的形式,求出因子数View Code 1 typedef long long ll; 2 co
阅读全文
摘要:题目:http://poj.org/problem?id=3661题意:一头牛,给出他运动的时间 ts,在运动时间内,它可以选择跑步,也可以选择休息,如果他跑步疲劳值 +1,如果休息疲劳值 -1,如果它在休息,那么必须疲劳值为0时才能跑步,问到第N秒且疲劳值为0时,牛可以跑得最远距离dp[i][j] 表示 在第 i 秒时 疲劳值为 j 时牛跑的最远距离,那么方程就是 dp[i][j] = dp[i - 1][j - 1] + dis[i] (如果在第 i 秒跑步)dp[i][0] = Max(dp[i][0],dp[i - j][j]) (if( i - j >= j),初始化 dp[i
阅读全文
摘要:题目:http://acm.hrbeu.edu.cn/index.php?act=problem&id=1010&cid=25题目不难,但是当 a b c都很大时,就不知道怎么算了,当作一个 求 c (n, m) % p的模板用吧。参考链接:http://www.cnblogs.com/gxceo/archive/2011/04/04/2005137.html因为任何一个实数都可以写成 素数的乘积的形式,所以 c (n , m) = n ! / ( m! * (n - m) !) 就可以把这几个数都写成数素的乘积,然后分子分母低数相同的素数的指数进行相减,然后,剩余的数对 c
阅读全文
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1355题意:给出两个数 a b,从a 可以走的编号是 b 的因子,每走一个编号就可以喝一杯酒,问从 a 到 b 可以喝到最多的酒是多少(大概是这个意思)思路:如果从a 到不了 b(即 b % a 不为零) 那么 ans = 0;如果可以走到,那么计算 b / a 后的素因子的个数View Code 1 typedef long long ll; 2 const int N = 32000; 3 int prime[N]; 4 bool vis[N]; 5 int num; 6 void i
阅读全文
摘要:题目:http://acm.hrbeu.edu.cn/index.php?act=problem&id=1008&cid=25写的程序就那么的耗时吗?交上去都有5分钟了,还是在Waiting。费了好大劲调,也不知道对不对,留个纪念吧。说一下思路:1,把第n 封信放在一个信封里,比如说是第 k 个 一共有 n - 1种方法 2,放编号为 k 的信,有两种情况: (1)放在第 n 个信封里,那么,对剩余的 n - 2 个信,有 f (n - 2) 种方法。 (2)不放在第 n 个信封里,这时,对于除第 n 封信以外剩余的 n - 1封信有 f ( n - 1...
阅读全文
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1118题意:给出个范围 n ~ m,定义 triviality(i) = ( i 的所有因子的和) / i ;做了一晚上了,就是 WA 9 ,都快要哭了。当发现自己哪里错了时候,都想一头撞死了,我竟然把那个 所有因子和当成了因子个数来算,不仔细看题,教训。。白交了那么多次。说一下注意点:1.如果给的范围内有 1,那么 1 的triviality = 0(因为题目说了,n因子是小于n本身的) 2.如果给的范围内有素数,那么素数越大 他的triviality值就越小,所以只需找到...
阅读全文
摘要:题目:http://acm.hdu.edu.cn/showproblem.php?pid=4272一开始看确实很简单的,但是晕死的题意距离坑了很多人。。View Code 1 typedef long long ll; 2 const int N = 1010; 3 int a[N]; 4 int main() 5 { 6 int n,i,j; 7 //freopen("data.txt","r",stdin); 8 while(scanf("%d",&n) != EOF) 9 {10 for(i = 0; i < n;
阅读全文
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1049题意:给十个数,假设十个数相乘后所有因子个数为 sum,求的 N = sum % 10;忘了是根据什么了,有一个结论:任何一个数都可以写成:M = P1 ^ a1 * P2 ^ a2 * P3 ^ a3 ~~~~~ Pn ^ an;那么 M 的因子个数就是 sum = (a1 + 1) * (a2 + 1) * (a3 + 1) ~~~(an + 1); ai < 10000,注意随时取余View Code 1 const int N = 10010; 2 int prime[
阅读全文
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1352题意:首先定义梅森尼质数:符合 2 ^ p - 1是素数的数,现在给出一个 n 让你输出一个 p 满足 2 ^ p - 1 是第 n 个梅森尼质数 ( n < 39)打表的过的,就没什么可说的了View Code 1 const int x[]={0,2,3,5,7,13,17,19,31,61,89, 2 107,127,521,607,1279,2203,2281,3217,4253,4423, 3 9689,9941,11213,...
阅读全文
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1306很想说这个题目很无语,最后还是在discuss http://acm.timus.ru/forum/thread.aspx?id=19974&upd=634679402957920104里看的这个人说的,才过的View Code 1 typedef unsigned int ll; 2 int main() 3 { 4 priority_queue<ll>pr; 5 ll a; 6 int n,i; 7 //freopen("data.txt"
阅读全文
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1613题意:给出N 个数,然后给出询问区间,并给出询问的数,问这个数是不是存在hash还是很好想的,然后如果再能想到优化,就没问题了View Code 1 typedef long long ll; 2 const int N = 100008; 3 const int mod = 100007; 4 struct node 5 { 6 int data; 7 int id; 8 }; 9 vector<node>mark[N];10 int a[N];11 int main(
阅读全文
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1671题意:给你 N 个点 和 M 条边,然后删除其中的一些边,问删除一些边后剩余的几块用并查集逆向的把要删的边加入进去,加入的时候统计。先是全部输入,然后标记要删除的边,把不需要删除的边用并查集合并,然后逆向的把要删的边加上,每加一条边时看看现在的快有几个View Code 1 typedef long long ll; 2 #define N 100001 3 int num[N]; 4 int f[N]; 5 int cnt[N]; 6 struct node 7 { 8 int .
阅读全文
摘要:题目:http://poj.org/problem?id=1088记忆化搜索,dp[r][c] = max(dp[r - 1][c] , dp[r + 1][c] , dp[r][c - 1] , dp[r][c + 1]) + 1 ( if (题目给的条件满足))View Code 1 using namespace std; 2 typedef long long ll; 3 const int N = 110; 4 int map[N][N]; 5 int dp[N][N]; 6 int n,m; 7 int dfs(int r, int c) // 四个方向深搜 8 { 9 ...
阅读全文
摘要:记九月的第一个小水题题目:http://poj.org/problem?id=3665好像是以前做过的一个比赛题目,当时没有过,后来再写也没有过。刚才看到,就又重新读了一遍题目,竟然发现,自己以前读错题目了,而且那时候总是检查程序,根本就没重新去读过题,悲剧!题目给的算法规则里第二条说要把最高分的牛的分数平均分给 除他以外的其他牛(当然,如果不能平分,那么就把多余的分数从第一头牛开始每个 + 1的分完,当然还是不能给自己加),然就是把分数按给每头牛(包括自己)错了好几次,View Code 1 #include <stdio.h> 2 #include <stdlib.h&g
阅读全文

浙公网安备 33010602011771号