http://codeforces.com/contest/699

ALaunch of Collider

题意:n个球,每个球向左或右,速度都为1米每秒,问第一次碰撞的时间,否则输出-1

贪心最短时间一定在RL中,R右边一定有L,L左边一定有R

 // #pragma comment(linker, "/STACK:102c000000,102c000000")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <string>
#include <algorithm>
#include <list>
#include <map>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdlib>
// #include <conio.h>
using namespace std;
#define clc(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
const int N = 1e5+;
const int M = 1e6+;
const int MOD = 1e9+;
#define LL long long
#define mi() (l+r)>>1
double const pi = acos(-);
const double eps = 1e-;
void fre() {
freopen("in.txt","r",stdin);
} // inline int r() {
// int x=0,f=1;char ch=getchar();
// while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
// while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
// } int a[];
int main(){
int n;
string s;
scanf("%d",&n);
cin>>s;
for(int i=;i<n;i++){
scanf("%d",&a[i]);
}
int st=s.find('R');
if(st==-){
printf("-1\n");
exit();
}
int ans=inf;
bool flag=false;
for(int i=st+;i<(int)s.size();i++){
if(s[i]=='L'){
ans=min(ans,(a[i]-a[st])/);
flag=true;
}
else
st=i;
}
if(!flag) printf("-1\n");
else printf("%d\n",ans);
return ;
}

BOne Bomb

题意:给你一个n*m的图 问你能不能站在一个点上就把所有*覆盖完

思路:注意全是.的情况

开两个数组一个记录每行的*,另一个记录每列的*

 // #pragma comment(linker, "/STACK:102c000000,102c000000")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <string>
#include <algorithm>
#include <list>
#include <map>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdlib>
// #include <conio.h>
using namespace std;
#define clc(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
const int N = 1e5+;
const int M = 1e6+;
const int MOD = 1e9+;
#define LL long long
#define mi() (l+r)>>1
double const pi = acos(-);
const double eps = 1e-;
void fre() {
freopen("in.txt","r",stdin);
}
// inline int r() {
// int x=0,f=1;char ch=getchar();
// while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
// while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
// }
char g[][];
int x[],y[];
int main(){
// fre();
int n,m;
int sum=;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) {
scanf("%s",g[i]+);
for(int j=;j<=m;j++){
if(g[i][j]=='*'){
x[i]++,y[j]++,sum++;
}
}
}
int ansx,ansy;
bool flag=false;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if((x[i]+y[j]-(g[i][j]=='*'))==sum){
ansx=i,ansy=j;
flag=true;
break;
}
}
if(flag) break;
}
if(flag){
puts("YES");
printf("%d %d\n",ansx,ansy);
}
else printf("NO\n");
return ;
}

CC - Vacations

题意:0代表必须休息,1代表只能做运动,2代表只能写作业,3代表两种都可以,然后不能连续两天做同样的事情,除了休息,问你最少休息多少天

思路:贪心。。。。

 // #pragma comment(linker, "/STACK:102c000000,102c000000")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <string>
#include <algorithm>
#include <list>
#include <map>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdlib>
// #include <conio.h>
using namespace std;
#define clc(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
const int N = 1e5+;
const int M = 1e6+;
const int MOD = 1e9+;
#define LL long long
#define mi() (l+r)>>1
double const pi = acos(-);
const double eps = 1e-;
void fre() {
freopen("in.txt","r",stdin);
}
// inline int r() {
// int x=0,f=1;char ch=getchar();
// while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
// while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
// }
int a[];
int main(){
int n;
int ans=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]==) ans++;
}
for(int i=;i<=n;i++){
if(a[i]==) continue;
else if((a[i]==&&a[i-]==)||(a[i]==&&a[i-]==)) continue;
else if(a[i]==&&a[i-]==){ a[i]=;ans++;continue;}
else if(a[i]==&&a[i-]==){a[i]=;ans++;continue;}
else if(a[i]==&&a[i-]==){a[i]=;continue;}
else if(a[i]==&&a[i-]==){a[i]=;continue;}
}
printf("%d\n",ans);
return ;
}

DD - Fix a Tree

题意:n个数,ai是i的祖先,问最小的步数把图变成一棵树

思路:

并查集判断

首先孤点可以形成根;对于环,我们把最后一条边连到根上;全是环,任选一个环上点当作根;最小步数一定是cnt-1

 // #pragma comment(linker, "/STACK:102c000000,102c000000")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <string>
