博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
贴几个模拟题(zzuli校赛)
阅读量:6494 次
发布时间:2019-06-24

本文共 7292 字,大约阅读时间需要 24 分钟。

make pair

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 59  Solved: 43

Description

pair<T,T>是c++标准模板库中一种十分有用的模板类型,它是一个二元组。我们可以用它来表示一个二维坐标点,人的身高体重等等。make_pair()函数可以方便地构造一个pair。

现在有一个长度为n的整数数组a1~an(可以存在相同的元素),将每两个元素(包括自身)make_pair(),一定能得到n2个pair。例如,[1,2,3]make_pair()后,将得到{[1,1],[1,2],[1,3], [2,1],[2,2],[2,3], [3,1],[3,2],[3,3]}。

问题是这样的,在构造出了n2个pair后,升序排序(先按第一维排序,若第一维相等,再按第二维排序),你能找到排序后的第k个元素吗?

 

Input

多组数据。

第一行,2个整数n和k (1<=n<=10000,1<=k<=n^2)。

第二行,n个整数,即原数组a1~an(1<=ai<=1000000000)。

 

Output

对于每组数据,输出两个整数,排序后的第k个pair。

 

Sample Input

2 42 13 23 1 5

Sample Output

2 21 3

HINT

 

Source

规律题, 热个身。

#include 
#include
using namespace std; int num[10001]; int main(){ int n, k; while(~scanf("%d%d", &n, &k)){ for(int i = 0; i < n; i++) scanf("%d", &num[i]); sort(num, num+n); int a = k/n; if(a != 0) a -= 1; int b = k%n; if(b == 0) b = n-1; else b -= 1; printf("%d %d\n", num[a], num[b]); } return 0; }
View Code

 

sort

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 144  Solved: 23

Description

想必大家对排序已经很熟悉了,但是spy好像对排序不太熟悉,有一天,他看到这样一个关于排序的题目:

对于 k 个用空格分隔开的整数,依次为 n1, n2 … nk。请将所有下标不能被 3 但可以被 2 整除的数在这些数字原有的位置上进行升序排列,此外,将余下下标能被 3 整除的数在这些数字原有的位置上进行降序排列。

spy想了半天不知道怎么排序,你可以帮助他么?

 

Input

多组数据,每组数据一行,为k个小于1000的正整数,依次为 n1, n2 … nk。(1 <= k <= 100000)

 

Output

对于每组数据,输出排序后的结果。

 

Sample Input

1 3 4 2 10 6 8

Sample Output

1 2 6 3 10 4 8

HINT

 

Source

看题有点懵B,其实也没什么,  加两个辅助数组排一下序, 就是输出时判断一下

