1.NOIP2006 明明的随机数
简单来说这道题就是去重然后排序输出
代码如下
#include using namespace std; int main() { int n,m,a[10086]; scanf("%d" , &n); for(int i = 0; i < n ;++ i) scanf("%d" ,&a[i]); sort( a, a+n);//快排 m=n; for(int i = 0; i < n ;++ i)//此循环为打标记与去重 { if(a[i]==a[i+1])//如果有重复 { a[i] = 1;//则将重复的打上标记 m --;//因为有重复,所以要在原来的基础上减1 } } printf("%d\n" ,m); for(int i = 0 ; i < n;++ i) { if(a[i] != 1) printf("%d " ,a[i]);//将没有打上标记的输出 } return 0; }
2.NOIP2005 校门外的树
这道题体现的打标记思想就非常明显
代码如下
#include using namespace std; int main() { int l,m,a[10000+10],f,n,num=0; memset(a ,0 ,sizeof(a));//初始化数组所有元素的值为0 scanf("%d%d",&l ,&m ); for(int i = 0; i < m ;++ i) { scanf("%d%d", &f, &n);//f ,n 为砍掉的树的区间 for(int j = f;j