【jzoj6.24模拟B】
这场真是无聊,搬远古原题……
xjb做了做,(居然没AK真是身败名裂)
A.教主的花园
答案明显具有可二分性,二分答案判定下就行。
#include<bits/stdc++.h>
#define N 100010
using namespace std;
int n,m,a[N];
inline int check(int x){
int l=,r=n;int ret=n;
while(l<=r){
int mid=(l+r)>>;
if(a[mid]<x)l=mid+;else r=mid-,ret=mid;
}
return ret;
}
inline int dis(int a,int b){a=a-b;if(a<) return -a;else return a;}
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
n=read();for(int i=;i<=n;i++)a[i]=read();
m=read();int x1,y1,x2,y2;
sort(a+,a+n+);
for(int i=;i<=m;i++){
x1=read(),y1=read(),x2=read(),y2=read();
if((y1<&&y2<)||(y1>&&y2>)){printf("%d\n",dis(y1,y2)+dis(x1,x2));continue;}
if(x1>x2)swap(x1,x2);int len=(x1+x2)>>,pos=check(len);
if(x1<=a[pos]&&a[pos]<=x2){printf("%d\n",dis(y1,y2)+dis(x1,x2));continue;}
int t1=dis(a[pos],x1)+dis(a[pos],x2)+dis(y1,y2),t2=0x7fffffff,t3=0x7fffffff;
if(pos>)t2=dis(a[pos-],x1)+dis(a[pos-],x2)+dis(y1,y2);
if(pos<n)t3=dis(a[pos+],x1)+dis(a[pos+],x2)+dis(y1,y2);
if(t1>t2)t1=t2;if(t1>t3)t1=t3;
printf("%d\n",t1);
}
}
教主泡嫦娥
环形上跑一下dp,四维记录状态。
#include<bits/stdc++.h>
#define N 10010
#define inf 10000000000000007LL
using namespace std;
typedef long long ll;
int a[N],n,m;
ll f[N][][],ans=;
inline ll sqr(ll x){return x*x;}
inline void dfs(){
f[][][]=f[][][]=inf;
for(int i=;i<=n;i++)for(int j=;j<;j++)
if((a[i]<a[i-])^j){
f[i][j][]=f[i-][j][]+abs(a[i]-a[i-]);
f[i][j][]=min(f[i-][j][],min(f[i-][j^][],f[i-][j^][])+m)+abs(a[i]-a[i-]);
}
else{
f[i][j][]=f[i-][j][]+sqr(a[i]-a[i-]);
f[i][j][]=min(f[i-][j][],min(f[i-][j^][],f[i-][j^][])+m)+sqr(a[i]-a[i-]);
}
}
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
n=read();m=read();
for(int i=;i<n;i++)a[i]=read();
a[n]=a[];memset(f,,sizeof(f));
dfs();
ans=min(min(f[n][][],f[n][][]),min(f[n][][],f[n][][]));
memset(f,,sizeof(f));f[][][]=inf;dfs();
ans=min(ans,f[n][][]-m);
memset(f,,sizeof(f));f[][][]=inf;dfs();
ans=min(ans,f[n][][]-m);
cout<<ans<<endl;
}
保镖排队:
懒得写了,从网上粘一个解释下来:
于是假设当前有tot个格子,然后自己有j个儿子,因为是可放可不放于是就是C(tot+j,j),这个时候你们就会疑惑了,难道不是C(tot+j-1,j)吗,这不是才是可放可不放的公式吗,但你可能忘记了,自己虽然必须放在最前面,但是总的可放位置仍要把他算进去呀
#include<bits/stdc++.h>
#define N 2010
#define yql 10007
using namespace std;
int f[N][N],dp[N],g[N][N],val[N],n;
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
void calc(int x){
dp[x]=;if(!g[x][]){val[x]=;return;}
int tot=;
for(int i=g[x][];i;i--){
calc(g[x][i]);tot+=val[g[x][i]];
dp[x]=dp[x]%yql*dp[g[x][i]]%yql*f[tot-][val[g[x][i]]-]%yql;
}
val[x]=tot+;
}
inline void pre(){
f[][]=;
for(int i=;i<=;i++){
f[i][]=;for(int j=;j<=i;j++)f[i][j]=(f[i-][j-]+f[i-][j])%yql;
}
}
int main(){
pre();int T=read();
while(T--){
memset(g,,sizeof(g));memset(dp,,sizeof(dp));memset(val,,sizeof(val));
n=read();
for(int i=;i<=n;i++){
g[i][]=read();
for(int j=;j<=g[i][];j++)g[i][j]=read();
}
calc();
printf("%d\n",dp[]);
}
}
教主的别墅
针鸡儿丢人,身败名裂,被卡了一个点
居然都没有AK。
不放代码了,太气了。
【jzoj6.24模拟B】的更多相关文章
- 24模拟keepalved vrrp功能,监听主节点,如果主节点不可访问则备节点启动并配置LVS实现接管主节点的资源提供服务(提醒:注意ARP缓存)
[root@lb04 scripts]# cat ha_lv.sh #!/bin/bash while true do check_count=$(nmap 10.0.0.13|grep " ...
- 2.24 模拟赛 + DIV2 总结
本来实在是不想打了,后来真的手痒. 晚上发现正进行DIV2然后就打了场,模拟,幸好没参加,逆风.排名2400 Codeforces Round #622 (Div. 2) A题十分钟过了 B题http ...
- WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化
原文:WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化 [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制 ...
- 基于CPS变换的尾递归转换算法
前言 众所周知,递归函数容易爆栈,究其原因,便是函数调用前需要先将参数.运行状态压栈,而递归则会导致函数的多次无返回调用,参数.状态积压在栈上,最终耗尽栈空间. 一个解决的办法是从算法上解决,把递归算 ...
- 030.Zabbix分布式部署
一 分布式Zabbix介绍 zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix se ...
- 前端面试题(一)JS篇
内置类型 JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object). 基本类型有六种: null,undefined,boolean,number,string,symbo ...
- CSP 2019 游记
Day -32 开坑. 没什么好说的,等个 5 天等初赛(应该叫第一轮认证)挂掉之后就能弃坑了. 今天开始停课,虽然每天只停半天,但是感觉还是特别的舒服~ 然而得等初赛过了才能全天停课-- 没关系,熬 ...
- CF1010D Mars rover
CF1010D Mars rover 洛谷评测传送门 题目描述 Natasha travels around Mars in the Mars rover. But suddenly it broke ...
- 028-实现阿里云ESC多FLAT网络
实现类似于阿里云ECS的网络结构,其效果为云主机拥有两块和两个不同的网络,一个网络是用于用于和外网连接,一个用于内网通信,但宿主机上至少有两个网卡,整体配置如下:1.在wmare里给宿主机添加一块网卡 ...
随机推荐
- BZOJ 2337 XOR和路径(概率DP)
求点1到点n经过的路径权值异或和的期望. 考虑按位计算,对于每一位来说,令dp[i]表示从i到n的异或和期望值. 那么dp[i]=sum(dp[j]+1-dp[k]).如果w(i,j)这一位为0,如果 ...
- 【bzoj1212】[HNOI2004]L语言 AC自动机
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- wsgiref 源码解析
Web Server Gateway Interface(wsgi),即Web服务器网关接口,是Web服务器软件和用Python编写的Web应用程序之间的标准接口. 想了解更多关于WSGI请前往: h ...
- (四)Redis哈希表Hash操作
Hash全部命令如下: hset key field value # 将哈希表key中的字段field的值设为value hget key field # 返回哈希表key中的字段field的值val ...
- [洛谷P5107]能量采集
题目大意:有一张$n(n\leqslant50)$个点$m(m\leqslant n(n-1))$条边的有向图,每个点还有一个自环,每个点有一个权值.每一秒钟,每个点的权值会等分成出边个数,流向出边. ...
- POJ1741:Tree——题解+树分治简要讲解
http://poj.org/problem?id=1741 题目大意:给一棵树,求点对间距离<=k的个数. ———————————————————— 以这道题为例记录一下对于树分治的理解. 树 ...
- Linux内核中的常用宏container_of其实很简单
http://blog.csdn.net/npy_lp/article/details/7010752 通过一个结构体变量的地址,求该结构体的首地址. #ifndef CONTAINER_OF #de ...
- POSIX.2 正则表达式
By francis_hao Oct 1,2017 这里的正则表达式主要是指扩展正则,也就是egrep(grep -e)用到的正则表达式. 字符 含义 类别说明 | 分割分支,正则表达式会去 ...
- ACE线程管理机制-并发控制(1)
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/04/581771.html ACE Lock类属 锁类属包含的类包装简单的锁定机制,比如互斥体 ...
- POJ2349:Arctic Network(二分+最小生成树)
Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 28311 Accepted: 8570 题 ...