#include 
#include
using namespace std;const int N = 100001;int num[N], a[N], b[N];bool cmp(int a, int b){ return a > b;}int main(){ int k = 0, c = 0, d = 0; while(scanf("%d", &num[k++])!=EOF){ //注意输入格式, 很巧妙。 char e = getchar(); if(e == ' ') continue; else{ for(int i = 1; i <= k; i++){ if(i%2==0 && i%3!=0) a[c++] = num[i-1]; if(i%3 == 0) b[d++] = num[i-1]; } } sort(a, a+c); sort(b, b+d, cmp); c = 0; d = 0; for(int i = 1; i <= k; i++){ if(i != 1) printf(" "); if(i%2 == 0 && i%3 != 0) printf("%d", a[c++]); else if(i%3 == 0) printf("%d", b[d++]); else printf("%d", num[i-1]); } printf("\n"); k = 0; c = 0; d = 0; } return 0;}
View Code

 

easy problem

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 97  Solved: 47

Description

给你一个数字N,N的范围是1~1000000,求一个最小的正整数M,这个数字M的各个位的数字加上它本身之和恰好为N。当然,如果没有解,输出0。

 

Input

输入数据由多组数据组成,每行由一个数字N组成(1<=N<=1000000)。

 

Output

对于每组数据,输出仅一行包含一个整数M。如果对于每个N,存在最小的M,则输出这个最小值。如果不存在这个最小的M,则输出0。

 

Sample Input

216 121 2005

Sample Output

19801979

HINT

 

Source

其实就一个条件就是加上各位数字之和, 怪自己太水。

 

加加加!(油)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 72  Solved: 42

Description

实验室的小D同学又开始玩游戏了,这次他的游戏貌似很高级的样子。首先他在一张纸上写下了一个数n,然后他在两个无差别的球上写上两个数分别是a和b,他把两个球放在一个黑色的袋子中,然后他会从袋子中随机取出来一个球,并将这个n改变成n和这个球上标记的数的和。

是不是很简单!是不是很有意思!是不是很神奇!

(不是!)

好吧,这不是问题的所在,问题的所在是小d这个过程中n都有可能是些什么值。

 

Input

输入的第一行包含一个K,代表输入样例组数。

每组样例只有一行,包含四个整数"n a b m",n,a,b的含义为题目描述中的含义,m代表小D随机从袋子中取球的次数。(0 <= n < 1000000,0 <= a < 100000,0 <= b < 100000, 0 <=m < 10)

 

Output

把所有可能出现的n按照升序输出(不允许重复)。注意只有两个连续的数中间才允许空格,结尾不允许有空格。

 

Sample Input

31 1 1 14 2 3 25 100 102 1

Sample Output

1 24 6 7 8 9 105 105 107

HINT

 

Source

这个好, 两个球, 取得次数确定, 两个球被取次数一定。 

#include 
#include
using namespace std;int num[2050];int main(){ int T; scanf("%d", &T); while(T--){ int a, b, m; scanf("%d%d%d%d", &num[0], &a, &b, &m); int n = num[0]; int j = 1; for(int k = m; k >= 0; k--) for(int i = 0; i <= k; i++) num[j++]=num[0]+i*a+(k-i)*b; sort(num, num+j); printf("%d", num[0]); int temp = num[0]; for(int i = 1; i < j; i++) if(num[i] != temp){ printf(" %d", num[i]); temp = num[i]; } printf("\n"); } return 0;}
View Code

 

再贴一个吧。 暴力过的, 参考学姐代码。

矩形

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 95  Solved: 26

Description

小S和小D两个小雪参,在玩一个关于矩形的游戏以帮助他们学会怎么计算矩形的面积然后完成作业去打游戏(两个小雪参一起打游戏你怕不怕!)。他们约定每个人给出两个坐标,分别是两个矩形的左下角和右上角的坐标,他们的游戏规则很简单,就是看谁先找出来这两个矩形的覆盖的总面积大小。你的问题就是帮助他们给出正确答案。

 

Input

输入的第一行为一个整数T,代表样例的组数。

每组样例包含4个坐标(x,y),( -100000000<= x,y <= 100000000 )前两个是小S给出的矩形左下角和右上角的坐标,后面两个是小D给出来的坐标。

 

Output

输出两个矩形覆盖的总面积大小。

 

Sample Input

3-2 -2 2 2 -2 -2 2 20 0 1 1 0 0 2 2-2 -2 2 2 1 -3 3 -1

Sample Output

16419

HINT

 

Source

代码如下 出自纯真学姐: 

#include
#include
#include
struct node{ long long x,y;}a[5],b[5];int main(){ int t,i,j; scanf("%d",&t); while(t--) { scanf("%lld%lld%lld%lld%lld%lld%lld%lld",&a[0].x,&a[0].y,&a[1].x,&a[1].y,&b[0].x,&b[0].y,&b[1].x,&b[1].y); //a[2].x=a[0].x; a[2].y=a[1].y; //b[2].x=b[0].x; b[2].y=b[1].y; //a[3].x=a[1].x; a[3].y=a[0].y; //b[3].x=b[1].x; b[3].y=b[0].y; long long ax=abs(a[1].x-a[0].x); long long ay=abs(a[1].y-a[0].y); long long as=ax*ay; long long bx=abs(b[1].x-b[0].x); long long by=abs(b[1].y-b[0].y); long long bs=bx*by; long long cx=0,cy=0; if(a[0].x<=b[0].x&&a[1].x>=b[1].x) { cx=bx; if(a[0].y>=b[0].y&&a[1].y<=b[1].y) cy=ay; if(a[0].y<=b[0].y&&a[1].y>=b[0].y&&b[1].y>=a[1].y) cy=a[1].y-b[0].y; if(a[0].y>=b[0].y&&a[0].y<=b[1].y&&a[1].y>=b[1].y) cy=b[1].y-a[0].y; if(a[0].y<=b[0].y&&a[1].y>=b[1].y) cy=by; } else if(a[0].x<=b[0].x&&b[0].x<=a[1].x&&a[1].x<=b[1].x) { cx=a[1].x-b[0].x; if(a[0].y>=b[0].y&&a[1].y<=b[1].y) cy=ay; if(a[0].y<=b[0].y&&a[1].y>=b[0].y&&b[1].y>=a[1].y) cy=a[1].y-b[0].y; if(a[0].y>=b[0].y&&a[0].y<=b[1].y&&a[1].y>=b[1].y) cy=b[1].y-a[0].y; if(a[0].y<=b[0].y&&a[1].y>=b[1].y) cy=by; } else if(b[0].x<=a[0].x&&a[0].x<=b[1].x&&b[1].x<=a[1].x) { cx=b[1].x-a[0].x; if(a[0].y>=b[0].y&&a[1].y<=b[1].y) cy=ay; if(a[0].y<=b[0].y&&a[1].y>=b[0].y&&b[1].y>=a[1].y) cy=a[1].y-b[0].y; if(a[0].y>=b[0].y&&a[0].y<=b[1].y&&a[1].y>=b[1].y) cy=b[1].y-a[0].y; if(a[0].y<=b[0].y&&a[1].y>=b[1].y) cy=by; } else if(a[0].x>=b[0].x&&a[1].x<=b[1].x) { cx=ax; if(a[0].y>=b[0].y&&a[1].y<=b[1].y) cy=ay; if(a[0].y<=b[0].y&&a[1].y>=b[0].y&&b[1].y>=a[1].y) cy=a[1].y-b[0].y; if(a[0].y>=b[0].y&&a[0].y<=b[1].y&&a[1].y>=b[1].y) cy=b[1].y-a[0].y; if(a[0].y<=b[0].y&&a[1].y>=b[1].y) cy=by; } long long cs=cx*cy; long long ans=as+bs-cs; printf("%lld\n",ans); } return 0;}
View Code

 

 

 

转载于:https://www.cnblogs.com/soTired/p/5031270.html

你可能感兴趣的文章
在团队项目遇到的问题及解决方法。
查看>>
springcloud demo---config-client
查看>>
Django设置联合唯一约束 -- migrate时报错处理
查看>>
Java LeetCode 1.Two Sum
查看>>
前端面试题:css相关面试题
查看>>
shell命令的高级使用之---选择性copy
查看>>
最长回文子序列-----动态规划
查看>>
Vue国际化实现
查看>>
设计模式:单例模式
查看>>
FLASH位宽为8、16、32时,CPU与外设之间地址线的连接方法
查看>>
双网卡一般情况不能有两个网关 (转)
查看>>
xshell 远程连接Linux
查看>>
【IOS】IOS8 TabBarItem设置自定义图片问题
查看>>
Linux计划任务及压缩归档(week2_day1)--技术流ken
查看>>
ccf算法模板
查看>>
实践案例 | 数据可视化报表应用
查看>>
微信小程序登录 该死的官方文档TypeError: the JSON object must be str, not 'bytes'
查看>>
VMware 虚拟机克隆 CentOS 6.5 之后,网络配置问题的解决方案
查看>>
Python ( 1 ) ----- 简介
查看>>
[linux基础学习]run level
查看>>