当前位置: 首页 > 编程日记 > 正文

CodeForces Round #287 Div.2

A. Amr and Music (贪心)

水题,没能秒切,略尴尬。

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 const int maxn = 100 +10;
 6 int a[maxn], r[maxn], ans[maxn];
 7 
 8 int cmp(int i, int j) { return a[i] < a[j]; }
 9 
10 int main()
11 {
12     //freopen("in.txt", "r", stdin);
13 
14     int n, k;
15     scanf("%d%d", &n, &k);
16     for(int i = 0; i < n; ++i) r[i] = i;
17     for(int i = 0; i < n; ++i) scanf("%d", &a[i]);
18     sort(r, r + n, cmp);
19     int sum = 0, cnt = 0;
20     for(int i = 0; sum + a[r[i]] <= k && cnt < n; ++i)
21     {
22         sum += a[r[i]];
23         ans[cnt++] = r[i];
24     }
25 
26     printf("%d\n", cnt);
27     for(int i = 0; i < cnt - 1; ++i) printf("%d ", ans[i]+1);
28     if(cnt) printf("%d\n", ans[cnt-1]+1);
29 
30     return 0;
31 }
代码君

B. Amr and Pins (找规律)

题意:

给出一个圆的半径 和 圆心的始末位置。每次操作只能绕圆周上的点旋转若干角度。求该圆从初位置到末位置最少的操作次数。

分析:

不妨设圆的半径为r,圆心在原点处。

先看只旋转一次的情况,圆心所有可能位置构成的区域为  半径为2r的圆(除去圆心那点),也可理解为半径为(0, 2r]的圆环区域

再看第二次旋转,其区域为半径在(2r, 4r]的圆环区域。  //这个不容易画图,自行脑补一下好啦

以此类推。

算法:

所以我们可以先算出圆心始末位置间的距离d,然后根据d和直径2r的关系,最终答案为

 1 #include <cstdio>
 2 #include <cmath>
 3 
 4 int main()
 5 {
 6     //freopen("in.txt", "r", stdin);
 7 
 8     int r, x1, y1, x2, y2, ans;
 9     scanf("%d%d%d%d%d", &r, &x1, &y1, &x2, &y2);
10     double d = sqrt((long long)(x1-x2)*(x1-x2) + (long long)(y1-y2)*(y1-y2));
11     ans = (int)ceil(d / 2.0 / r);
12     printf("%d\n", ans);
13 
14     return 0;
15 }
代码君

C. Guess Your Way Out! (模拟 LCA)

题意:

有一个树高为h的完全二叉树 和 一个目标叶子节点, 给出一种遍历方式(LRLRLR...)

求在到达目标节点时,遍历节点的总数。(不包括目标节点)

具体参见原文Guess Your Way Out!

分析:

以官方题解中的图为例。自己最开始对这道题没什么想法,所以后面的分析相当于题解的翻译。=_=||

从树根开始走到最底端,到达节点X。

如果X刚好是目标节点E,则得到结果为树高h。

否则,找到X和E的 Least Common Ancestor (最小公共祖先)。在右子树遍历之前,一定会遍历完左子树中所有的节点 (图中用红色标出) ,从而退出,进入右子树。

所以在到达右子树之前共遍历sum[h1] + h - h1,其中sum[h1]表示树高为h1的完全二叉树的节点个数。

在进入右子树后,更新树高h、根节点编号、遍历的方向(L or R),重复刚才的过程。

 1 #include <cstdio>
 2 #include <vector>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 typedef long long LL;
 7 
 8 LL h, n, sum[55], ans = 0;
 9 vector<LL> anc1;
