9.6noip模拟试题
题目名称 |
盘子序列 |
四轮车 |
点名 |
提交文件 |
disk.pas/c/cpp |
car.pas/c/cpp |
rollcall.pas/c/cpp |
输入文件 |
disk.in |
car.in |
rollcall.in |
输出文件 |
disk.out |
car.out |
rollcall.out |
时间限制 |
1s |
1s |
1s |
空间限制 |
128M |
128M |
128M |
评测方式 |
传统 |
传统 |
传统 |
盘子序列
【题目描述】
有 n 个盘子。盘子被生产出来后,被按照某种顺序摞在一起。初始盘堆中如果一
个盘子比所有它上面的盘子都大,那么它是安全的,否则它是危险的。称初始盘堆为
A,另外有一个开始为空的盘堆 B。为了掩盖失误,生产商会对盘子序列做一些“处
理”,每次进行以下操作中的一个:(1)将 A 最上面的盘子放到 B 最上面;(2)将 B 最上
面的盘子给你。在得到所有 n 个盘子之后,你需要判断初始盘堆里是否有危险的盘子。
【输入格式】
输入文件包含多组数据(不超过 10 组)
每组数据的第一行为一个整数 n
接下来 n 个整数,第 i 个整数表示你收到的第 i 个盘子的大小
【输出格式】
对于每组数据,如果存在危险的盘子,输出”J”,否则输出”Y”
【样例输入】
3
2 1 3
3
3 1 2
【样例输出】
Y
J
【数据范围】
20%的数据保证 n<=8
80%的数据保证 n<=1,000
100%的数据保证 1<=n<=100,000,0<盘子大小<1,000,000,000 且互不相等
- /*
- 读懂题目就好了 栈模拟一下
- 开始打错文件了!!
- */
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #define maxn 1000010
- using namespace std;
- int n,a[maxn],b[maxn],c[maxn],falg,top;
- int main()
- {
- freopen("disk.in","r",stdin);
- freopen("disk.out","w",stdout);
- while(scanf("%d",&n)!=EOF){
- falg=top=;
- for(int i=;i<=n;i++)
- scanf("%d",&a[i]);
- for(int i=;i<=n;i++)
- c[i]=a[i];
- sort(a+,a++n);
- int p1,p2=;
- for(p1=;p1<=n;p1++){
- if(a[p1]==c[p2]){
- p2++;continue;
- }
- if(a[p1]<c[p2])b[++top]=p1;
- else{
- for(;top>;){
- if(b[top]==c[p2]){
- top--;p2++;
- }
- else break;
- }
- if(a[p1]!=c[p2])b[++top]=a[p1];
- else p2++;
- }
- }
- while(top){
- if(b[top]!=c[p2]){
- falg=;break;
- }
- else top--;p2++;
- }
- if(falg)printf("J\n");
- else printf("Y\n");
- }
- return ;
- }
四轮车
【题目描述】
在地图上散落着 n 个车轮,小 J 想用它们造一辆车。要求如下:
- 一辆车需要四个车轮,且四个车轮构成一个正方形
- 车轮不能移动你需要计算有多少种造车的方案(两个方案不同当且仅当所用车轮不全相同,坐
标相同的两个车轮视为不同车轮)。
【输入格式】
第一行一个整数 n
接下来 n 行,每行两个整数 x y,表示在(x,y)处有一个车轮
【输出格式】
一行一个整数,表示方案数
【样例输入】
9
0 0
1 0
2 0
0 2
1 2
2 2
0 1
1 1
2 1
【样例输出】
6
【数据范围】
30%的数据保证 n ≤ 30
100%的数据保证 1 ≤ n ≤ 1000; |x|, |y| < 20000
- /*
- 枚举对角线上的点
- 算出剩下的两个 然后看有没有
- 没有用hash 直接二分找 也挺快的
- */
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #define maxn 10010
- using namespace std;
- int n,ans[maxn],x1,x2,x3,x4,y1,y2,y3,y4,xx[maxn],yy[maxn],p1,p2;
- struct node{
- int x,y;
- }P[maxn];
- int cmp(const node &a,const node &b){
- return a.x<b.x;
- }
- int Abs(int a){
- return a<?-a:a;
- }
- void Add(){
- ans[]++;
- for(int i=;i<=ans[];i++)
- if(ans[i]>){
- ans[i]%=;
- ans[i+]++;
- }
- if(ans[ans[]+])ans[]++;
- }
- void Cal(int i,int j){
- x1=xx[i];y1=yy[i];x2=xx[j];y2=yy[j];
- int a=Abs(y1-y2),b=Abs(x1-x2);
- int c=Abs(a-b);
- if(c%)x3=x4=y3=y4=;
- else{
- c>>=;
- if(a<b){
- x3=x1+c;y3=y2+c;
- x4=x2-c;y4=y1-c;
- }
- else{
- x3=x1-c;y3=y2-c;
- x4=x2+c;y4=y1+c;
- }
- }
- }
- bool Judge(){
- if(!x3&&!x4&&!y3&&!y4)return ;
- int falg=,flag=;
- p1=lower_bound(xx+,xx++n,x3)-xx;
- p2=upper_bound(xx+,xx++n,x3)-xx;
- for(int i=p1;i<p2;i++){
- if(xx[i]!=x3)return ;
- if(yy[i]==y3){
- falg=;break;
- }
- }
- p1=lower_bound(xx+,xx++n,x4)-xx;
- p2=upper_bound(xx+,xx++n,x4)-xx;
- for(int i=p1;i<p2;i++){
- if(xx[i]!=x4)return ;
- if(yy[i]==y4){
- flag=;break;
- }
- }
- return falg&&flag;
- }
- int main()
- {
- freopen("car.in","r",stdin);
- freopen("car.out","w",stdout);
- scanf("%d",&n);ans[]=;
- for(int i=;i<=n;i++)
- scanf("%d%d",&P[i].x,&P[i].y);
- sort(P+,P++n,cmp);
- for(int i=;i<=n;i++){
- xx[i]=P[i].x;
- yy[i]=P[i].y;
- }
- for(int i=;i<=n;i++)
- for(int j=i+;j<=n;j++){
- if(yy[i]>=yy[j])continue;
- Cal(i,j);
- if(Judge())Add();
- }
- for(int i=ans[];i>=;i--)
- printf("%d",ans[i]);
- return ;
- }
点名
【题目描述】
在 J 班的体育课上,同学们常常会迟到几分钟,但体育老师的点名却一直很准时。
老师只关心同学的身高,他会依次询问当前最高的身高,次高的身高,第三高的身高,
等等。在询问的过程中,会不时地有人插进队伍里。你需要回答老师每次的询问。
【输入格式】
第一行两个整数 n m,表示先后有 n 个人进队,老师询问了 m 次
第二行 n 个整数,第 i 个数 Ai 表示第 i 个进入队伍的同学的身高为 Ai
第三行 m 个整数,第 j 个数 Bj 表示老师在第 Bj 个同学进入队伍后有一次询问
【输出格式】
m 行,每行一个整数,依次表示老师每次询问的答案。数据保证合法
【样例输入】
7 4
9 7 2 8 14 1 8
1 2 6 6
【样例输出】
9
9
7
8
【样例解释】
(9){No.1 = 9}; (9 7){No.2 = 9}; (9 7 2 8 14 1){No.3 = 7; No.4 = 8}
【数据范围】
40%的数据保证 n ≤ 1000
100%的数据保证 1 ≤ m ≤ n ≤ 30000; 0 ≤ Ai < 232
暴力set 70分
:
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<set>
- #define maxn 30010
- using namespace std;
- long long n,m,x,c[maxn],a[maxn],cnt;
- multiset<long long>s;
- multiset<long long>::iterator p;
- int main()
- {
- freopen("rollcall.in","r",stdin);
- freopen("rollcall.out","w",stdout);
- cin>>n>>m;
- for(long long i=;i<=n;i++)
- cin>>a[i];
- for(long long i=;i<=m;i++){
- cin>>x;c[x]++;
- }
- s.clear();
- for(long long i=;i<=n;i++){
- s.insert(a[i]);
- while(c[i]){
- c[i]--; p=s.begin();
- for(long long j=;j<=cnt;j++)p++;
- cout<<*p<<endl;cnt++;
- }
- }
- return ;
- }
主席树:
- /*正解好像是搞了两个堆 没仔细看*/
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #define ll long long
- #define maxn 30010
- #define maxm 1000010
- using namespace std;
- ll n,m,cnt,num,a[maxn],root[maxn],order[maxn];
- struct node{
- ll lc,rc,sum;
- }t[maxm*];
- ll init(){
- ll x=,f=;char s=getchar();
- while(s<''||s>''){if(s=='-')f=-;s=getchar();}
- while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
- return x*f;
- }
- ll Build(ll S,ll L,ll R){
- ll k=++cnt;t[k].sum=S;
- t[k].lc=L;t[k].rc=R;
- return k;
- }
- void Insert(ll &root,ll pre,ll pos,ll l,ll r){
- root=Build(t[pre].sum+,t[pre].lc,t[pre].rc);
- if(l==r)return;
- ll mid=l+r>>;
- if(pos<=mid)Insert(t[root].lc,t[pre].lc,pos,l,mid);
- else Insert(t[root].rc,t[pre].rc,pos,mid+,r);
- }
- ll Query(ll L,ll R,ll pos,ll l,ll r){
- if(l==r)return l;
- ll sum=t[t[R].lc].sum-t[t[L].lc].sum;
- ll mid=l+r>>;
- if(sum>=pos)return Query(t[L].lc,t[R].lc,pos,l,mid);
- else return Query(t[L].rc,t[R].rc,pos-sum,mid+,r);
- }
- int main()
- {
- freopen("rollcall.in","r",stdin);
- freopen("rollcall.out","w",stdout);
- n=init();m=init();
- for(ll i=;i<=n;i++){
- a[i]=init();
- order[i]=a[i];
- }
- sort(order+,order++n);
- num=unique(order+,order++n)-order-;
- for(ll i=;i<=n;i++){
- ll pos=lower_bound(order+,order++num,a[i])-order;
- Insert(root[i],root[i-],pos,,num);
- }
- ll l,r,k;
- for(ll i=;i<=m;i++){
- l=;r=init();k=i;
- ll p=Query(root[l-],root[r],k,,num);
- cout<<order[p]<<endl;
- }
- return ;
- }
9.6noip模拟试题的更多相关文章
- 模拟试题C
模拟试题C 一.单项选择题(2′*14 =28′) 1.双线性法向插值法(Phong Shading)的优点是( ) A)法向计算精确 B)高光域准确 C)对光源和视点没有限制 D)速度较快 2.用编 ...
- 模拟试题B
模拟试题B 一.单项选择题(2′*8 =16′) 1.灰度等级为256级,分辨率为2048*1024的显示器,至少需要的帧缓存容量为( ) A)512KB B)1MB C)2MB D)3MB 2.在多 ...
- 模拟试题A
模拟试题A 一.单项选择题(2′*12=24′) 1.下面各种坐标变换中,会产生变换前后维度的改变的是( ) A)建模变换 B)观察变换 C)投影变换 D)视口变换 2.下列描述深度缓冲消隐算法的特点 ...
- CCF 模拟试题——出现次数最多的数 官方答案解析及自己写的正确答案
前几天知道的CCF计算机职业资格认证考试,觉得好像比软考含金量高一些,就去了解了一下,做了模拟试题中的 “出现次数最多的数” 这道题,我的算法和官方答案算法不同,个人觉得觉得官方的好一点,没那么繁琐, ...
- 11.9 noip模拟试题
NOIP2016 模拟赛——那些年,我们学过的文化课背单词(word.c/cpp/pas)[题目描述]fqk 退役后开始补习文化课啦, 于是他打开了英语必修一开始背单词. 看着满篇的单词非常头疼, 而 ...
- 10.26 noip模拟试题
enc[问题背景]zhx 和他的妹子聊天.[问题描述]考虑一种简单的加密算法.假定所有句子都由小写英文字母构成,对于每一个字母,我们将它唯一地映射到另一个字母.例如考虑映射规则:a->b, b- ...
- 9.29noip模拟试题
环上的游戏(cycle) 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这 ...
- 9.20 noip模拟试题
Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一届的学弟学妹,邪恶的chenzeyu97发现一位学弟与他同名,于是他当起了善良的学长233 “来来来,学弟,我 ...
- 9.16noip模拟试题
题目描述 在幻想乡,东风谷早苗是以高达控闻名的高中生宅巫女.某一天,早苗终于入手了最新款的钢达姆模型.作为最新的钢达姆,当然有了与以往不同的功能了,那就是它能够自动行走,厉害吧(好吧,我自重).早苗的 ...
随机推荐
- C# 程序性能提升篇-2、类型(字段类型、class和struct)的错误定义所影响性能浅析
前景提要: 编写程序时,也许你不经意间,就不知不觉的定义了错误的类型,从而发生了额外的性能消耗,从而降低了效率,不要说就发生那么一次两次,如果说是程序中发生了循环.网络程序(不断请求处理的)等这些时候 ...
- 测试gcc的优化选项
一.测试准备及原理 测试代码: static void wait(volatile unsigned long dly) { ; dly--); } int main(void) { unsigned ...
- iOS uuchart 用法
这个是 画 折线图用的 一个 第三方文件 说白了就是一个 用 贝塞尔 曲线封装好的一个 第三方. 但是有机会还是需要看下怎么用
- C++标准库的数值极限numeric_limits
包含头文件:#include<limits> 它是一个模板类,它主要是把C++当中的一些内建型别进行了封装,比如说numeric_limits<int>是一个特化后的类,从这个 ...
- 【面试】惠普IT电面
1.英文自我介绍 一定要事先准备,逻辑要清晰 2.英文项目介绍
- Hibernate 配置详解(3)
7) hibernate.max_fetch_depth: 该属性用于设置left out join单对象查询关系(one-to-one/many-to-one)中最大的关联深度.默认值为0,即默认情 ...
- 【Linux】鸟哥的Linux私房菜基础学习篇整理(四)
1. VI按键说明.(1)移动光标的方法h或向左箭头:光标向左移动一个字符:j或向下箭头:光标向下移动一个字符:k或向上箭头:光标向上移动一个字符:l或向右箭头:光标向右移动一个字符:进行多次移动,如 ...
- Linux日志文件系统(EXT4、XFS、JFS)及性能分析
Ext4 ReiserFS Btrfs 等七种文件系统性能比拼 自上一篇<Ext2 v.s. Ext3 v.s. Ext4 性能比拼> 发布以来,社会各界纷纷来电来函,给出了“Ext4 我 ...
- POJ1416 Shredding Company(dfs)
题目链接. 分析: 这题从早上调到现在.也不算太麻烦,细节吧. 每个数字都只有两种状态,加入前一序列和不加入前一序列.DFS枚举. #include <iostream> #include ...
- (转载)教你在PHP中使用全局变量
(转载)http://www.chinaz.com/program/2009/0123/64261.shtml 即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你 ...