上一页 1 ··· 9 10 11 12 13 14 下一页
摘要: n个人报数找到只有一个报过且最小的数。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define INF 0x7fffffff 8 #define LEN 1000100 9 using namespace std;10 11 struct P{12 char name[50];13 int num;14 }man[LEN];15 16 bool cmp(struct P a, struct P b){17 return a.num<b.num;18 }1... 阅读全文
posted @ 2013-11-24 15:50 张小豪 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 接下来就是关于数位DP的练习,上来不看别人的解题报告,我选了一道比较简单的题。此题稍微转化一下比上一题不要62还要简单。这道题需要我们统计数字中含有49的个数,那么我们可以统计不含49的数再减一下就可以了。这样一来就和上一道题几乎一样了。状态dp[i][j]表示第i为第一位为j所含符合要求的数字数(注意这里是不含49的数)。程序中预处理出dp数组,然后在用solve计算即可。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define ll long long 7 #define LEN 100 8 us... 阅读全文
posted @ 2013-11-23 18:35 张小豪 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 这道题应该是最简单的数位dp了,看了09年的刘聪的国家集训队论文,入门了一下数位dp。解决这道题还是花了我好长的一段时间。这里就先讲一下我是如何用数位dp解这道题的,感觉后面还是要写一篇数位dp的总结。首先是状态的确定,数位dp的基本状态往往是dp[i, ...]i表示枚举到的位数,后面是需要的状态。对于这道题,我列举了一个状态就是dp[i][j]表示枚举到第i位第一个数字是j所包含的合法数字数。程序结构:初始化的时候把dp数组先预处理出来,后面写个solve(x)表示当前数前面的合法数个数。那ans = solve(b+1)-solve(a)。关键在于处理solve(x)的计算。首先是枚举每 阅读全文
posted @ 2013-11-22 23:43 张小豪 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 这道题折腾了好长时间,必须写一下。大致题意:主要提议是要在一个数组种找一个数列满足这个数列相邻两个数之间一定有约束即(gcd>1)。思路:一看就是dp的题目,数据1e5显然不能暴力。所以类似于最长上升子序列的思想,我用了一个数组表示当前约束为prime[i]最大连续长度。接下来就好做了dp[i] = max(tag[k])k为num[i]所有约数。每次状态转移完更新tag数组就是将他所有的约束都更新为当前最大值。最后扫描一边dp数组最大值即为答案。注意所有的约数必须都为素数,我一开始就错在了这里,然后就是编程上注意,我好tle了一次。代码如下: 1 #include 2 #include 阅读全文
posted @ 2013-11-20 23:09 张小豪 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 也是时候写一篇博客反思总结一下,顺便给自己立一个flag,不管有没有人看至少可以一年之后自己回过来看能否按计划进行。首先是acm感想,然后是对于这次两场现场赛的总结,主要还是反思吧。回想起大一暑假开始接触acm,那时候根本不知道acm是一样什么东西,以为只是c语言课程的进阶版。夏季学期的选拔赛我并没有通过,但是抱着初生牛犊不怕虎的热情从李青老师那了解了暑假集训的安排,义无反顾的走进了这个神奇的世界。刚开始一个暑假的集训几乎就是云里雾里由于基础太差,什么也听不懂。只记得当初只是想要坚持下来,经常连水题都做不出来。唯一的乐趣也就是和周尼玛比一比水做的题多了,那时候感觉boss和五子棋还有小贤好强啊 阅读全文
posted @ 2013-11-20 22:04 张小豪 阅读(479) 评论(0) 推荐(1) 编辑
摘要: Problem A Good Number找出数组中包含所有小于等于k的数字的数。水题代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 int n, k, vis[11];11 12 bool judge(long long num)13 {14 memset(vis, 0, sizeof vis);15 while(num){16 vis[num%10] = 1;17 num/=... 阅读全文
posted @ 2013-11-20 01:59 张小豪 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 构思上还是比较简单,我们可以递归的思考问题。每一个字符串都包含三部分根节点str[0]左子树str[1]-str[k]与右子树str[k+1]-str[n-1]根据乘法原理整棵树的方案数=左子树方案数*右子树方案数。这样一分析我们可以看到了这是一个区间上动态规划的问题。剩下来的就简单了,先套一下模版三层循环,再把式子列上去就ok了。 1 #include 2 #include 3 #include 4 #include 5 #define ll long long 6 #define MOD 1000000000 7 #define LEN 310 8 using namespace ... 阅读全文
posted @ 2013-11-08 09:07 张小豪 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 依然是liurujia计数练习题。依然是自己想没想出来,在MOD是素数的情况下除以x即为乘x的逆。这个真心以前没听过,用了这个方法后处理就变得十分巧妙。整个程序步骤还是很清晰的,先上来算阶乘与逆(求数的逆还是有点没理解透,需要后续章节继续学习)。然后读入建图只能用邻接表了,注意加上最开始的那个根节点就行了。然后就是搜索按照书上的公式计算就行了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define LEN 40100 8 #define MOD 1000000007 9 #d... 阅读全文
posted @ 2013-11-08 01:05 张小豪 阅读(437) 评论(0) 推荐(0) 编辑
摘要: uva 11375 高精度加递推主要是高精度加递推(主要思想还是参考liurujia书上)自己想了半天没有想出来。就不浪费时间了,理解后果断直接上模版。还犯了一个小错误wa一次0.0 1 // 2 // BigNum.cpp 3 // By Zhang xiaohao 4 // 5 // 6 #include 7 #include 8 #include 9 #define maxn 1010 10 using namespace std; 11 12 struct BigNum{ 13 char str[maxn]; //数字反着存方便运算 14 ... 阅读全文
posted @ 2013-11-06 11:04 张小豪 阅读(232) 评论(0) 推荐(0) 编辑
摘要: uva 11538 (排列组合)主要是推公式nP2 n为有多少个点可以选放两个皇后,行和列的公是显而易见分别为n*m*(m-1) and m*n*(n-1)主要是对角线的公式难出来。先分析一个4*7的棋盘图上蓝色的均为有m个格子可以选对于这部分可以推出公是(n-m+1)*m*(m-1)对于彩色的格子则可以看出他是从2-(n-1)的2*∑i*(i-1)推出公式m*(m-1)*(2*m-4)/3然后就是编程求解了,代码如下: 1 #include 2 #include 3 #include 4 #define ll long long 5 using namespace std; 6 7 ... 阅读全文
posted @ 2013-11-04 02:06 张小豪 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 这道题一开始想了好一会以为是DP,后来邝神一点播立马就知道怎么做了。当有一个点在边缘的时候两次其余为四次。前一种情况只需要选两次那个点就行了,其他情况随便你怎么枚举都是4次。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 int n, m, map[100][100]; 9 10 int main()11 {12 // freopen("in.txt", "r", stdin);13 14 15 while(scanf(&quo 阅读全文
posted @ 2013-11-02 18:08 张小豪 阅读(221) 评论(0) 推荐(0) 编辑
摘要: Uncle Johny题目链接:http://www.codechef.com/NOV13/problems/JOHNY水题。排序即可代码如下: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 typedef struct{ 8 int pos, val; 9 }aa;10 11 aa a[1010];12 13 bool cmp(aa x,aa y)14 {15 return x.val 2 #include 3 #include 4 #define MOD 10000... 阅读全文
posted @ 2013-11-01 23:55 张小豪 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 水题。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int n, cnt = 1; 9 char str[1000];10 while(scanf("%d", &n)!=EOF && n)11 {12 int max = 0;13 for(int i=0; imax)max =sum;21 }22 printf("Case %d: %d\n", cnt++, max);23 ... 阅读全文
posted @ 2013-10-29 01:11 张小豪 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://www.codechef.com/INSCRP13/problems/INSCTS4明天早上还有课,所以先刷两道吧。写完解题报告就睡觉!这题是简单广度优先搜索,主要是如何建图,把数字在哪一行看作是边,数字和行看作是点,这么一分析立马就能AC了。首先第一步是建图,我用了两个邻接表(一个也可以)个人认为两个结构清晰一些num对应数字在哪一行,row对应行上有哪些数字。剩下的就是简单的对于每次查询从源点(查询数字)开始BFS,搜索步数即为答案。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6... 阅读全文
posted @ 2013-10-28 00:36 张小豪 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://www.codechef.com/INSCRP13/problems/INSCTS3简单题就不多说了,就是标记单个字母次数然后按奇数偶数顺序输出。代码如下: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 char str[1000100]; 7 8 int main() 9 {10 // freopen("in.txt", "r", stdin);11 12 int n, flag[30];13 scanf("%d", &n);1 阅读全文
posted @ 2013-10-28 00:28 张小豪 阅读(195) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 下一页