题面及数据及std(有本人的也有原来的) :2017.6.11 校内模拟赛

T1

   

    自己在纸上模拟一下后就会发现

    可以用栈来搞一搞事情

    受了上次zsq 讲的双栈排序的启发。。

    具体就是将原盘子大小copy一下排个序

    用两个指针维护两个数组(原数据 和 排序后的数据), 即分为1数据和2数组

    将小于1指针指向的数据的2数组中的数据全部压入栈中

    后进行消除, 将栈栈顶元素与当前1数组中的1指针指向的元素进行比较

    相同则消除

    后重复过程

    直至指针超过N

    后判断一下是否两个指针都超过了N。。。

  

    

#include <algorithm>
#include <cstring>
#include <cstdio>
#include <stack>#define Max 100090void read (int &now)
{now = 0;register char word = getchar ();while (word < '0' || word > '9')word = getchar ();while (word >= '0' && word <= '9'){now = now * 10 + word - '0';word = getchar ();}
}int N, M;int dish[Max];
int data[Max];class Stack_Type
{private :int Stack[Max];int Top_Cur;public :inline void Clear (){ Top_Cur = 0; }inline void Pop (){Top_Cur --;}bool Empty () {    return Top_Cur == 0;}inline int Top (){return Stack[Top_Cur];}inline void Push (int x){Stack[++ Top_Cur] = x;}
};Stack_Type Stack;int main (int argc, char *argv[])
{freopen ("disk.in", "r", stdin);freopen ("disk.out", "w", stdout);int T;for (; scanf ("%d", &N) != EOF; ){memset (dish, 0, sizeof dish);memset (data, 0, sizeof data);bool flag = false;Stack.Clear ();for (int i = 1; i <= N; i ++){read (dish[i]);data[i] = dish[i];    }    std :: sort (data + 1, data + 1 + N);register int pos_1 = 1, pos_2 = 1;for (; (pos_1 <= N || pos_2 <= N) && (Stack.Empty () || dish[pos_1] >= Stack.Top ()); ){    for (; pos_2 <= N && dish[pos_1] >= data[pos_2]; )Stack.Push (data[pos_2 ++]);            for (; !Stack.Empty () && pos_1 <= N && Stack.Top() == dish[pos_1]; Stack.Pop (), pos_1 ++); }if (pos_1 > N && pos_2 > N)printf ("Y\n");else printf ("J\n");}    return 0;
}

T2

    这个题估计随便乱搞搞就能A吧。。

    看机房里众dalao 以各种奇怪的姿势AC此题。。

     

    思路:枚举每个点,算出对角线边缘的两个分别进行二分, 分别找出两个符合条件的边界点, 乘一乘就好了。。

    写了四个二分我也是醉了。。。写完后才想起来有 lower_bound 这个东西。。。

  

#include <algorithm>
#include <cstdio>#define Max 10010void read (int &now)
{now = 0;register char word = getchar ();bool temp = false;while (word < '0' || word > '9'){if (word == '-')temp = true;word = getchar ();}while (word >= '0' && word <= '9'){now = now * 10 + word - '0';word = getchar ();}if (temp)now = -now;
}struct Data_
{int x, y;Data_ (int __x, int __y) : x (__x), y (__y) {};Data_ () {};bool operator < (const Data_ &now) const{if (this->x == now.x)return this->y < now.y;return this->x < now.x;}
};inline int abs (int x)
{return x < 0 ? -x : x;
}long long Answer;
int N;bool Judge (Data_ now_1, Data_ now_2)
{if (now_2.y <= now_1.y)return true;if (abs (now_1.x + now_1.y + now_2.x - now_2.y) % 2 == 1)return true;if (abs (now_2.x - now_1.x + now_1.y + now_2.y) % 2 == 1)return true;return false;
}Data_ point[Max];bool ErFen_Judge (int now, int x, int y)
{Data_ res (x, y);return point[now] < res;
}bool ErFen_Re_Judge (int now, int x, int y)
{if (point[now].x == x)return point[now].y > y;return point[now].x > x;
}int main (int argc, char *argv[])
{freopen ("car.in", "r", stdin);freopen ("car.out", "w", stdout);read (N);for (int i = 1; i <= N; i ++){read (point[i].x);read (point[i].y);}std :: sort (point + 1, point + 1 + N);int l, r, Mid;for (int i = 1; i <= N; i ++)for (int j = i + 1; j <= N; j ++){if (point[i].x == point[j].x && point[i].y == point[j].y)continue ;if (Judge (point[i], point[j]))continue;register int now_x = (point[i].x + point[i].y + point[j].x - point[j].y) >> 1;register int now_y = (point[j].x - point[i].x + point[i].y + point[j].y) >> 1; l = 0;r = N + 1;while (l + 1 < r){Mid = l + r >> 1;if (ErFen_Judge (Mid, now_x, now_y))l = Mid;elser = Mid;}int Result_1 = l;l = 0;r = N + 1;while (l + 1 < r){Mid = l + r >> 1;if (ErFen_Re_Judge (Mid, now_x, now_y))r = Mid;elsel = Mid;}Result_1 = l - Result_1;now_x = (point[i].x - point[i].y + point[j].x + point[j].y) >> 1;now_y = (point[i].x + point[i].y - point[j].x + point[j].y) >> 1;l = 0;r = N + 1;while (l + 1 < r){Mid = l + r >> 1;if (ErFen_Judge (Mid, now_x, now_y))l = Mid;elser = Mid;}int Result_2 = l;l = 0;r = N + 1;while (l + 1 < r){Mid = l + r >> 1;if (ErFen_Re_Judge (Mid, now_x, now_y))r = Mid;elsel = Mid;}Result_2 = l - Result_2;Answer += (long long) Result_1 * Result_2;}printf ("%lld", Answer);return 0;
}

