2017.6.11 校内模拟赛
题面及数据及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 校内模拟赛相关推荐
- 2017.9.2 校内模拟赛
中规中矩的一套题. 然而辣鸡的我日常跪 卡SPFA是要哪样啊...再也不写SPFA了 100 + 0 + 70 = 170 "与" (and.pas/.c/.cpp) 时间限制:1 ...
- 第十四届蓝桥杯校内模拟赛第二期-Java个人题解(仅供参考)
刚刚结束第十四届蓝桥杯校内模拟赛第二期,在这记录下自己的代码 不保证正确! 不保证正确! 不保证正确! 有问题一起改正!! 题解 2048 代码: package _14届模拟2;public cla ...
- 2021年 第十二届蓝桥杯第二期校内模拟赛题解(Java版)
时隔多日,终于会写一些简单DP了哈哈哈! 稍微改版,方便阅读,若有错,请指出 2019年 第十届蓝桥杯省赛题解(JavaB组版) 2020年 第十一届蓝桥杯第一场省赛题解(JavaB组版) 2020年 ...
- 第十四届蓝桥杯校内模拟赛第一期——Python
第十四届蓝桥杯校内模拟赛第一期--Python 文章目录 第十四届蓝桥杯校内模拟赛第一期--Python 1.二进制位数 问题描述 参考答案 扩展 2. 晨跑 问题描述 参考答案 扩展 3. 调和级数 ...
- 【蓝桥】软件校内模拟赛(二)反倍数 题目+题解
文章目录 前言 反倍数 题目描述 前言 本题解为第十一届软件类校内模拟赛个人题解,但非官方满分题解,因此,可能存在下列问题 题意理解错误,导致答案错误. 代码中存在一些问题,导致答案错误. 算法复杂度 ...
- 【蓝桥】第十一届软件类校内模拟赛(二)填空题部分
起晚了起晚了,比赛都快结束了才整完qwq 文章目录 前言 填空题 1题目描述 2题目描述 3题目描述 4题目描述 前言 本题解为第十一届软件类校内模拟赛个人题解,但非官方满分题解,因此,可能存在下列问 ...
- [蓝桥杯第十一届校内模拟赛] Apare_xzc
华中师范大学蓝桥杯第十一届校内模拟赛 2020/3/22 8:00-12:00 题目还是比省赛要简单的,我9:25就做完了. 第一题 分析: 简单题,求给定的1200000的正约数的个数.我们可以暴力 ...
- 9.11 myl模拟赛
9.11 myl 模拟赛 100 + 100 + 0 第一题耗费了太多的时间,导致最后一题没有时间想,直接去写了暴力,而且出题人没有给暴力分.... Problem 1. superman [题目描述 ...
- 蓝桥杯校内模拟赛_C++组
蓝桥杯校内模拟赛 填空题 填空题比较简单,只需要在空格中填写整数答案即可: 在计算机存储中,15.125GB是多少MB? 解题思路: 1GB=1024MB,打开系统计算器计算即可 答案: 15488 ...
最新文章
- 今天我们来聊一聊 Spring 中的线程安全性
- numpy常用函数之random.normal函数
- Quartz使用示例总结
- 自旋表达的到底是什么?
- 四种常见的 POST 提交数据方式对应的content-type取值
- 一键分享手机代码_通过广告路由器指定手机浏览器自动认证WIFI上网 附代码
- 趣挨踢 | 关于遗留代码的那些事儿
- rocketmq学习杂记
- linux配置usb主从_技术 | 手把手教你搭建MySQL主从架构
- 使用一个虚拟环境,但是运用其他环境中的库!【pycharm】
- 全方面解析软件测试行业发展现状及前景
- 《VMware vSphere 6.0虚拟化架构实战指南》——1.2 软件定义数据中心介绍
- Spring框架学习总结(上)
- 知网哭穷赔不起1200亿,网友:收钱时咋不嫌多
- 百度地图api 在3D地图中设置自定义样式
- LaTeX:overleaf latex 中文生僻字处理
- 深度学习框架——学习入门
- 不能打开到主机的连接, 在端口 1521: 连接失败
- R^n代表什么含义?
- 2022-2028全球与中国自动售票机市场现状及未来发展趋势