#include <algorithm>
#include <list>
#include <map>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdlib>
// #include <conio.h>
using namespace std;
#define clc(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
const int N = 2e5+;
const int M = 1e6+;
const int MOD = 1e9+;
#define LL long long
#define mi() (l+r)>>1
double const pi = acos(-);
const double eps = 1e-;
void fre() {
freopen("in.txt","r",stdin);
}
// inline int r() {
// int x=0,f=1;char ch=getchar();
// while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
// while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
// }
int fa[N];
int a[N];
int find(int x){ return fa[x]==x?x:fa[x]=find(fa[x]);}
int main(){
int n;
int cnt=,root=-;
scanf("%d",&n);
for(int i=;i<=n;i++) fa[i]=i;
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]==i){root=i;cnt++;}
else{
int x=find(i),y=find(a[i]);
if(x==y){
cnt++;
a[i]=i;
}
else
fa[x]=y;
}
}
if(root==-){
for(int i=;i<=n;i++){
if(a[i]==i){
root=i;
cnt++;
break;
}
}
}
printf("%d\n",cnt-);
for(int i=;i<=n;i++){
if(a[i]==i) a[i]=root;
printf("%d%c",a[i],i==n?'\n':' ');
}
return ;
}

Codeforces Round #363的更多相关文章

  1. Codeforces Round 363 Div. 1 (A,B,C,D,E,F)

    Codeforces Round 363 Div. 1 题目链接:## 点击打开链接 A. Vacations (1s, 256MB) 题目大意:给定连续 \(n\) 天,每天为如下四种状态之一: 不 ...

  2. Codeforces Round #363 (Div. 2)

    A题 http://codeforces.com/problemset/problem/699/A 非常的水,两个相向而行,且间距最小的点,搜一遍就是答案了. #include <cstdio& ...

  3. Codeforces Round #363 (Div. 1) B. Fix a Tree 树的拆环

    题目链接:http://codeforces.com/problemset/problem/698/B题意:告诉你n个节点当前的父节点,修改最少的点的父节点使之变成一棵有根树.思路:拆环.题解:htt ...

  4. 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 ...

  5. Codeforces Round #363 (Div. 2) B. One Bomb —— 技巧

    题目链接:http://codeforces.com/contest/699/problem/B 题解: 首先统计每行每列出现'*'的次数,以及'*'出现的总次数,得到r[n]和c[m]数组,以及su ...

  6. 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] ...

  7. Codeforces Round #363 (Div. 2)A-D

    699A 题意:在一根数轴上有n个东西以相同的速率1m/s在运动,给出他们的坐标以及运动方向,问最快发生的碰撞在什么时候 思路:遍历一遍坐标,看那两个相邻的可能相撞,更新ans #include< ...

  8. Codeforces Round #363 LRU(概率 状压DP)

    状压DP: 先不考虑数量k, dp[i]表示状态为i的概率,状态转移方程为dp[i | (1 << j)] += dp[i],最后考虑k, 状态表示中1的数量为k的表示可行解. #incl ...

  9. Codeforces Round #363 Fix a Tree(树 拓扑排序)

    先做拓扑排序,再bfs处理 #include<cstdio> #include<iostream> #include<cstdlib> #include<cs ...

随机推荐

  1. C语言中时间调用处理的相关函数介绍

    asctime(将时间和日期以字符串格式表示) 相关函数:time,ctime,gmtime,localtime 表头文件:#include<time.h> 定义函数:char * asc ...

  2. jQuery 、js 设置 显示隐藏

    小问题   jQuery 操作方式: $("#ddl").parent().attr("style", "display:none"); j ...

  3. ActiveMQ之消息指针

    消息指针(Message cursor)是activeMQ里一个非常重要的核心类,它是提供某种优化消息存储的方法.消息中间件的实现一般都是当消费者准备好消费消息的时候,它会从持久化存储中一批一批的读取 ...

  4. Android之NDK编程(JNI)

    转自:http://www.cnblogs.com/xw022/archive/2011/08/18/2144621.html NDK编程入门--C回调JAVA方法   一.主要流程 1.  新建一个 ...

  5. BZOJ 1923 外星千足虫(高斯消元)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1923 题意:有n个数字,m次测试.每个数字为0或者1.每次测试选出一些数字出来把他们加起 ...

  6. Android Studio Gradle

    http://blog.zhaiyifan.cn/2016/03/14/android-new-project-from-0-p2/

  7. Asp.Net MVC Views页面不包含“GetEnumerator”的公共定义

    “/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS1579: “Web.Model ...

  8. 由于管理员设置的策略,该磁盘处于脱机状态-Win 2008 R2

    问题截图: 做了个小说网站www.114369.cn,使用的是云主机,系统是Win 2008 R2,进入服务器后发现磁盘有问题 只有c盘,没有d盘,提示:由于管理员设置的策略,该磁盘处于脱机状态 解决 ...

  9. highcharts 饼图显示数据比例如何保留二位小数

    var NewPerCent=parseFloat(NewPerCent.toString()).toFixed(2);return '<b>'+ this.point.name +'&l ...

  10. win7x64下的redis安装与使用

    先引用百度百科的一段话吧,具体可以到百科查看吧. Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年 ...