Codeforces Round #363 (Div. 2)
A题 http://codeforces.com/problemset/problem/699/A
非常的水,两个相向而行,且间距最小的点,搜一遍就是答案了。
#include <cstdio>
#include <algorithm>
using namespace std;
struct node
{
int x;char ch;
}s[+];
bool cmp(node& a,node& b)
{
return a.x<b.x;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
getchar();
;i<n;i++)
scanf("%c",&s[i].ch);
;i<n;i++)
scanf("%d",&s[i].x);
sort(s,s+n,cmp);
int ans = 0x3f3f3f3f;
;i<n;i++)
{
].ch == 'R')
{
].x)/;
ans = min(ans,dis);
}
}
if(ans == 0x3f3f3f3f)
printf("-1\n");
else
printf("%d\n",ans);
}
;
}
B题 http://codeforces.com/problemset/problem/699/B
讲道理 也是水题 然而我在实现的时候 实现不好这个问题 然而梦天2333 毕竟天神啪啪啪随便写写就A了。
这个代码是参考网上的思路搞的,关键是一个V数组和一个C数组记录,行和列的情况。
还有读入字符串的时候要小心的,因为它题目中默认的地图是从1开始的,如果直接scanf ma[i]这样读进来 就是每行都从0开始了,和题意不符
scanf();//输入的一个小技巧
其实思路和它标程是一样的,就是没码出来。
#include <cstdio>
#include <cstring>
#define mem0(x) memset(x,0,sizeof(x))
][];
],C[];
int tot,fi,fj,n,m;
bool judge()
{
;i<=n;i++)
{
;j<=m;j++)
{
int cur = R[i] + C[j];
if(ma[i][j] == '*') cur--;
if(tot == cur)
{
fi = i, fj = j;
return true;
}
}
}
return false;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
mem0(R);
mem0(C);
;i<=n;i++)
scanf();//输入的一个小技巧
tot = ;
;i<=n;i++)
;j<=m;j++)
if(ma[i][j] == '*')
{
R[i] ++;
C[j] ++;
tot++;
}
if(judge())
printf("YES\n%d %d\n",fi,fj);
else
printf("NO\n");
}
;
}
C题 http://codeforces.com/problemset/problem/698/A
dp,小心一下 任何一种情况下都是能选择休息的。
#include <cstdio>
#include <map>
#include <queue>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
#define mem0(x) memset(x,0,sizeof(x))
#define mem1(x) memset(x,-1,sizeof(x))
typedef long long LL;
const int INF = 0x3f3f3f3f;
int a;
][];
int main()
{
int n;
scanf("%d",&n);
;i<=n;i++)
{
scanf("%d",&a);
)
{
dp[i][] = max(max(dp[i-][], dp[i-][]), dp[i-][]);
}
)
{
dp[i][] = max(max(dp[i-][],dp[i-][]),dp[i-][]);
dp[i][] = max(dp[i-][], dp[i-][]) + ;
}
)
{
dp[i][] = max(max(dp[i-][],dp[i-][]),dp[i-][]);
dp[i][] = max(dp[i-][], dp[i-][]) + ;
}
else
{
dp[i][] = max(max(dp[i-][],dp[i-][]),dp[i-][]);
dp[i][] = max(dp[i-][], dp[i-][]) + ;
dp[i][] = max(dp[i-][], dp[i-][]) + ;
}
}
;
;i<;i++)
maxn = max(maxn, dp[n][i]);
printf("%d\n",n-maxn);
;
}
D题 http://codeforces.com/problemset/problem/698/B
这题挺难想的当时。先思考整个问题,无非是由若干个环和若干棵树来组成了最初的图。
如果都是树,那么很好解决,选一棵树作为主树,其他的树根直接链接到主树的根上就解决问题了,修改次数应该是根结点的总数目-1。
如果都是环,那么,把某个环的某个结点接到自己身上,形成一棵树之后,其他的环直接接上来就好了。
如果是环和树都有,那么只要把环接到主树上就好了。
#include <cstdio>
#include <map>
#include <queue>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
#define mem0(x) memset(x,0,sizeof(x))
#define mem1(x) memset(x,-1,sizeof(x))
typedef long long LL;
const int INF = 0x3f3f3f3f;
];
];
int uf_find(int x)
{
if(x==pa[x]) return x;
return pa[x] = uf_find(pa[x]);
}
int main()
{
int n,cnt,root;
scanf("%d",&n);
//uf_init
;i<=n;i++) pa[i] = i ;
cnt = , root = ;
;i<=n;i++)
{
scanf("%d",&a[i]);
if(i == a[i])
{
cnt++,root = i;
}
else
{
int fx = uf_find(i);
int fy = uf_find(a[i]);
if(fx == fy) a[i] = i,cnt++;//成环
else pa[fx] = fy;
}
}
)
{
;i<=n;i++)
{
if(i == pa[i])
{
root = i;
break;
}
}
cnt++;
}
printf();
;i<=n;i++)
{
if(i == a[i]) a[i] = root;//根只能有一个
printf("%d%c",a[i],i==n?'\n':' ');
}
;
}
Codeforces Round #363 (Div. 2)的更多相关文章
- Codeforces Round 363 Div. 1 (A,B,C,D,E,F)
Codeforces Round 363 Div. 1 题目链接:## 点击打开链接 A. Vacations (1s, 256MB) 题目大意:给定连续 \(n\) 天,每天为如下四种状态之一: 不 ...
- Codeforces Round #363 (Div. 1) B. Fix a Tree 树的拆环
题目链接:http://codeforces.com/problemset/problem/698/B题意:告诉你n个节点当前的父节点,修改最少的点的父节点使之变成一棵有根树.思路:拆环.题解:htt ...
- Codeforces Round #363 (Div. 2) D. Fix a Tree —— 并查集
题目链接:http://codeforces.com/contest/699/problem/D D. Fix a Tree time limit per test 2 seconds memory ...
- Codeforces Round #363 (Div. 2) B. One Bomb —— 技巧
题目链接:http://codeforces.com/contest/699/problem/B 题解: 首先统计每行每列出现'*'的次数,以及'*'出现的总次数,得到r[n]和c[m]数组,以及su ...
- Codeforces Round #363 (Div. 2) C. Vacations —— DP
题目链接:http://codeforces.com/contest/699/problem/C 题解: 1.可知每天有三个状态:1.contest ,2.gym,3.rest. 2.所以设dp[i] ...
- Codeforces Round #363 (Div. 2)A-D
699A 题意:在一根数轴上有n个东西以相同的速率1m/s在运动,给出他们的坐标以及运动方向,问最快发生的碰撞在什么时候 思路:遍历一遍坐标,看那两个相邻的可能相撞,更新ans #include< ...
- Codeforces Round #363 Div.2[111110]
好久没做手生了,不然前四道都是能A的,当然,正常发挥也是菜. A:Launch of Collider 题意:20万个点排在一条直线上,其坐标均为偶数.从某一时刻开始向左或向右运动,速度为每秒1个单位 ...
- Codeforces Round #363 (Div. 2) One Bomb
One Bomb 题意: 只有一个炸弹,并且一个只能炸一行和一列的'*',问最后能否炸完所以'*',如果可以输出炸弹坐标 题解: 这题做的时候真的没什么好想法,明知道b题应该不难,但只会瞎写,最后越写 ...
- Codeforces Round #363 (Div. 2)->C. Vacations
C. Vacations time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
随机推荐
- MQTT开发笔记之《MQTT Server》
MQTT SERVER 性能测试报告 : http://w3yyb.sinaapp.com/archives/1601各个MQTT SERVER功能列表: http://blog.lenix.xyz/ ...
- wait、notify、sleep、interrupt对比分析
对比分析Java中的各个线程相关的wait().notify().sleep().interrupt()方法 方法简述 Thread类 sleep:暂停当前正在执行的线程:(类方法) yield:暂停 ...
- Canvas绘制图形
1.Canvas绘制一个蓝色的矩形 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
- Unicode文件读取 出现隐藏字符 (大坑)
C#读取文件..分析时发现应该15位的.. str.Lenght 却 16位.. 字符串复制出来一位位的数..就是15位.. 纳闷中突然想起来会不会是隐藏字符.. 输出 str[0].ToBytes( ...
- 调整Virtual Box硬盘大小
我在Mac下使用Virtual Box安装Win7的虚拟机.因为之前装过Win7的32位版.现在因为机器内存升到8G,就可以划出4G来支持Win7虚拟机.所以就重新安装了Win7的64位版.在创建虚拟 ...
- Unity里的Mesh属性
----------------------------------------------------------------------------------------------- Mesh ...
- NOSDK--SDK一键打包及统一接入的实现(前言)
前言 一,一键打包的实现 1.1 shell脚本执行流程介绍 1.2 自动刷新mk文件的脚本介绍 1.3 编译及拷贝资源的脚本介绍 1.4 打包及签名的脚本介绍 1.5 mac下的脚本环境配置及脚本的 ...
- 试图加载格式不正确的程序。 (异常来自HRESULT:0x8007000B)
异常来自HRESULT:0x8007000B 缘由:在64位操作系统下IIS发布32位的项目,报“项目依赖的dll无法读取,试图加载格式不正确的程序”错误. 原因:程序集之间的通讯要么全是64位环 ...
- jQuery如何判断元素是否是隐藏的?
jQuery函数简介: is(expr) 用一个表达式来检查当前选择的元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true. 如果没有元素符合,或者表达式无效,都返回'false'. 注 ...
- shell--1.shell 相关及变量
1.shell脚本解释器 Bourme Shell (/usr/bin/sh 或 /bin/sh ) Bourme Again Shell ( /bin/bash ) C Shell ( /usr/b ...