1.图像旋转
问题描述
旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。
计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。输入格式
输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。
接下来n行每行包含m个整数,表示输入的图像。输出格式
输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。
样例输入
2 3
1 5 33 2 4样例输出
3 4
5 21 3评测用例规模与约定
1 ≤ n, m ≤ 1,000,矩阵中的数都是不超过1000的非负整数。
1 # include2 # include 3 # include 4 # include 5 # include 6 # define LL long long 7 using namespace std ; 8 9 int a[1010][1010] ;10 11 int main ()12 {13 //freopen("in.txt","r",stdin) ;14 int n , m ;15 scanf("%d%d" , &n , &m) ;16 int i , j ;17 for (i = 0 ; i < n ; i++)18 for (j = 0 ; j < m ; j++)19 scanf("%d" , &a[i][j]) ;20 for (i = m-1 ; i >= 0 ; i--)21 {22 for (j = 0 ; j < n ; j++)23 {24 printf("%d " , a[j][i]) ;25 }26 printf("\n") ;27 }28 29 30 return 0 ;31 }
2.数字排序
问题描述
给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
输入格式
输入的第一行包含一个整数n,表示给定数字的个数。
第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。输出格式
输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。
样例输入
12
5 2 3 3 1 3 4 2 5 2 3 5样例输出
3 4
2 35 31 14 1评测用例规模与约定
1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。
1 # include2 # include 3 # include 4 # include 5 # include 6 # define LL long long 7 using namespace std ; 8 9 struct shu10 {11 int num ;12 int id ;13 }a[1010];14 15 bool cmp(shu x , shu y)16 {17 if (x.num == y.num)18 return x.id < y.id ;19 else20 return x.num > y.num ;21 }22 23 int main ()24 {25 //freopen("in.txt","r",stdin) ;26 int n ;27 scanf("%d" , &n) ;28 int i , x ;29 for (i = 1 ; i <= 1005 ; i++)30 {31 a[i].id = i ;32 a[i].num = 0 ;33 }34 35 while(n--)36 {37 scanf("%d" , &x) ;38 a[x].num++ ;39 }40 sort(a+1 , a+1005, cmp) ;41 for (i = 1 ; i <= 1005 ; i++)42 {43 if (a[i].num == 0)44 break ;45 printf("%d %d\n" , a[i].id , a[i].num) ;46 }47 48 49 return 0 ;50 }
3.节日
问题描述
有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。
现在,给你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2050),希望你输出从公元y1年到公元y2年间的每年的a月的第b个星期c的日期。 提示:关于闰年的规则:年份是400的整数倍时是闰年,否则年份是4的倍数并且不是100的倍数时是闰年,其他年份都不是闰年。例如1900年就不是闰年,而2000年是闰年。 为了方便你推算,已知1850年1月1日是星期二。输入格式
输入包含恰好一行,有五个整数a, b, c, y1, y2。其中c=1, 2, ……, 6, 7分别表示星期一、二、……、六、日。
输出格式
对于y1和y2之间的每一个年份,包括y1和y2,按照年份从小到大的顺序输出一行。
如果该年的a月第b个星期c确实存在,则以"yyyy/mm/dd"的格式输出,即输出四位数的年份,两位数的月份,两位数的日期,中间用斜杠“/”分隔,位数不足时前补零。 如果该年的a月第b个星期c并不存在,则输出"none"(不包含双引号)。样例输入
5 2 7 2014 2015
样例输出
2014/05/11
2015/05/10评测用例规模与约定
所有评测用例都满足:1 ≤ a ≤ 12,1 ≤ b ≤ 5,1 ≤ c ≤ 7,1850 ≤ y1, y2 ≤ 2050。
4.网络延时
省略..
5.
最小花费
问题描述
C国共有n个城市。有n-1条双向道路,每条道路连接两个城市,任意两个城市之间能互相到达。小R来到C国旅行,他共规划了m条旅行的路线,第i条旅行路线的起点是si,终点是ti。在旅行过程中,小R每行走一单位长度的路需要吃一单位的食物。C国的食物只能在各个城市中买到,而且不同城市的食物价格可能不同。
然而,小R不希望在旅行中为了购买较低价的粮食而绕远路,因此他总会选择最近的路走。现在,请你计算小R规划的每条旅行路线的最小花费是多少。输入格式
第一行包含2个整数n和m。
第二行包含n个整数。第i个整数wi表示城市i的食物价格。 接下来n-1行,每行包括3个整数u, v, e,表示城市u和城市v之间有一条长为e的双向道路。 接下来m行,每行包含2个整数si和ti,分别表示一条旅行路线的起点和终点。输出格式
输出m行,分别代表每一条旅行方案的最小花费。
样例输入
6 4
1 7 3 2 5 61 2 41 3 52 4 13 5 23 6 12 54 66 45 6样例输出
35
162613样例说明
对于第一条路线,小R会经过2->1->3->5。其中在城市2处以7的价格购买4单位粮食,到城市1时全部吃完,并用1的价格购买7单位粮食,然后到达终点。
评测用例规模与约定
前10%的评测用例满足:n, m ≤ 20, wi ≤ 20;
前30%的评测用例满足:n, m ≤ 200; 另有40%的评测用例满足:一个城市至多与其它两个城市相连。 所有评测用例都满足:1 ≤ n, m ≤ 105,1 ≤ wi ≤ 106,1 ≤ e ≤ 10000。