Codeforces Round #395 (Div. 2)(未完)
2.2.2017 9:35~11:35
直接模拟
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=1e4+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return x*f;
}
int n,m,z,ans;
int vis[N];
int main(int argc, const char * argv[]) {
n=read();m=read();z=read();
for(int i=n;i<=z;i+=n) vis[i]=;
for(int i=m;i<=z;i+=m) ans+=vis[i];
printf("%d",ans);
return ;
}
奇数位置反转,偶数位置不变
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=2e5+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return x*f;
}
int n,a[N];
int main(int argc, const char * argv[]) {
n=read();
for(int i=;i<=n;i++) a[i]=read();
for(int i=;i<=n/;i++) if(i&) swap(a[i],a[n-i+]);
for(int i=;i<=n;i++) printf("%d ",a[i]);
return ;
}
题意:选一个根使得所有子树同色(每个子树中节点同色 不同子树可以不同色)
比赛时先打了个傻逼树形DP发现不对 然后就用对于一个点i它的子树用树形DP,它的上面的树用DFS序+线段树/ST表询问颜色相同......反正A掉了
//
// main.cpp
// C
//
// Created by Candy on 2017/2/2.
// Copyright © 2017年 Candy. All rights reserved.
//
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
#define mid ((l+r)>>1)
#define lson x<<1,l,mid
#define rson x<<1|1,mid+1,r
#define lc x<<1
#define rc x<<1|1
typedef long long ll;
const int N=2e5+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return x*f;
}
int n,u,v,c[N],a[N];
struct edge{
int v,ne;
}e[N<<];
int h[N],cnt=;
inline void ins(int u,int v){
cnt++;
e[cnt].v=v;e[cnt].ne=h[u];h[u]=cnt;
cnt++;
e[cnt].v=u;e[cnt].ne=h[v];h[v]=cnt;
}
struct node{
int same;
}t[N<<];
void build(int x,int l,int r){
if(l==r) t[x].same=a[l];
else{
build(lson);
build(rson);
if(t[lc].same==||t[rc].same==||t[lc].same!=t[rc].same) t[x].same=;
else t[x].same=t[lc].same;
}
}
int segSame(int x,int l,int r,int ql,int qr){
if(ql>qr) return -;
if(t[x].same) return t[x].same;
if(ql<=l&&r<=qr) return t[x].same;
else{
int same=-;
if(ql<=mid) same=segSame(lson,ql,qr);
if(mid<qr){
int _=segSame(rson,ql,qr);
if(same==-||same==_) same=_;
else same=;
}
return same;
}
}
int d[N],L[N],R[N],dfc;
void dfs(int u,int fa){
L[u]=++dfc; a[dfc]=c[u];
d[u]=c[u];
for(int i=h[u];i;i=e[i].ne){
int v=e[i].v;
if(v==fa) continue;
dfs(v,u);
if(d[u]!=&&d[v]!=d[u]) d[u]=;
}
R[u]=dfc;
}
int ans;
void dfsSol(int u,int fa){//printf("dfsSol %d %d\n",u,fa);
if(ans) return;
int flag=;
for(int i=h[u];i;i=e[i].ne) if(e[i].v!=fa)
if(d[e[i].v]==) {flag=;break;}
if(flag){
int s1=segSame(,,n,,L[u]-),s2=segSame(,,n,R[u]+,n);
flag=;
if(s1!=&&s2!=&&(s1==-||s2==-||s1==s2)) flag=;
// printf("hi %d %d %d %d %d %d\n",u,L[u],R[u],s1,s2,flag);
if(flag) {ans=u;return;}
} for(int i=h[u];i;i=e[i].ne)
if(e[i].v!=fa) dfsSol(e[i].v,u);
}
int main(int argc, const char * argv[]) {
n=read();
for(int i=;i<=n-;i++) u=read(),v=read(),ins(u,v);
for(int i=;i<=n;i++) c[i]=read();
dfs(,);
build(,,n);
// for(int i=1;i<=n;i++) printf("hi %d %d %d %d\n",i,d[i],L[i],R[i]);
// for(int i=1;i<=n;i++) printf("a %d %d\n",i,a[i]);
dfsSol(,);
if(ans) printf("YES\n%d",ans);
else puts("NO");
return ;
}
比赛代码
实际上可以发现如果一条边两边节点的颜色不对一定是这两个节点中的一个做根,三遍DFS就行了....好简单
题意:一些不相交矩形边长都是奇数 4种颜色染色 判断可行及一种方案
....最后才看到洛谷群有这道题题解然后最后10s提交失败呜呜呜
超简单 边长奇数,所以横边相邻的矩形y坐标奇偶性不同 x同理 所以按左下角奇偶性染色就行了
//
// main.cpp
// C
//
// Created by Candy on 2017/2/2.
// Copyright © 2017年 Candy. All rights reserved.
//
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return x*f;
}
int n,x,y;
int main(int argc, const char * argv[]) {
n=read();
puts("YES");
for(int i=;i<=n;i++){
x=read();y=read();
x=min(x,read());y=min(y,read());
x+=1e9;y+=1e9;
if(x&){
if(y&) puts("");
else puts("");
}else{
if(y&) puts("");
else puts("");
}
}
}
未完
Codeforces Round #395 (Div. 2)(未完)的更多相关文章
- Codeforces Round #395 (Div. 2)(A.思维,B,水)
A. Taymyr is calling you time limit per test:1 second memory limit per test:256 megabytes input:stan ...
- Codeforces Round #395 (Div. 2) D. Timofey and rectangles
地址:http://codeforces.com/contest/764/problem/D 题目: D. Timofey and rectangles time limit per test 2 s ...
- Codeforces Round #395 (Div. 2) C. Timofey and a tree
地址:http://codeforces.com/contest/764/problem/C 题目: C. Timofey and a tree time limit per test 2 secon ...
- Codeforces Round #395 (Div. 2)B. Timofey and cubes
地址:http://codeforces.com/contest/764/problem/B 题目: B. Timofey and cubes time limit per test 1 second ...
- Codeforces Round #395 (Div. 1)
比赛链接:http://codeforces.com/contest/763 A题: #include <iostream> #include <cstdio> #includ ...
- Codeforces Round #395 (Div. 2)
今天自己模拟了一套题,只写出两道来,第三道时间到了过了几分钟才写出来,啊,太菜了. A. Taymyr is calling you 水题,问你在z范围内 两个序列 n,2*n,3*n...... ...
- 【分类讨论】Codeforces Round #395 (Div. 2) D. Timofey and rectangles
D题: 题目思路:给你n个不想交的矩形并别边长为奇数(很有用)问你可以可以只用四种颜色给n个矩形染色使得相接触的 矩形的颜色不相同,我们首先考虑可不可能,我们分析下最多有几个矩形互相接触,两个时可以都 ...
- 【树形DP】Codeforces Round #395 (Div. 2) C. Timofey and a tree
标题写的树形DP是瞎扯的. 先把1看作根. 预处理出f[i]表示以i为根的子树是什么颜色,如果是杂色的话,就是0. 然后从根节点开始转移,转移到某个子节点时,如果其子节点都是纯色,并且它上面的那一坨结 ...
- Codeforces Round #395 (Div. 2) C
题意 : 给出一颗树 每个点都有一个颜色 选一个点作为根节点 使它的子树各自纯色 我想到了缩点后check直径 当<=3的时候可能有解 12必定有解 3的时候需要check直径中点的组成点里是否 ...
随机推荐
- Spring框架学习笔记(2)——IOC&DI
IOC:控制反转,创建对象的权利交给Spring,Spring会自动创建对象. DI:依赖注入,操作的对象靠Spring注入,如果不使用Spring,对象的属性值是要靠setter方法来添加的,使用S ...
- JXLS 2.4.0系列教程(三)——嵌套循环是怎么做到的
注:本文代码在第一篇文章基础上修改而成,请务必先阅读第一篇文章. http://www.cnblogs.com/foxlee1024/p/7616987.html 本文也不会过多的讲解模板中遍历表达式 ...
- Vuex初识
vuex是vue中单向数据流的一个状态管理模式,它可以集中存储管理应用中所有组件的状态,并且有一套相应的规则可以去预测数据的变化.类似与此的还有react中的redux,dva等状态管理模式. 一般我 ...
- Button重写onClick两种方式
实现接口和匿名内部类 下午没课,自己又继续安卓的学习,照着书上做了一个left碎片Button点击后动态加载right碎片布局的Test,准备自己再继续做一个单击左碎片的button1 加载右碎片布局 ...
- python通过scapy模块进行arp断网攻击
前言: 想实现像arpsoof一样的工具 arp断网攻击原理: 通过伪造IP地址与MAC地址实现ARP欺骗,在网络发送大量ARP通信量.攻击者 只要持续不断发送arp包就能造成中间人攻击或者断网攻击. ...
- CCNA -OSI七层模型
OSI (开放系统互联(Open System Interconnection)) OSI是Open System Interconnection的缩写,意为开放式系统互联.国际标准化组织(ISO)制 ...
- Android带有粘性头部的ScrollView
前言,一天在点外卖的时候,注意到饿了么列表页的滑动效果不错,但是觉得其中的手势滑动还是挺复杂的,正好又碰到了在熟悉Touch事件的理解当中,所以就抽空对着饿了么的列表页面尝试写写这个效果 1.先贴一个 ...
- Mysql 范围查询优化
Range查询:用单独的Index的一个或多个index值来检索表的子集行数据,当然包含多个index. 1:一个index (单一部分)的range access 方法:(eg : 指的这种key ...
- linux workqueue的名字长度小问题
在排查一个nvme的的workqueue的问题的时候,发现nvme的queue的进程名被截断了, [root@localhost caq]# ps -ef |grep -i nvme root : ? ...
- Win8无法访问xp共享的解决方法——win8网上邻居访问别的xp电脑要用户名和密码取消方法
新装win8,原来的win7正常连接xp下载机的共享,但在win8下进网上邻居却无法访问xp的共享,显示”用户名或密码不正确”,而密码明明是对的如图所示: 解决方法: 按Win+R启动运行,输secp ...