noip模拟赛 #3
T1
给一个环,每个点有一个权值,把环分成三段,求最小的那段的最大值
sol:暴力
二分答案,chk就是把环搞成三倍链,每次枚举起点,后面三个切割点都可以二分找
然后就Rua过去了
//yyc wenle
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = ;
inline LL read()
{
int x = ,f = ;char ch = getchar();
for(;!isdigit(ch);ch = getchar())if(ch == '-')f = -f;
for(;isdigit(ch);ch = getchar())x = * x + ch - '';
return x * f;
}
int n;
LL s[ * maxn],a[ * maxn];
LL l,r;
inline LL findnx(int pos,LL x){return upper_bound(s,s + * n + ,s[pos] + x - ) - s;}
inline int chk(LL x)
{
int pos;
for(int i=;i<n;i++)
{
pos = i;
pos = findnx(pos,x);if(pos > i + n)continue;
pos = findnx(pos,x);if(pos > i + n)continue;
pos = findnx(pos,x);if(pos > i + n)continue;
return ;
}
return ;
}
int main()
{
n = read();
for(int i=;i<=n;i++){a[i] = read();a[n + i] = a[i];a[ * n + i] = a[i];}
for(int i=;i<= * n;i++)s[i] = s[i - ] + a[i];
l = ,r = s[n] / ;LL ans;
while(l <= r)
{
LL mid = (l + r) >> ;
if(chk(mid))l = mid + ,ans = mid;
else r = mid - ;
}
printf("%lld\n",ans);
}
/*
30
1
34
44
13
30
1
9
3
7
7
20
12
2
44
6
9
44
31
17
20
33
18
48
23
19
31
24
50
43
15
*/
T2
树上选出k个点,如果选一个点,也要选他的祖先,默认选0,每个人有一个战斗力和一个花费
求选出的最大战斗力除以最大花费
sol:
分数规划,每个点权变成了zdl - mid * hf
然后就是“树上选出若干点点权大于0”
然后,我们就想歪了
考虑选出的肯定是很多条链,树上选出很多链?那岂不是...
九省联考_林可卡特树
然后想了半天带权二分...咳咳
然后就去想T3了
写完T3才发现这tm不是个树背包吗
然后算算复杂度
小数点后3位,最大10000,那就是1e8
log1e8 * O(n^2)显然挂了
所以需要一个常数小的写法
考虑dfs序,我们选一个点,可以转移到他dfs序后一个点
不选一个点,就转出这棵子树
然后常数非常的优秀,不需要“证明复杂度”和size写法
(学弟预处理size然后T了
//yyc wenle
#include<bits/stdc++.h>
#define LL long long
#define DB long double
using namespace std;
const int maxn = ;
const double inf = 1e9;
inline int read()
{
int x = ,f = ;char ch = getchar();
for(;!isdigit(ch);ch = getchar())if(ch == '-')f = -f;
for(;isdigit(ch);ch = getchar())x = * x + ch - '';
return x * f;
}
int n,k;
double s[maxn],p[maxn];
int first[maxn],to[maxn],nx[maxn],cnt;
int dfin[maxn],pos[maxn],dfout[maxn],dfn;
double f[][];int ccnt = ;
inline void add(int u,int v)
{
to[++cnt] = v;
nx[cnt] = first[u];
first[u] = cnt;
}
inline void dfs(int x)
{
dfin[x] = ++dfn;
pos[dfn] = x;
for(int i=first[x];i;i=nx[i])dfs(to[i]);
dfout[dfin[x]] = dfn;
}
inline int chk(double x)
{
for(int i=;i<=n + ;i++)
for(int j=;j<=k + ;j++)
f[i][j] = -inf;
f[][] = ;
for(int i=;i<=n+;i++)
for(int j=;j<=k+;j++)
{
if(f[i][j] == -inf)continue;
double cur = p[pos[i]] - x * (s[pos[i]]);
f[dfout[i] + ][j] = max(f[dfout[i] + ][j],f[i][j]);
f[dfout[i] + ][j + ] = max(f[dfout[i] + ][j + ],f[i][j] + cur);
for(int xx=first[pos[i]];xx;xx = nx[xx])
{
int targ = to[xx];
f[dfin[targ]][j + ] = max(f[dfin[targ]][j + ],f[i][j] + cur);
//ccnt++;
}
}
return f[n + ][k + ] >= 0.0;
}
const double eps = 1e-;
int main()
{
//freopen("rantree.in","r",stdin);
//freopen("1.txt","r",stdin);
//freopen("gen.out","w",stdout);
//freopen("mactree.in","r",stdin);
//freopen("chain.in","r",stdin);
//freopen("juhua.in","r",stdin);
k = read(),n = read();
if(!k){puts("0.000");return ;}
for(int i=;i<=n;i++)
{
scanf("%lf%lf",&s[i],&p[i]);int py = read();
add(py,i);
}
dfs();
//cout<<pos[1];
double l = ,r = 10000.0;
for(int tms = ;tms <= ;tms++)
{
if(r - l <= eps)break;
double mid = (l + r) / 2.0;
if(chk(mid))l = mid + eps;
else r = mid - eps;
}
//cout<<ccnt<<endl;
printf("%.3lf",(l + r) / 2.0);
}
T3
给n个门,每个门是一个位运算和一个数,经过这个门就对这个数操作
求1~m经过这些门之后最大的数
sol:
贪心
1.如果这位选0,改了之后变成1,血赚
2.如果这位选1,改了之后变成0,血亏
3.剩下的,选0肯定比选1更小于m
//yyc wenle
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = ;
inline int read()
{
int x = ,f = ;char ch = getchar();
for(;!isdigit(ch);ch = getchar())if(ch == '-')f = -f;
for(;isdigit(ch);ch = getchar())x = * x + ch - '';
return x * f;
}
int n,m;
char opt[];
int num;
int main()
{
n = read(),m = read();
int x = ( << ) - ,y = ;
for(int i=;i<=n;i++)
{
scanf("%s",opt);num = read();
if(opt[] == 'A')x &= num,y &= num;
if(opt[] == 'X')x ^= num,y ^= num;
if(opt[] == 'O')x |= num,y |= num;
}
int a = ,b = ;
for(int i = ( << );i;i >>= )
{
if((a | i) <= m && (x & i) > (y & i))b |= (x & i),a |= i;
else b |= (y & i);
}
printf("%d\n",b);
}
AK了
noip模拟赛 #3的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
- CH Round #49 - Streaming #4 (NOIP模拟赛Day2)
A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模 ...
随机推荐
- ios8 一些运行问题
iOS10相册相机闪退bughttp://www.jianshu.com/p/5085430b029fiOS 10 因苹果健康导致闪退 crashhttp://www.jianshu.com/p/5 ...
- PHP-Manual的学习----【安装与配置】
2017年6月27日17:59:16 安装与配置 安装前需要考虑的事项 Unix系统下的安装 Mac OS x系统下的安装 windows 系统下的安装 云计算平台上的安 ...
- Domino Angular 前端UI开发
因为如今前端的要求越来越专业化,不少企业已经有前端的专业职位了.当然我们dominio软件企业.有些也在特意招一些前端的project师. 比方如今流程的多平台(之前我的有教程).就必需要有专业的UI ...
- (转)linux设备驱动之USB数据传输分析 一
三:传输过程的实现说到传输过程,我们必须要从URB开始说起,这个结构的就好比是网络子系统中的skb,好比是I/O中的bio.USB系统的信息传输就是打成URB结构,然后再过行传送的.URB的全称叫US ...
- CAFFE学习笔记(一)Caffe_Example之训练mnist
0.参考文献 [1]caffe官网<Training LeNet on MNIST with Caffe>; [2]薛开宇<读书笔记4学习搭建自己的网络MNIST在caffe上进行训 ...
- Hive高级
HiveServer2 概述: https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Overview2 客户端: https:// ...
- JAVA NIO 简介 (netty源码死磕1.1)
[基础篇]netty 源码死磕1.1: JAVA NIO简介 1. JAVA NIO简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/ ...
- 常见数据挖掘算法的Map-Reduce策略(1)
大数据这个名词是被炒得越来越火了,各种大数据技术层出不穷,做数据挖掘的也跟着火了一把,呵呵,现今机器学习算法常见的并行实现方式:MPI,Map-Reduce计算框架,GPU方面,grap ...
- 制作透明的图标ICO
1.使用crowldraw画图保存为PNG格式,选择"被遮盖区域",然后保存(保存为PNG的透明格式). 2.使用IconWorkshop把透明的PNG格式导出为ICO.
- cmd - - - 随笔
dxdiag DirectX诊断工具 calc 计算机 cmd里面不想一点点输入冗长的文件路径?直接把这个文件拖到CMD窗口吧!你会发现 路径自己补上去了.有空格的还会自动加引号哟.