T3

  

    主席树 + 权值线段树 板子题。。

#include <algorithm>
#include <cstdio>#define Max 40000void read (int &now)
{now = 0;register char word = getchar ();while (word > '9' || word < '0')word = getchar ();while (word >= '0' && word <= '9'){now = now * 10 + word - '0';word = getchar ();}
}void read_long_long (long long &now)
{now = 0;register char word = getchar ();while (word > '9' || word < '0')word = getchar ();while (word >= '0' && word <= '9'){now = now * 10 + word - '0';word = getchar ();}
}struct Tree_Data
{int key;int l, r;int Mid;};Tree_Data tree[Max * 20];Tree_Data node[Max];int N, M;class Tree_Type
{private :int Count_;int People_Count;void __Build_ (Tree_Data &now, int l, int r){if (l == r)return ;now.Mid = l + r >> 1;now.l = ++ Count_;__Build_ (tree[now.l], l, now.Mid);now.r = ++ Count_;__Build_ (tree[now.r], now.Mid + 1, r);}void __Updata_ (Tree_Data &Pre, Tree_Data &now, int l, int r,int pos){if (l == r){now.key ++;return ;}now.Mid = Pre.Mid;if (pos <= now.Mid){now.r = Pre.r;now.l = ++ Count_;__Updata_ (tree[Pre.l], tree[now.l], l, now.Mid, pos);}else{now.l = Pre.l;now.r = ++ Count_;__Updata_ (tree[Pre.r], tree[now.r], now.Mid + 1, r, pos);}now.key = tree[now.l].key + tree[now.r].key;}int __Query_ (Tree_Data &Pre, Tree_Data &now, int l, int r, int k){if (l == r)return l;int res = tree[now.l].key - tree[Pre.l].key;if (k <= res)return __Query_ (tree[Pre.l], tree[now.l], l, now.Mid, k);elsereturn __Query_ (tree[Pre.r], tree[now.r], now.Mid + 1, r, k - res);}public :Tree_Type (){Count_ = 0;People_Count = 0;}inline void Build (int l, int r){__Build_ (node[0], l, r);return ;}inline void Updata (int now, int pos){__Updata_ (node[now - 1], node[now], 1, N, pos);return ;}inline int Query (int k){return __Query_ (node[0], node[k], 1, N, ++ People_Count);}
};Tree_Type President_Tree;long long __rank[Max];
long long number[Max];int main (int argc, char *argv[])
{freopen ("rollcall.in", "r", stdin);freopen ("rollcall.out", "w", stdout);read (N);read (M);for (int i = 1; i <= N; __rank[i] = number[i], i ++)read_long_long (number[i]);std :: sort (__rank + 1, __rank + 1 + N);int Size = std :: unique (__rank + 1, __rank + 1 + N) - __rank - 1;President_Tree.Build (1, N);for (int i = 1; i <= N; i ++){number[i] = std :: lower_bound (__rank + 1, __rank + 1 + Size, number[i]) - __rank;President_Tree.Updata (i, number[i]); }for (int x; M --; ){read (x);printf ("%I64d\n", __rank[President_Tree.Query (x)]);}return 0;
}

转载于:https://www.cnblogs.com/ZlycerQan/p/6985382.html