10 
11 int main()
12 {
13     //freopen("in.txt", "r", stdin);
14 
15     for(int i = 0; i <= 50; ++i) sum[i] = (1LL << (i+1)) - 1;
16     scanf("%I64d%I64d", &h, &n);
17     n += sum[h-1];  //转化成整个二叉树中的编号
18     LL x = n;
19     anc1.push_back(x);  //目标节点的所有祖先
20     while(x != 1)
21     {
22         x /= 2;
23         anc1.push_back(x);
24     }
25     //for(int i = 0; i < anc1.size(); ++i) printf("%I64d  ", anc1[i]);
26 
27     LL node = 1;
28     bool choice = false;    //遍历防线(L or R)
29 
30     while(node != n)
31     {
32         vector<LL> anc2;    //当前叶子节点X的祖先
33         for(int i = 0; i < h; ++i)
34         {
35             anc2.push_back(node);
36             if(!choice) node = node * 2; else node = node * 2 + 1;
37             choice = !choice;
38         }
39         if(n == node) { ans += h; break; }
40         anc2.push_back(node);
41         reverse(anc2.begin(), anc2.end());
42         //for(int i = 0; i < anc2.size(); ++i) printf("%I64d  ", anc2[i]);
43 
44         for(int i = 1; i <= h; ++i) if(anc1[i] == anc2[i])
45         {//find LCA
46             ans += sum[i-1] + h - i + 1;
47             h = i - 1;      //更新树高
48             node = anc2[i-1];
49             if((anc2[i]<<1) == node)    //更新根节点的编号 及 遍历方向
50             {
51                 node = anc2[i] * 2 + 1;
52                 choice = false;
53             }
54             else
55             {
56                 node = (anc2[i] << 1);
57                 choice = true;
58             }
59             break;
60         }
61     }
62 
63     printf("%I64d\n", ans);
64 
65     return 0;
66 }
代码君

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4249319.html

相关文章:

什么叫安装文件索引服务器,搜出精彩 玩转Windows 2008系统心得

【IT168 专稿】不少朋友已经在不经意间与Windows Server 2008系统进行了亲密接触&#xff0c;在一段时间的接触之后&#xff0c;不知大家对该系统的文件搜索功能会有什么样的体会&#xff1f;其实&#xff0c;Windows Server 2008系统的文件搜索功能与以往相比有了很大进步&…

取eclipse console 打印字符串,判断日志是否有异常

2019独角兽企业重金招聘Python工程师标准>>> 1. 取得当前输入的console /*** 取得控制台的字符串的Docment* param processConsoleName 控制台名称&#xff0c;如在java application 中定义的名字为test ,则这个地方的输入为test即可* return null*/public stati…

PAT乙级1028

1028 人口普查 &#xff08;20 分)某城镇进行人口普查&#xff0c;得到了全体居民的生日。现请你写个程序&#xff0c;找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的&#xff0c;但不一定是合理的——假设已知镇上没有超过 200 岁的老人&#xff0c;而今天是…

Go 分布式学习利器(12)-- Go语言的扩展和复用

Go语言无法天然支持继承&#xff0c;但是又想要实现面向对象的特性。 即父类对象 使用子类对象初始化&#xff0c;那么该父类对象调用的函数就是子类实现的函数 &#xff0c;从而满足LSP&#xff08;子类交换原则&#xff09;。 案例一&#xff1a; Go语言 支持扩展父类的功能…

displaytag 导出

只使用displaytag的导出功能&#xff0c;表单展示用jqgrid实现。只需要后台修改一部分代码&#xff0c;其他的表单都能使用这个功能导出。导出四种文件格式&#xff1a;csv&#xff0c;excel&#xff0c;xml&#xff0c;pdf。 思路&#xff1a;在过滤器中处理&#xff0c;过滤器…

两个下拉框相关联ajax,触发第二个下拉框以显示基于从第一个下拉框中选择的值的值ajax...

我有两个引导程序下拉框。当我们点击另一个下拉菜单时&#xff0c;其中一个会根据用户选择的国家显示来自数据库的所有国家名称&#xff0c;另一个下拉菜单应该选择状态。 当我点击一个下拉菜单时&#xff0c;我做了一个ajax请求来显示国家名称。如何根据国家选择触发其他下拉菜…

使用apache服务器配置虚拟目录

安装好了apachephpmysql之后就像在自己电脑上安装wordpress玩玩&#xff0c;因为安装好之后根目录在D盘&#xff0c; 所以就想自己配置一个虚拟目录指向路径为D:\wordpress的wordpress 在httpd.conf中添加虚拟目录之后去访问localhost:88/myblog却出现了403错误&#xff0c;提示…

YARN的HA

