码迷,mamicode.com
首页 > 其他好文 > 详细

【正常向】CODEVS上分黄金

时间:2017-03-19 10:58:11      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:images   div   alt   循环   font   http   play   img   今天   

白银上分黄金失败=。=

在之前有很认真的写了一波排序,所以排序并不是很怂,还是那个理,现阶段学习的都是比较简单的排序,都是所谓的冒泡排序啊,桶排序这类,至于插排和选择排序,再往后又是什么快拍就很尬了。

说一下今天A的题

1075  明明的随机数

1076  排序

1212  最大公约数

1430  素数判定

1978  斐波那契数列

1842  递归第一次

3038  3n+1问题

 

进制转换和模拟还是很怂,二维数组不是很好,模拟题很方,进制转换就更没什么思路了,至于递推递归,记得并没有讲过,只是自己在看,递推递归都跟for循环挺像的,今天很多题尽量再用cin、cout、子程序、递归思想来写。

 

然而还是要把明明的随机数拿出来说一下x。

技术分享
075 明明的随机数  2006年NOIP全国联赛普及组
 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 题解
题目描述 Description
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

输入描述 Input Description
有2行,第1行为1个正整数,表示所生成的随机数的N个数:

 

第2行有N个用空格隔开的正整数,为所产生的随机数

 

输出描述 Output Description
第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小
到大排好序的不相同的随机数。
样例输入 Sample Input
10

20 40 32 67 40 20 89 300 400 15

样例输出 Sample Output
8

15 20 32 40 67 89 300 400
1075题目

 

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<cstring>
 4 #include<iostream>
 5 using namespace std ;
 6 int sz[3000];
 7 int tp[3000];
 8 int main ()
 9 {
10     int a , sum = 0; 
11     cin>>a ;
12     for(int i = 1 ; i <= a  ; ++i)
13     {
14         cin>>sz[i];
15     }
16     for(int k = 1 ; k <= a ; ++ k )
17     {
18         tp[sz[k]] = sz[k] ;
19     }
20     for(int z = 1; z <= 3000 ; ++z )
21     {
22         if(tp[z]!=0)
23             sum ++ ;
24     }
25         
26     cout<<sum<<endl;
27     for(int j = 1 ; j <= 3000 ; ++ j)
28     {
29         if(tp[j]!=0)
30             printf("%d ",tp[j]);
31     }
32     return 0 ;
33 }

 

显而易见,桶排序思想,tp这个数组中的第【sz的第【k】项】就是其sz【k】的值,比如sz第1项为79,那么tp第79项就为1。之后要要完成去重的任务,所以将其判断一波if(tp[z] != 0)这个数组tp只要有值,不论为几,总数就加一,因为在tp已经把去重的任务完成了,以及循环的边界条件是瞎写的,只是觉得需要尽可能的大,之后再输出就行了。

 

 

补充一下问号表达式

问号表达式就是另一种if,先给一个条件,然后加一个问号,如果为条件为真,成立,那么对应的行为为问号后的语句,冒号,不然就是冒号后面的语句。

举个例子

辗转相除

1 int gcd(int n ,int m )
2 {
3     return n%m==0?m:gcd(m,n%m);
4 }

 

其意思就是n于m的取余如果为真,那么return m ,反之return gcd(m,n%m),把n换成m,m换成n模m,辗转相除的思想就体现出来了。

将其被除数转换成为除数,除数转换为余数,如果整除了,那么其最小公约数就出来了,就是m值。这里还是递归的套路,自己调用自己的程序,自己调自己,(ps这里多谢MZH和LY= =)所谓搜索也是这个套路。

 以及有了这些递归和子程序的基础,可以走DP了。hhhhhhhhhhhhhhhhhh

今天很想写一下树,但是太皮了,二叉树最大宽度高度的,什么序遍历的,汉诺塔游戏的还是觉得需要过一阵,以及字符串还是得整。

 

 

 

 (就当今天18号好了)

还有210天初赛, 还有238天复赛。

那是我愿意付诸一生的人,现在却没法拥有。

 

【正常向】CODEVS上分黄金

标签:images   div   alt   循环   font   http   play   img   今天   

原文地址:http://www.cnblogs.com/wahahaljy/p/6577501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!