2017.6.11 校内模拟赛相关推荐

  1. 2017.9.2 校内模拟赛

    中规中矩的一套题. 然而辣鸡的我日常跪 卡SPFA是要哪样啊...再也不写SPFA了 100 + 0 + 70 = 170 "与" (and.pas/.c/.cpp) 时间限制:1 ...

  2. 第十四届蓝桥杯校内模拟赛第二期-Java个人题解(仅供参考)

    刚刚结束第十四届蓝桥杯校内模拟赛第二期,在这记录下自己的代码 不保证正确! 不保证正确! 不保证正确! 有问题一起改正!! 题解 2048 代码: package _14届模拟2;public cla ...

  3. 2021年 第十二届蓝桥杯第二期校内模拟赛题解(Java版)

    时隔多日,终于会写一些简单DP了哈哈哈! 稍微改版,方便阅读,若有错,请指出 2019年 第十届蓝桥杯省赛题解(JavaB组版) 2020年 第十一届蓝桥杯第一场省赛题解(JavaB组版) 2020年 ...

  4. 第十四届蓝桥杯校内模拟赛第一期——Python

    第十四届蓝桥杯校内模拟赛第一期--Python 文章目录 第十四届蓝桥杯校内模拟赛第一期--Python 1.二进制位数 问题描述 参考答案 扩展 2. 晨跑 问题描述 参考答案 扩展 3. 调和级数 ...

  5. 【蓝桥】软件校内模拟赛(二)反倍数 题目+题解

    文章目录 前言 反倍数 题目描述 前言 本题解为第十一届软件类校内模拟赛个人题解,但非官方满分题解,因此,可能存在下列问题 题意理解错误,导致答案错误. 代码中存在一些问题,导致答案错误. 算法复杂度 ...

  6. 【蓝桥】第十一届软件类校内模拟赛(二)填空题部分

    起晚了起晚了,比赛都快结束了才整完qwq 文章目录 前言 填空题 1题目描述 2题目描述 3题目描述 4题目描述 前言 本题解为第十一届软件类校内模拟赛个人题解,但非官方满分题解,因此,可能存在下列问 ...

  7. [蓝桥杯第十一届校内模拟赛] Apare_xzc

    华中师范大学蓝桥杯第十一届校内模拟赛 2020/3/22 8:00-12:00 题目还是比省赛要简单的,我9:25就做完了. 第一题 分析: 简单题,求给定的1200000的正约数的个数.我们可以暴力 ...

  8. 9.11 myl模拟赛

    9.11 myl 模拟赛 100 + 100 + 0 第一题耗费了太多的时间,导致最后一题没有时间想,直接去写了暴力,而且出题人没有给暴力分.... Problem 1. superman [题目描述 ...

  9. 蓝桥杯校内模拟赛_C++组

    蓝桥杯校内模拟赛 填空题 填空题比较简单,只需要在空格中填写整数答案即可: 在计算机存储中,15.125GB是多少MB? 解题思路: 1GB=1024MB,打开系统计算器计算即可 答案: 15488 ...

最新文章

  1. 今天我们来聊一聊 Spring 中的线程安全性
  2. numpy常用函数之random.normal函数
  3. Quartz使用示例总结
  4. 自旋表达的到底是什么?
  5. 四种常见的 POST 提交数据方式对应的content-type取值
  6. 一键分享手机代码_通过广告路由器指定手机浏览器自动认证WIFI上网 附代码
  7. 趣挨踢 | 关于遗留代码的那些事儿
  8. rocketmq学习杂记
  9. linux配置usb主从_技术 | 手把手教你搭建MySQL主从架构
  10. 使用一个虚拟环境,但是运用其他环境中的库!【pycharm】
  11. 全方面解析软件测试行业发展现状及前景
  12. 《VMware vSphere 6.0虚拟化架构实战指南》——1.2 软件定义数据中心介绍
  13. Spring框架学习总结(上)
  14. 知网哭穷赔不起1200亿,网友:收钱时咋不嫌多
  15. 百度地图api 在3D地图中设置自定义样式
  16. LaTeX:overleaf latex 中文生僻字处理
  17. 深度学习框架——学习入门
  18. 不能打开到主机的连接, 在端口 1521: 连接失败
  19. R^n代表什么含义?
  20. 2022-2028全球与中国自动售票机市场现状及未来发展趋势

热门文章

  1. Quicker--文件搜索工具介绍
  2. Maven搭建JavaFX项目
  3. Scala键盘录入代码示例
  4. 大型高并发系统的系统设计要点
  5. Java并发编程--不要使用字符串常量作为synchronized锁对象
  6. lombok @Builder注解的使用
  7. Spring MVC生成PDF文件代码示例
  8. php xml expat,PHP Expat :XML的解析器
  9. jpa添加索引的几种方式
  10. Mac OS 软件包管理器Homebrew