拓展&#xff1a;线程与进程的区别 进程是由一个以上的的线程组成的 ps -ef 能出现的就是进程。 YARN HA hadoop001&#xff1a;zk rm(zkfc) nmhadoop002&#xff1a;zk rm(zkfc) nmhadoop003&#xff1a;zk nm ZKFC: 线程 只作为RM进程的一个线程而非独立的进程存在 RMStateSt…

一个复杂的存储过程

首先说明一下我这个存储过程的功能&#xff1a; 根据不同的查询条件组合进行查询数据&#xff0c;数据库中有项目信息表Project 有项目区域表ProjectArea 项目信息表Project和项目区域表的关联是通过ProjectArea和AreaID进行一对一关联&#xff0c;项目区域信息中的信息有所属关…

Go 分布式学习利器(13)-- Go语言的多态

文章目录1. 基本的多态实现2. 空接口与断言3. Go接口的最佳实践1. 基本的多态实现 我们知道C中实现多态是通过虚函数表 和 继承来 实现的。 类似如下代码&#xff1a; class Programmar{ public:virtual void write_hello_world() 0; }class GoProgrammar: public Programma…

服务器搭建虚拟win云服务,云服务器创建win10虚拟机

云服务器创建win10虚拟机 内容精选换一换弹性云服务器(Elastic Cloud Server&#xff0c;以下简称ECS)是由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算服务器&#xff0c;同时它结合VPC、虚拟防火墙、数据多副本保存等能力&#xff0c;为您打造一个高效、可…

预编译 ASP.NET 网站以进行部署

预编译 ASP.NET 网站以进行部署和更新 打开一个命令窗口并定位到包含 .NET Framework 的文件夹。 .NET Framework 将安装在以下位置。 %windir%\Microsoft.NET\Framework\version运行 aspnet_compiler 命令&#xff0c;在命令提示符下键入以下内容&#xff0c;同时指定源&…

Go 分布式学习利器(14)-- Go语言的错误处理

1. Go 的错误机制 Go 语言的错误机制中与其他语言的主要差异如下&#xff1a; 没有异常机制error 类型实现了 error接口type error interface {Error() string }可以通过errors.New来快速创建错误实例errors.New(" num is not in range[0,100]")如下测试代码演示基…

30 个 php 操作 redis 常用方法代码例子

这篇文章主要介绍了 30 个 php 操作 redis 常用方法代码例子 , 本文其实不止 30 个方法 , 可以操作 string 类型、 list 类型和 set 类型的数据 , 需要的朋友可以参考下redis 的操作很多的,以前看到一个比较全的博客,但是现在找不到了。查个东西搜半天,下面整理一下php 处理 re…

电脑机时,电脑死机时,为啥会忍不住扇它一巴掌?

我们为什么会把自己的愤怒发泄在机器人呢&#xff1f;对于人们为何会打机器这个问题&#xff0c;国外媒体Hopes&Fears请教了很多专家&#xff0c;包括精神治疗医师、机械工程师、愤怒管理专家以及流行文化专家。有一场非常重要的会议就要召开了&#xff0c;你必须在五分钟时…

Android所有系统版本USB调试模式打开方法

参考 Android所有系统版本USB调试模式打开方法

docker(4)docker的网络,自定义网桥

Docker 的网络 运行 ifconfig 找到 docker0 : 虚拟网卡默认网卡名称为docker0 查看docker 的网桥&#xff1a; 我这里默认们没有进行安装 网桥管理设备&#xff1a;进行安装一下&#xff1b; yum install bridge-utils 命令&#xff1a;查看网桥crctl show: 注意上图中的i…

Go 分布式学习利器(15) -- Go 实现 深搜和广搜

强化语法&#xff0c;回顾算法。 通过Go语言实现 深度优先搜索 和 广度优先搜索&#xff0c;来查找社交网络中的三度好友关系&#xff08;三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 &#xff0c;图递增三层好友关系&#xff09;。 涉及到的Go语言语法&#xff1a…

css背景属性

CSS背景&#xff1a; 属性 描述 background 简写属性&#xff0c;作用是将背景属性设置在一个声明中。 background-attachment 背景图像是否固定或者随着页面的其余部分滚动。 background-color 设置元素的背景颜色。 background-image 把图像设置为背景。 backgroun…

scp服务器复制命令跳过已有的文件夹,Linux scp命令复制文件到其它服务器上

例如&#xff1a;我想将59.64.30.101中的文件复制到59.64.28.78服务器。步骤如下&#xff1a;1.59.64.30.101终端执行如下命令#ssh-keygen -t rsa2.密钥生成后会在/root/.ssh/文件夹下产生两个文件id_rsa id_rsa.pub将id_rsa.pub文件复制到59.64.28.78执行如下命令scp id_rsa.p…

Win2008学习(二),群集的仲裁配置

当群集中的节点发生故障时&#xff0c;会有其它节点继续提供服务。不过&#xff0c;当节点之间的通信有问题或太多故障节点时&#xff0c;群集服务就会停止&#xff0c;可是群集可以容纳多少个节点故障呢&#xff1f;这要由仲裁配置&#xff08;Quorum Configuration&#xff0…

前端token刷新并发处理

添加中间件&#xff0c;处理多个前端来的请求时&#xff0c;如果token需要刷新&#xff0c;先查看缓存&#xff0c;如果没有就在redis中做个标志位进行短期缓存&#xff0c;其他的请求发现缓存中的token&#xff0c;就不再刷新token了。这样就避免了重复刷新token的问题。 中间…

Rocksdb 的一些参数调优策略

文章目录写性能优化CF write buffer sizeDB write buffer size读性能优化block cachebloom filterCompression 压缩Compaction优化通用workload的配置本文在rocksdb 整个读写链路基础上给出一些简单的调优策略&#xff0c;主要是通过调整一些 参数来满足我们大多数workload的性…

Java项目:酒店管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 主要技术:java springmvc mybatis mysql tomcat js jauery jsp log4j等一些常见基本技术适用于Java毕设和学习使用 主要实现&#xff1a; 前台&#xff1a;登录、注册、酒店信息浏览、搜索酒店信息…

设计模式之装饰模式(Java实现)

“怎么了&#xff0c;鱼哥&#xff1f;” “唉&#xff0c;别提了&#xff0c;网购了一件衣服&#xff0c;结果发现和商家描述的差太多了&#xff0c;有色差就算了&#xff0c;质量还不好&#xff0c;质量不好就算了&#xff0c;竟然大小也不行&#xff0c;说好的3个X&#xff…

ueditor与七牛云存储结合

2019独角兽企业重金招聘Python工程师标准>>> 摘要&#xff1a; ueditor与七牛云存储结合&#xff0c;主要是表单api. ueditor上传图片到七牛云存储 ueditor结合七牛传图片 传统上&#xff0c;图片是存在自己的服务器上(图片->自己服务器)&#xff0c;如果使用…

微服务网关从零搭建——(七)更改存储方式为oracle

资源准备&#xff1a; 下载开源项目 新建oracle表&#xff1a; -- ---------------------------- -- Table structure for OcelotGlobalConfiguration -- ----------------------------CREATE TABLE OcelotGlobalConfiguration (Id NUMBER(11) NOT NULL ,GatewayName NVARCHAR2…

Rocksdb 的优秀代码(一) -- 工业级分桶算法实现分位数p50,p99,p9999

文章目录基本概念普通的分位数计算Rocksdb中的应用rocksdb中的分桶算法结果展示rocksdb 分桶算法实现一些总结 和 相关论文我们知道一个完整的监控系统必须存在p99/p999等分位数指标&#xff0c;作为系统可用性的评判标准之一。而像开源监控系统中做的很不错的grafana和prometh…

Java项目:前后端分离疫情防疫平台设计和实现(java+springmvc+VUE+node.js+mybatis+mysql+springboot+redis+jsp)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 主要技术&#xff1a;Java、springmvc、VUE、node.js、mybatis、mysql、tomcat、jquery、layui、bootstarp、JavaScript、html、css、jsp、log4j等一些常见的基本技术。 主要模块功能有&#xff1a; 管理员…

js里的匿名函数 数组排序

// 匿名函数&#xff1a;其实就是函数的简写形式 var method function(){ alert("123"); } method(); // 匿名函数可以用于事件的处理 function func(){ alert("456"); } window.οnlοadfunc; window.οnlοadfunction(){ alert("加载完成&#xff0…