Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)
A. Be Positive
题意:给出一个数组 每个树去除以d(d!=0)使得数组中大于0的数 大于ceil(n/2) 求任意d
思路:数据小 直接暴力就完事了
- #include<bits/stdc++.h>
- using namespace std;
- const int maxn=;
- double a[maxn];
- int main(){
- int n;
- scanf("%d",&n);
- for(int i=;i<n;i++){
- scanf("%lf",&a[i]);
- }
- int temp=ceil(n*1.0/);
- for(int i=-1e3;i<=1e3;i++){
- if(i==)continue;
- int flag=;
- for(int j=;j<n;j++){
- if(a[j]/i>){
- flag++;
- }
- }
- if(flag>=temp){
- printf("%d\n",i);
- return ;
- }
- }
- printf("0\n");
- return ;
- }
B. Two Cakes
题意:给出一个1-n的数组 每个数字都出现两编 两个人 每个人从1--n开始按大小选择数字(代价为数组上走多远距离) 每个数字只能选择一次 问最少要走多久
思路:把每个数的位置记一下 然后直接算上一个位置到下一个位置的最小和是多少 例如 要算2 的 直接算2个1分别到两个2的两种情况即可,因为这是无后效性的
枚举到哪个数字 当前时刻两个人肯定在上一个位置 例如要到n时两个人肯定在n-1出发
- #include<bits/stdc++.h>
- using namespace std;
- const int maxn=;
- double a[maxn];
- int main(){
- int n;
- scanf("%d",&n);
- for(int i=;i<n;i++){
- scanf("%lf",&a[i]);
- }
- int temp=ceil(n*1.0/);
- for(int i=-1e3;i<=1e3;i++){
- if(i==)continue;
- int flag=;
- for(int j=;j<n;j++){
- if(a[j]/i>){
- flag++;
- }
- }
- if(flag>=temp){
- printf("%d\n",i);
- return ;
- }
- }
- printf("0\n");
- return ;
- }
C. Connect
题意:给出一张图 可以在不同连通快之间做通道 但是会消耗 算术距离的代价 问最小代价是多少
思路: 图很小 只有50*50 所以直接把起点和终点的连通的快的坐标记下来 然后暴力求最小代价即可
- #include<bits/stdc++.h>
- using namespace std;
- const int maxn=;
- int n;
- char mp[maxn][maxn];
- int vis[maxn][maxn];
- struct Node{
- int x,y;
- }s1[maxn*maxn],s2[maxn*maxn];
- int dy[]={
- ,-,,
- };
- int dx[]={
- ,,-,
- };
- void dfs(int x,int y,int num){
- vis[x][y]=num;
- for(int i=;i<;i++){
- int tx=x+dx[i],ty=y+dy[i];
- if(tx<||tx>n||ty<||ty>n)continue;
- if(vis[tx][ty]!=||mp[tx][ty]=='')continue;
- dfs(tx,ty,num);
- }
- }
- int dist(int x1,int y1,int x2,int y2){
- return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
- }
- int main(){
- scanf("%d",&n);
- int sx,sy,tx,ty;
- scanf("%d%d%d%d",&sx,&sy,&tx,&ty);
- for(int i=;i<=n;i++){
- scanf("%s",mp[i]+);
- }
- int temp=;
- memset(vis,,sizeof(vis));
- for(int i=;i<=n;i++){
- for(int j=;j<=n;j++){
- if(vis[i][j]==&&mp[i][j]==''){dfs(i,j,temp);temp++;}
- }
- }
- if(vis[sx][sy]==vis[tx][ty]){
- printf("0\n");
- return ;
- }
- int num1=,num2=;
- for(int i=;i<=n;i++){
- for(int j=;j<=n;j++){
- if(vis[i][j]==vis[sx][sy]){
- s1[num1].x=i,s1[num1++].y=j;
- }
- if(vis[i][j]==vis[tx][ty]){
- s2[num2].x=i,s2[num2++].y=j;
- }
- }
- }
- int ans=maxn*maxn*;
- for(int i=;i<num1;i++){
- for(int j=;j<num2;j++)
- {
- ans=min(ans,dist(s1[i].x,s1[i].y,s2[j].x,s2[j].y));
- }
- }
- cout<<ans<<endl;
- return ;
- }
D2. Toy Train
题意:一个1-n的圈 火车在这个圈上顺时针旋转 每个点有 任务:把该点的糖果送到 另外一个点去 在一个点上只能往上装一个糖果,但是可以卸下任意个
问从每个点出发 所需要的最短时间 直接把每个点从1号出发所需要的最长时间预处理一下 然后从1号点枚举 这样每个点的时间就是 最长时间减去 枚举到的起点和1之间的距离
思路: 对于一个点x假设有k个任务 那么 当前点最少需要走 完整圈(k-1)圈 然后走剩下的那个点
time= (k-1) *n + dist(start,x) +dist(x,最后一个要送的点)
所以起点选择和x点相同 最后一个点在顺时针方向上离x点最近 可以得到最小时间
暴力每个点即可
- #include<bits/stdc++.h>
- using namespace std;
- const int maxn=+;
- int len[maxn],b[maxn],ans[maxn];
- vector<int>a[maxn];
- multiset<int>s;
- int main(){
- int n,m;
- scanf("%d%d",&n,&m);
- int x,y;
- for(int i=;i<m;i++){
- scanf("%d%d",&x,&y);
- if(x>y)y+=n;
- a[x].push_back(y);
- }
- for(int i=;i<=n;i++){
- if(a[i].size()==)len[i]=;
- else {
- sort(a[i].begin(),a[i].end());
- len[i]=a[i][]+(a[i].size()-)*n;
- }
- s.insert(len[i]);
- }
- for(int i=;i<=n;i++){
- ans[i]=*(--s.end())-i;
- if(len[i]!=){
- s.erase(s.find(len[i]));
- s.insert(len[i]+n);
- }
- }
- for(int i=;i<=n;i++)printf("%d ",ans[i]);
- return ;
- }
Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)的更多相关文章
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题解
Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题目链接:https://codeforces.com/contest/1130 ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) C(二分+KMP)
http://codeforces.com/contest/1129/problem/C #include<bits/stdc++.h> #define fi first #define ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) A - D2
A. Be Positive 链接:http://codeforces.com/contest/1130/problem/A 题意: 给一段序列,这段序列每个数都除一个d(−1e3≤d≤1e3)除完后 ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)C. Morse Code
题意:给你n个01字符,每次问你前缀的所有本质不同的子串,由摩斯密码组成的方案数和. 题解:离线处理,把字符建sam,通过topo序来dp计算每个节点表示的子串方案数的和.统计答案时,把n个字符挨个匹 ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)
A - Toy Train 很显然,一个站有多少个糖,那么就要从这个点运多少次.设第i个点有\(a_i\)个糖,那么就要转\(a_i-1\)圈,然后再走一段.很显然最后一段越小越好. 然后枚举起点后, ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) 题解
A. Toy Train 时间限制:2 seconds 内存限制:256 megabytes 题意 有编号111~n(n≤5000)n(n\le 5000)n(n≤5000)的车站顺时针呈环排列,有m ...
- Codeforces Round 542 (Div. 2)
layout: post title: Codeforces Round 542 (Div. 2) author: "luowentaoaa" catalog: true tags ...
- Codeforces Round #542 题解
Codeforces Round #542 abstract I决策中的独立性, II联通块染色板子 IIIVoronoi diagram O(N^2 logN) VI环上距离分类讨论加取模,最值中的 ...
- int和integer;Math.round(11.5)和Math.round(-11.5)
int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默认值为null,即Integer可 ...
随机推荐
- C# 使用NPOI出现超过最大字体数和单元格格式变成一样的解决
在使用NPOI写入Excel文件的时候出现“它已经超出最多允许的字体数”,查询资料发现是字体创建太多的原因,需要将常用字体创建好,传入CellStyle中.参考(http://www.cnblogs. ...
- Android如何实现超级棒的沉浸式体验
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由brzhang发表于云+社区专栏 做APP开发的过程中,有很多时候,我们需要实现类似于下面这种沉浸式的体验. 沉浸式体验 一开始接触的 ...
- java线程介绍
文章讲解要点 1.线程创建几种方式2.线程常见设置方法,包括优先级.优先级休眠.停止等3.多线程间的数据交互与锁机制4.项目源码下载 线程介绍.png 一.线程创建方式 常见的线程创建方法以下三种 ...
- 【原】Java学习笔记022 - 字符串
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 字符串 // 定义 ...
- go语言学习-常用命令(四)
go常用命令 go get:获取远程包(得装git) go run:直接运行程序(写代码时调试用) go build:测试编译,检查是否有编译错误 go fmt:格式化代码(一般不咋用,IDE都自带了 ...
- 安装ESXi部署OVF详细步骤
整个安装部署过程均在个人环境进行.欧克,我们现在开始. 一.安装ESXi 1.Enter回车 2.Enter回车继续 3.F11,接受继续 4.Enter,回车继续(选择安装ESXi的设备) 5.默认 ...
- Java基础——1 一切都是对象
- 英语口语练习系列-C12-不了解
词汇 air [eə(r)] n. 空气 fresh air 新鲜的空气 warm air 暖暖的空气 I like to air the room. 我喜欢给房间通气. on the air 正在播 ...
- 英语口语练习系列-C07-谈女孩
<将进酒>·李白 君不见黄河之水天上来,奔流到海不复回. 君不见高堂明镜悲白发,朝如青丝暮成雪. 人生得意须尽欢,莫使金樽空对月. 天生我材必有用,千金散尽还复来. 烹羊宰牛且为乐,会须一 ...
- 日志切割之Logrotate
1.关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处 ...