翻车!翻车!

codeforces782A

A题:

水。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int num[100010];
int main()
{
int n,x;
memset(num,0,sizeof(num));
scanf("%d",&n);
int sum=0,ans=0;
for(int i=1;i<=2*n;i++)
{
scanf("%d",&x);
if(!num[x])
{
num[x]++;
sum++;
}
else
{
sum--;
num[x]--;
}
ans=max(ans,sum);
}
printf("%d\n",ans);
return 0;
}

codeforces782B

B题:

三分,最短时间的位置位于最大位置和最小位置区间内,而时间是咋算的?所有点到位置的max,so两边扩散,肯定是越来越大,凹形曲线,三分求极值。

PS:注意精度1e-6.

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const double eps=1e-6;
const int N=6e4+10;
struct asd{
double x,v;
}e[N];
int n;
bool cmp(asd a,asd b)
{
if(a.x<b.x) return true;
return false;
} double fun(double x)
{
double ans=0.0;
for(int i=1;i<=n;i++)
if(ans<(fabs(e[i].x-x)/e[i].v))
ans=(fabs(e[i].x-x)/e[i].v);
return ans;
} int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lf",&e[i].x);
for(int i=1;i<=n;i++)
scanf("%lf",&e[i].v);
sort(e+1,e+n+1,cmp);
double Left=e[1].x,Right=e[n].x;
double mid, midmid;
double mid_value, midmid_value;
while (Left +eps < Right)
{
mid = (Left + Right) / 2;
midmid = (mid + Right) / 2;
mid_value = fun(mid);
midmid_value = fun(midmid);
///求最大值改成>= 最小值改成<=
if (mid_value <= midmid_value) Right = midmid;
else Left = mid;
}
double ans=fun(Left);
printf("%.9lf\n",ans);
return 0;
}

codeforces782C

C题:

利用BFS可以轻松处理。

BFS是一层一层的,对于每个结点的儿子结点,都会有一些可以使用的颜色,except(他父亲的颜色,他父亲的父亲的颜色)。

外送两个案例:

7
1 2
3 2
2 4
4 5
5 6
5 7 7
1 2
2 3
2 4
2 5
5 6
5 7

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL; const int N=4e5+10; struct asd{
int to;
int next;
}e[N];
int head[N],tol;
bool vis[N];
int col[N],pre[N],in[N],t; void BFS(int pos)
{
queue<int>q;
memset(vis,0,sizeof(vis));
pre[0]=pre[pos]=0;
vis[pos]=true;
col[pos]=1;
t=1;
q.push(pos);
while(!q.empty())
{
int u=q.front();q.pop();
int tmp=t;
int num=t;
for(int i=head[u];~i;i=e[i].next)
{
int v=e[i].to;
if(vis[v]) continue;
q.push(v);
pre[v]=u;
vis[v]=true;
while(num&&(num==col[u]||num==col[pre[u]]))
num--;
if(num)
col[v]=num--;
else
col[v]=++tmp;
}
t=tmp;
}
}
void init()
{
tol=0;
memset(head,-1,sizeof(head));
memset(in,0,sizeof(in));
}
void add(int u,int v)
{
e[tol].to=v;
e[tol].next=head[u];
head[u]=tol++;
} int main()
{
int n,u,v;
scanf("%d",&n);
init();
for(int i=2;i<=n;i++)
{
scanf("%d%d",&u,&v);
add(u,v);
add(v,u);
in[u]++;
in[v]++;
}
int pos;
for(int i=1;i<=n;i++)
{
if(in[i]==1)
{
pos=i;
break;
}
}
BFS(pos);
int ans=0;
for(int i=1;i<=n;i++)
ans=max(ans,col[i]);
printf("%d\n",ans);
for(int i=1;i<=n;i++)
printf("%d ",col[i]);
return 0;
}

Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals)【A,B,C】的更多相关文章

  1. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals)

    Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) 说一点东西: 昨天晚上$9:05$开始太不好了,我在学校学校$9:40$放 ...

  2. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) D. Innokenty and a Football League

    地址:http://codeforces.com/contest/782/problem/D 题目: D. Innokenty and a Football League time limit per ...

  3. 树的性质和dfs的性质 Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) E

    http://codeforces.com/contest/782/problem/E 题目大意: 有n个节点,m条边,k个人,k个人中每个人都可以从任意起点开始走(2*n)/k步,且这个步数是向上取 ...

  4. 2-sat Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) D

    http://codeforces.com/contest/782/problem/D 题意: 每个队有两种队名,问有没有满足以下两个条件的命名方法: ①任意两个队的名字不相同. ②若某个队 A 选用 ...

  5. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) E Underground Lab

    地址:http://codeforces.com/contest/782/problem/E 题目: E. Underground Lab time limit per test 1 second m ...

  6. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) C Andryusha and Colored Balloons

    地址:http://codeforces.com/contest/782/problem/C 题目: C. Andryusha and Colored Balloons time limit per ...

  7. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) B. The Meeting Place Cannot Be Changed

    地址:http://codeforces.com/contest/782/problem/B 题目: B. The Meeting Place Cannot Be Changed time limit ...

  8. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) A. Andryusha and Socks

    地址:http://codeforces.com/contest/782/problem/A 题目: A. Andryusha and Socks time limit per test 2 seco ...

  9. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals)A模拟 B三分 C dfs D map

    A. Andryusha and Socks time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

随机推荐

  1. 流畅python学习笔记:第十六章:协程

    通常在python进行编程一般都是使用多线程或者多进程来实现.这里介绍另外一种并发的方式,就是协程,但和多线程以及多进程不一样的是,协程是运行在单线程当中的并发.来看下具体的例子: def simpl ...

  2. Django一对多的创建

    1.一对多的应用场景: 例如:创建用户信息时候,需要选择一个用户类型[普通用户][金牌用户][铂金用户]等. 2.方法: class Business(models.Model): buss=mode ...

  3. me12里更改信息记录的净价和有效价格,以及信息记录的条件价格

    转自 http://blog.csdn.net/zeewjj/article/details/7941525REPORT ztest. DATA:l_kbetr LIKE konp-kbetr.l_k ...

  4. 部署nginx支持lua

    nginx yum -y install gcc pcre pcre-devel openssl openssl-devel  GeoIP GeoIP-devel lua lua-develwget ...

  5. Android6.0 旋转屏幕(五)WMS启动应用流程(屏幕方向相关)

    一.强制设置方向 1.Activity 如果要强制设置一个Activity的横竖屏可以通过Manifest去设置,跟Activity相关的信息都会保存在ActivityInfo当中. android: ...

  6. C++(一)— stringstream的用法

    输入输出的头文件 <iostream>  string流的头文件 <sstream>  文件流的头文件   <fstream> 1.利用输入输出做数据转换 stri ...

  7. LoadRunner监控图表与配置(三)对系统与网络资源进行监控

    1.Windows可监控的性能计数器 2.UNIX可监控的性能计数器 3.性能计数器信息说明 Windows 性能对象 计数器 数值说明 System %Total Processor Time 系统 ...

  8. 剑指offer12 打印从1到N位的所有数字,处理大整数情况

    /** * */ package jianzhioffer; /** * @Description 输入n位数,输出0-N的所有数 * @author liutao * @data 2016年4月22 ...

  9. MFC模态对话框程序不响应OnIdle

    从代码分析原因吧: OnIdle函数在MFC的CWinThread::Run函数中被调用,如下 // main running routine until thread exits int CWinT ...

  10. SET_Matplotlib

    fig.tight_layout() 调整子图间距 legend 图例分开显示