A. Regular Bracket Sequence

题目链接:点击查看
题目大意:
给定一个由()?三种字符组成的序列,该序列中符号(和)各有一个且只有一个。其中?字符可以替换成(和)任意一个,问是否能将整个序列通过替换?使整个序列的括号匹配(一个(对应一个))。
思路:
首先判断序列长度是否与2同余,因为只有这样才能保证(和)的个数相等。若满足,将原序列中前一半的?当作(,后一半当作),再判断括号是否匹配即可。
Code:

#include<bits/stdc++.h>
#define N 101
using namespace std;
char s[N];
int main(){int T;scanf("%d ",&T);while(T--){gets(s);int len = strlen(s);if(len % 2 != 0){puts("NO");continue;}int sum = (len - 2) / 2;bool flag = false;int top = 0;for(int i = 0; i < len; i++){if(s[i] == '(') top++;else if(s[i] == '?' && sum) top++, sum--;else{if(top == 0){flag = 1;break;}top--;}}if(flag) puts("NO");else puts("YES"); }return 0;
}

B. Red and Blue

题目链接:点击查看
题目大意:
给定两个序列,有n个元素的ri和有m个元素的bi。让这两个序列拼到一起构成一个新序列ai,需保证ri中的元素在ai中的位置顺序和在ri中的顺序相同,bi也是如此。
令f(a)=max(0,a1,(a1+a2),(a1+a2+a3),…,(a1+a2+a3+⋯+an+m)),求f(a)的值。
思路:
分别求ri和bi前i项元素和的最大值ans1和ans2,二者相加即答案。
Code:

#include<bits/stdc++.h>
using namespace std;
int n, m, ans;
int r, b;
int sum1, sum2, ans1, ans2;
int main(){int T;scanf("%d", &T);while(T--){ans1 = ans2 = 0;sum1 = sum2 = 0;scanf("%d", &n);for(int i = 1; i <= n; i++){scanf("%d", &r);sum1 = sum1 + r;ans1 = max(sum1, ans1);}scanf("%d", &m);for(int i = 1; i <= m; i++){scanf("%d", &b);sum2 = sum2 + b;ans2 = max(sum2, ans2);}printf("%d\n", ans1 + ans2);}return 0;
}

C. Building a Fence

题目链接:点击查看
题目大意:
想要建造一个由n个相同部分组成的栅栏,这个栅栏每一部分都是宽为1高为k的矩形。但是栅栏所在的地面不平坦,第i个部分下面的地面高度为hi
栅栏的建造需满足一下三个条件:
1.栅栏相邻的部分至少要有1长度的公共边。
2.栅栏的第一部分和第n部分必须立在相应的地面上。
3.其他部分可以不立在地面上,但与相应的地面的距离最大为
k-1。
问是否能建造这样的一个栅栏。
思路:
从栅栏的第二部分起,计算栅栏每部分可能的高度范围,若最低高度l大于最高高度r,则无法满足。同时,栅栏的最后一部分相应地面的高度应位于其可能的高度范围内,否则同样无法满足。
Code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,k,h;
int main(){int T;scanf("%d",&T);while(T--){scanf("%d%d", &n, &k);scanf("%d", &h);bool flag = false;ll l = h, r = h;for(int i = 1; i < n; i++){scanf("%d", &h);ll t1 = l - (k - 1), t2 = r + (k - 1);t1 = max((ll)h, t1);t2 = min((ll)h + k - 1, t2);l = t1;r = t2;if(l > r) flag = 1;}if(flag || h < l || h > r) puts("NO");else puts("YES");}return 0;
}

D. Ceil Divisions

题目链接:点击查看
题目大意:
给定一个序列ai,其中ai = i。
在一步操作中, 可以选择1到n范围内的两个数x,y(x != y),将ax的值改变为[ax/ay] (向上取整),目标将ai序列改变为由n-1个1和1个2组成的序列。输出操作次数以及操作方案。 要求操作次数不超过n + 5次。
思路:
显然,对于数x,y:
操作1.若x <= y,则操作1次ax被改变为1。
操作2.若x > y且x <= y * y,则操作1次可将ax改变为2,操作2次可将ax改变为1。
操作3.若x > y * y,则需操作2次以上才可将ax改变为1。
用贪心的思维来想,若想操作次数尽可能的少,则x应尽可能小于等于y * y。
想要得到1很简单,只需要使y等于n,任何不能与n的x进行一次操作后都可以变成1。但是这样一来an就无法改变。
所以现在的问题是如何改变an
我们首先考虑如何得到序列最终的一个2:
如果2是由第2种方式得到,那么一定会使得序列中存在多个2或存在除1,2以外的数,故最终的2应该是原来就存在的a2,得到2需要0次操作。
下面考虑如何在n + 5次操作内得到n - 1个1。
既然a2保留到了最后,那么我们不妨从它延伸:

  • 通过a2将a4改变成1需要2次操作
  • 通过a4将a16改变成1需要2次操作
  • 通过a16将a256改变成1需要两次操作
  • 通过a256将a65536改变成1需要两次操作

