Educational Codeforces Round 42 (Rated for Div. 2)  http://codeforces.com/contest/962

A:Equator

这里需要注意一个问题,就是直接 / 2 的时候、有奇数偶数的情况、如果是奇数的话、这个答案就是错误的、

所以我们反过来求解、用当前得数 * 2  如果大于,输出,不能继续叠加、

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class A {static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));public static int nextInt() throws IOException {in.nextToken();return (int) in.nval;}public static String next() throws IOException {in.nextToken();return (String) in.sval;}public static void main(String[] args) throws IOException {int n = nextInt();int a[] = new int[n];long sum = 0;for(int i = 0; i < n; i++) {a[i] = nextInt();sum += a[i];}long half = 0;int i = 0;while(i < n && 2 * half < sum) {half += a[i++];}out.println(i);out.flush();}}

B:Students in Railway Carriage

打比赛的时候、我是用额外的数组处理空闲的部分、然后、判断第一个、最后一个有没有 *、结果太多、处理的太复杂、warry

结束后、队友给我讲了他的思路:

在线求解:用一个变量记录当前空位的次数、遇到 * 处理一下,记录变量归零、注意一下、是人多还是座位多的情况、

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Scanner;public class B {static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));public static int nextInt() throws IOException {in.nextToken();return (int) in.nval;}public static String next() throws IOException {in.nextToken();return (String) in.sval;}public static void main(String[] args) throws IOException {Scanner input = new Scanner(System.in);int n, a, b;n = input.nextInt();a = input.nextInt();b = input.nextInt();String str = input.next(); // 输入字符串 、next() 输入是空串、(next不能读入字符、只能输入字母)long ans = 0; // 记录能坐的学生的个数、、int empty = 0; // 记录空闲的位置,int max = Math.max(a, b);int min = Math.min(a, b);for(int i = 0; i < str.length(); i++) {int tmp = Math.max(max, min);min = Math.min(max, min);max = tmp;if(str.charAt(i) == '.') { // 可以放学生、 坐下empty++;}else { // *号 、 结算、if((empty & 1) == 1) {  // 奇数、 大的能多放一个、ans += Math.min(empty / 2 + 1, max); // 座位多还是人多ans += Math.min(min, empty / 2);max = Math.max(0, max - empty / 2 - 1);min = Math.max(0, min - empty / 2);}else { // 偶数、、ans += Math.min(empty / 2, max); // 座位多还是人多ans += Math.min(empty / 2, min);max = Math.max(0, max - empty / 2);min = Math.max(0, min - empty / 2);}empty = 0;}}// 结算最后一个的、、 一直没有 * 号的、if((empty & 1) == 1) {  // 奇数、 大的能多放一个、ans += Math.min(empty / 2 + 1, max);ans += Math.min(min, empty / 2);max = Math.max(0, max - empty / 2 - 1);min = Math.max(0, min - empty / 2);}else { // 偶数、、ans += Math.min(empty / 2, max);ans += Math.min(empty / 2, min);max = Math.max(0, max - empty / 2);min = Math.max(0, min - empty / 2);}out.println(ans);out.flush();input.close();}}

C:Make a Square

处理出删除0,1,2,,,,,n - 1 个字符的字符串、天灾在HaseSet集合中,(好像集合是什么无所谓)

一个字符串转化为数组、 Math.sqrt 开方一下、强制转化为(int类型),比较两个是否相等、以及是否为0

是的话、变量max记录 更新变量已经这个删除字符的个数和当前max的最大的、处理完所有的结果后,

输出原字符 - max

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.HashSet;
import java.util.Scanner;public class C {static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));public static int nextInt() throws IOException {in.nextToken();return (int) in.nval;}public static String next() throws IOException {in.nextToken();return (String) in.sval;}static HashSet<String> st = new HashSet<>();static int min;public static void main(String[] args) throws IOException {Scanner input = new Scanner(System.in);String s = input.next(); // next()  不能以字符串的形式读入数字int n = s.length();int max = -1;subsequence(s);for (String ss : st) {StringBuffer b = new StringBuffer(ss);for(int i = 0; i < b.length(); i++) {if(b.charAt(i) == '0' && b.length() > 1) {b.delete(i, i + 1);i--;}else {break;}}double d1 = Math.sqrt(Double.parseDouble(b.toString()));int d2 = (int)d1;if(d1 == d2 && d1 != 0) {max = Math.max(max, b.length());}}out.println(max == -1 ? -1 : n - max);out.flush();input.close();}public static void subsequence(String str) {  // 获取的可能性、for(int i = 0;i < str.length(); i++) {for(int j = str.length(); j > i; j--) {String sub_str = str.substring(i, j);if(!st.contains(sub_str)) { // 子字符串不在里面、st.add(sub_str);}for(int k = 1; k < sub_str.length() - 1; k++) {StringBuffer sb = new StringBuffer(sub_str);sb.deleteCharAt(k);if(!st.contains(sb.toString())) {subsequence(sb.toString());}}}}}}

D:Merge a Square

用集合来处理,定义一个类,存输入的数和下标,存入优先队列中,每次取优先队列中两个最小的判断是否相等、相等,合并,返回优先队列中,不相等,(小的就处理完毕了,大的放回优先队列进行下一轮的处理)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.TreeSet;public class D {static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));public static int nextInt() throws IOException {in.nextToken();return (int) in.nval;}public static String next() throws IOException {in.nextToken();return (String) in.sval;}public static void main(String[] args) throws IOException {PriorityQueue<Node> Q = new PriorityQueue<>();int n = nextInt();for (int i = 0; i < n; i++) {Q.offer(new Node(nextInt(), i)); // 输入添加在优先队列中、、}TreeSet<Node> ans = new TreeSet<>();while (true) {Node node1 = new Node(0, 0), node2 = new Node(0, 0);if (Q.size() > 0) {node1 = Q.poll();} else {break;}if (Q.size() > 0) {node2 = Q.poll();} else {ans.add(node1);break;}if (node1.value == node2.value) {node2.value *= 2L;Q.offer(node2);} else {ans.add(node1);Q.offer(node2);}}long res[] = new long[n];for (Node node : ans) {res[node.index] = node.value;}out.println(ans.size());for (int i = 0; i < n; i++) {if (res[i] > 0) {out.print(res[i] + " ");}}out.println();out.flush();}static class Node implements Comparable<Node> {long value;int index;public Node() {}public Node(long value, int index) {this.value = value;this.index = index;}@Overridepublic int compareTo(Node other) { // 按照值的大小,由小到大排序,相等比较下标if (this.value == other.value) {return this.index - other.index;} else {return (int) Math.round((this.value - other.value));  // 就是这里出了问题、、直接int取整不行、、}}}}

A、B、C、D、Educational Codeforces Round 42 (Rated for Div. 2)相关推荐

  1. Educational Codeforces Round 50 (Rated for Div. 2)的A、B、C三题AC代码

    A题链接:https://codeforces.com/contest/1036/problem/A A题AC代码: 1 #include <stdio.h> 2 #include < ...

  2. Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)

    欢迎访问本菜鸡的独立博客:Codecho 比赛名称 Educational Codeforces Round 61 (Rated for Div. 2) 比赛链接 https://codeforces ...

  3. matplotlib绘制图表,设置刻度标签、最大最小刻度、字体大小,label位置、刻度轴箭头等

    matplotlib绘制图表,设置刻度标签.最大最小刻度.字体大小,label位置.刻度轴箭头等 1. 效果图 2. 源码 2.1 仅使用普通轴ax + fontdict 源码 2.2 使用mpl设置 ...

  4. 使用Python、OpenCV翻转图像(水平、垂直、水平垂直翻转)

    使用Python.OpenCV翻转图像(水平.垂直.水平垂直翻转) 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python.OpenCV翻转图像,类似于cv2.rotate(). 沿y轴水 ...

  5. 0.基于C++的图像处理算法实现、INTEL CPU上SSE加速、ARM CPU上NEON加速

    基于C++的图像处理算法实现.INTEL CPU上SSE加速.ARM CPU上NEON加速 基于C++的图像处理算法在INTEL CPU上SSE加速实现 基于C++的图像处理算法在ARM CPU上NE ...

  6. eclipse保存自动组织导入、删除不必要的导入、格式化代码

    eclipse保存自动组织导入.删除不必要的导入.格式化代码: 窗口→首选项→Java→编辑器→保存操作→勾选"对保存执行所选操作"."格式化源码"." ...

  7. 【网络】通讯名词解释:带宽、速率、波特率、奈奎斯特定律、香农定理

    1.带宽 1.1 解释一 带宽,又叫频宽,是数据的传输能力,指单位时间内能够传输的比特数.高带宽意味着高能力. 数字设备中带宽用bps(b/s)表示,即每秒最高可以传输的位数. 模拟设备中带宽用Hz表 ...

  8. linux哪个版本支持多线程,关于Linux操作系统的叙述错误的是()A、Linux是多用户、多任务、支持多线程的操作系统B、Linux的源...

    [多选题]以下哪些是藏族崇尚白色的体现. [判断题]等到口语出现后,非语言表达便消失了. 冷变形金属在加热时,随加热温度的升高,发生[填空(1)][填空(2)][填空(3)] 莫菲(Murphy)氏征 ...

  9. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

最新文章

  1. R语言之字符处理(一)
  2. 在Simulink中创建库
  3. 表格全屏显示_2020-2026年中国手机显示屏市场现状研究分析与发展前景预测报告...
  4. 开发日记-20190610 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  5. 如何在vue里面正确的引用 jquery 和 第三方插件
  6. mongodb部署以及数据操作
  7. 字符串格式化---StrFormatter
  8. 【洛谷】P4643 【模板】动态dp
  9. 基于php的外卖订餐系统开题报告_订餐系统开题报告.doc
  10. csdn2020年度博客之星 - 直播间(恭喜圆满结束)
  11. c语言推箱子程序设计贴吧,推箱子问题
  12. 信息服务器 iis 7.0,iis7.0的技术参数汇总
  13. HTTP请求方式: GET和POST的比较
  14. 【亲测可行】Dev c++调试、运行报错解决方法总结
  15. opencv-python图形图像处理入门基础知识
  16. dis的前缀单词有哪些_前缀dis-dis和un和im前缀-un和dis前缀的区别
  17. 【硬十宝典目录】——1、电源类(更新中~)
  18. banner文字生成器 横幅文字生成器
  19. wpf 的 Window或UserControl绑定自己后台属性
  20. vscode setting 配置

热门文章

  1. matlab电路仿真三角波,Matlab仿真: 1Mhz正弦载波与2kHz三角波调制信号进行调制仿真...
  2. 中e管家投资理财小要点
  3. 小米Max正式发布 三种颜色三种配置
  4. PAT甲级 1068
  5. 12.5m高程数据DEM,导入大疆精灵4RTK,M300仿地飞行
  6. 单体架构、SOA和微服务
  7. 晨跑健身前最好吃根香蕉
  8. 计算机主机时间不保存,电脑主机不能保存时间怎么办?
  9. 【BZOJ4455】【UOJ185】【ZJOI2016】小星星(树形DP,容斥原理)
  10. 使用Golang语言的分金币作业 你有50枚金币,需要分配给以下几个人:Matthew,Sarah,Augustus,Heidi,Emilie,Peter,Giana,Adriano,Aaro