1八:肿瘤面积

总时限: 
1000ms

内部存款和储蓄器限制: 
65536kB

描述
在2个长方形的灰度图片上,肿瘤是1块矩形的区域,肿瘤的边缘所在的像素点在图纸中用0表示。别的肿瘤内和肿瘤外的点都用255表示。未来必要你编写多少个主次,计算肿瘤内部的像素点的个数(不包含肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。

输入
唯有3个测试样例。第三行有1个整数n,表示星型图像的边长。其后n行每行有n个整数,取值为0或25五。整数之间用四个空格隔绝。已知n不超出一千。

输出
输出1行,该行李包裹蕴2个整数,为务求的瘤子内的像素点的个数。

样例输入
5
255 255 255 255 255
255 0 0 0 255
255 0 255 0 255
255 0 0 0 255
255 255 255 255 255

样例输出
1

提示
若果使用静态数组来代表图片数据,要求将该数组定义成全局变量。

来源
2005~200陆医术部总计概论期末考试

 1 #include<iostream>
 2 using namespace std;
 3 int a[1001][1001];
 4 int now=1;
 5 int tot=0;
 6 int hang,lie;
 7 int l_h;
 8 int l_l;
 9 int ans=0;
10 int main() 
11 {
12     int n;
13     cin>>n;
14     for(int i=1;i<=n;i++)
15     {
16         for(int j=1;j<=n;j++)
17         {
18             cin>>a[i][j];
19         }
20     }
21     for(int i=1;i<=n;i++)
22     {
23         for(int j=1;j<=n;j++)
24         {
25             if(a[i-1][j]==0&&a[i-1][j-1]==0&&a[i][j-1]==0&&i!=1&&j!=1)
26             {
27                 hang=i;
28                 lie=j;
29             }
30         }
31     }
32     for(int i=hang;i<=9999;i++)
33     {
34         for(int j=lie;j<=9999;j++)
35         {
36             if(a[i][j]!=0)
37             {
38                 l_l++;
39             }
40             else break;
41         }
42         break;
43     }
44     for(int i=hang;i<=9999;i++)
45     {
46         if(a[i][lie]!=0)
47         {
48             l_h++;
49         }
50         else break;
51     }
52     cout<<l_h*l_l;
53     return 0;
54 }

 

05:分数线划定

总时间限定: 
1000ms

内部存款和储蓄器限制: 
65536kB

描述
世界博览会志愿者的挑选工作正在 A
市如火如荼的拓展。为了挑选最合适的姿容,A市对持有报名的运动员举办了笔试,笔试分数达到面试分数线的选手能够进入面试。面试分数线依照安排录取人数的一11分之伍划定,即只要布署录取m名志愿者,则面试分数线为排行第m*一一半(向下取整)名的选手的分数,而最后进入面试的健儿为笔试成绩不低于面试分数线的具备选手。

今天就请您编写程序划定面试分数线,并出口全部进入面试的健儿的报名号和笔试成绩。

输入
先是行,多个整数n,m(伍 ≤ n ≤ 五千,三 ≤ m ≤
n),中间用八个空格隔绝,个中n 表示报名插足笔试的运动员总数,m
表示安插录取的志愿者人数。输入数据保障m*一八分之四向下取整后小于等于n。
其次行到第 n+1行,每行包罗四个整数,中间用三个空格隔离,分别是运动员的申请号k(一千 ≤ k
≤ 999玖)和该选手的笔试成绩s(1 ≤ s ≤
100)。数据保险运动员的报名号各分化。

输出
率先行,有四个整数,用1个空格隔离,第3个整数表示面试分数线;第一个整数为进入面试的健儿的莫过于人数。
从第3行开始,每行李包裹涵八个整数,中间用贰个空格隔断,分别代表进入面试的运动员的报名号和笔试战绩,依照笔试战表从高到低输出,假使成绩壹样,则按报名号由小到大的逐壹输出。

样例输入
6 3
1000 90
3239 88
2390 95
7231 84
1005 95
1001 88

样例输出
88 5
1005 95
2390 95
1000 90
1001 88
3239 88

提示
样例表达:m*150% = 3*15/10 =
四.五,向下取整后为四。保证三人进去面试的分数线为8捌,但因为88有重分,所以具有战表当先等于8八的选手都足以进去面试,故最终有六个人进入面试。

来源
NOIP2009复赛 普及组 第二题、

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cmath>
 6 using namespace std;
 7 int n,m;
 8 struct s
 9 {
10     int xh;
11     int cj;
12 }a[10001];
13 int comp(const s &a,const s &b)
14 {
15     if(a.cj>b.cj)return 1;
16     if(a.cj<b.cj)return 0;
17     if(a.xh<b.xh)return 1;
18     if(a.xh>b.xh)return 0;
19 }
20 int main()
21 {
22     cin>>n>>m;
23     for(int i=1;i<=n;i++)
24     {
25         cin>>a[i].xh;
26         cin>>a[i].cj;
27     }
28     sort(a+1,a+n+1,comp);
29     /*printf("%s",a[k].xh);
30     printf("%d",a[k].cj);*/
31     int p=(double)(floor)(m*1.5);
32     int now=1;
33     while(1)
34     {
35         if(a[p].cj==a[p+now].cj&&(p+now<=n))
36         {
37             now++;
38         }
39         else 
40         break;
41     }
42     cout<<a[p].cj<<" "<<p+now-1<<endl;
43     for(int i=1;i<=p+now-1;i++)
44     {
45         cout<<a[i].xh<<" ";
46         cout<<a[i].cj<<endl;
47     }
48     return 0;
49 }