这样a4,a16,a256,a65536在两次操作内可以变成1,同时an可以通过这四个数以及a2中小于n且距n最近的一个数改变成1,最多只需2次操作。
这样,在最坏的情况下,a4,a16,a256,a65536,an这五个数最多只需要两次操作可以改变成1,除2外其他数可以通过1次操作改变成1,2不需要改变,总共n + 4次操作,满足条件!
Code

#include<bits/stdc++.h>
#define N 200001
using namespace std;
bool vis[N];
int tmp[N], ans1[N] , ans2[N];
int n, t, num, numt;
int main(){int T;long long t = 2;while(t <= N - 1){vis[t] = 1;t *= t;}scanf("%d", &T);while(T--){scanf("%d", &n);t = 2;num = numt = 0;bool st = vis[n];vis[n] = 1;for(int i = 1; i <= n; i++){if(vis[i]) tmp[++numt] = i;else{ans1[++num] = i;ans2[num] = n;}}for(int i = numt; i >= 2; i--){ans1[++num] = tmp[i];ans2[num] = tmp[i - 1];ans1[++num] = tmp[i];ans2[num] = tmp[i - 1];}printf("%d\n", num);for(int i = 1; i <= num; i++){printf("%d %d\n", ans1[i], ans2[i]);}vis[n] = st;}return 0;
}

写在最后

本人是来自HITWH的一名ACMER,第一次写博客,希望和大家多多交流,共同进步。

Educational Codeforces Round 101 (Rated for Div. 2)相关推荐

  1. Educational Codeforces Round 101 (Rated for Div. 2) C. Building a Fence 思维取范围

    传送门 题意: 思路: 刚看到这个题其实是没什么思路,想过从前往后推或者从后往前推,但是都不是很可行.因为两边都有一个固定的挡板挡住,我们可以根据其中的一个算出来每个位置高度的范围,让后检查一下范围是 ...

  2. Educational Codeforces Round 101 (Rated for Div. 2) F. Power Sockets 哈希 + 乱搞

    传送门 题意: 给一个二进制串aaa,让后定义两个串相似为有至少一个相同位置相等.现在让你找一个字典序最小的长度为kkk的串使其与aaa中每个长度为kkk的字串相似. 思路: 首先我们知道所有可能的串 ...

  3. Educational Codeforces Round 101 (Rated for Div. 2) D. Ceil Divisions 思维 + 根号数

    传送门 题意: 给一个数组ai=ia_i=iai​=i,每次可以进行操作ax=⌈axay⌉a_x=\left \lceil \frac{a_x}{a_y} \right \rceilax​=⌈ay​a ...

  4. Educational Codeforces Round 101 (Rated for Div. 2) D. Ceil Divisions(思维)

    给出数 n ,数组 a 为 {1,2,3,--n},最多有 n+5 次机会,将任意两个不相等的数做  ceil(x/y) 运算,使得最后的数组 a 只有一个 2,其余全为 1,给出运算次数具体的运算步 ...

  5. Educational Codeforces Round 126 (Rated for Div. 2)(A-E)

    A-Array Balancing 题意:给定两个数组a,b,a数组第i个数可以和b数组的第i个数交换,最终求 a1−a2|+|a2−a3|+⋯+|an−1−an||a1−a2|+|a2−a3|+⋯+ ...

  6. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  7. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  8. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

  9. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  10. Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)

    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...

最新文章

  1. nyoj——297(期望)
  2. 如何终止一个正在动态执行的命令
  3. 失败在大学生活中的三种功能
  4. GATT之Device information Service
  5. 中北大学和陕西科技大学计算机专业,西北地区两所重点大学,中北大学和陕西科技大学...
  6. 机器人带陀螺仪走钢丝_一言不合就走钢丝,机器人化身“七变美男子”,萌翻你!...
  7. 各大物联网通信技术对比
  8. linux专业画图工具astah下载和安装
  9. Telink 825x 蓝牙开发笔记4
  10. 什么服务器操作系统更好?四大流派有这些!
  11. 抖音能成为下一个「微信」吗?
  12. TreeMap的用法
  13. 硬件电路设计-FPGA(EP4CE6)最小系统
  14. 如何计算机械费里有多少电费,企业用电的电费是如何计算
  15. Qt之简约按钮导航栏
  16. FastAdmin 系统配置的使用
  17. 远禾科技出席阿里ASRC生态大会 并参与安恒西湖论剑...
  18. repo命令添加bin_Linux shell中getopts命令学习--实现一个添加yum源的脚本
  19. n个点坐标解三角形个数
  20. 时间格式化hh:mm:ss和HH:mm:ss

热门文章

  1. 群面时被问到“让你淘汰一个组员”一般如何淘汰谁?
  2. 单片机指令系统(1)
  3. 证件照尺寸像素规格,证件照尺寸怎么修改
  4. lamp架构部署 httpd编译、mysql二进制、php编译 网页访问效果
  5. linux+qq+输入法下载官网,续:Linux下安装输入法和QQ软件
  6. 【草莓音乐节】现场美女大放送
  7. 河南大学计算机科学与技术中外合作,河南大学中外合作办学怎么样
  8. vscode markdown preview enhanced css font
  9. 从亏损19亿到盈利6亿,恺英网络做对了什么?
  10. Vue学习笔记:获取文件唯一标识 md5值