[BZOJ1911][BZOJ1912][BZOJ1913]APIO2010解题报告
特别行动队
Description

/**************************************************************
Problem: 1911
User: mjy0724
Language: C++
Result: Accepted
Time:1688 ms
Memory:24248 kb
****************************************************************/ #include<cstdio>
#include<cstdlib>
#include<cstring>
const int maxn=;long long INF=;
long long n,a,b,c,sum[maxn],opt[maxn],f[maxn];
long long g(int j,int k){
if (*a*(sum[j]-sum[k])==)
{
if (f[j]+a*sum[j]*sum[j]-b*sum[j]-(f[k]+a*sum[k]*sum[k]-b*sum[k])>) return INF;
else return -INF;
}
return (f[j]+a*sum[j]*sum[j]-b*sum[j]-(f[k]+a*sum[k]*sum[k]-b*sum[k]))/(*a*(sum[j]-sum[k]));
} int main(){
scanf("%lld",&n);
scanf("%lld%lld%lld",&a,&b,&c);
for (int i=;i<=n+;i++) scanf("%lld",&sum[i]),sum[i]+=sum[i-];
int head=,tail=;opt[]=;f[]=;
for (int i=;i<=n+;i++){
if (a>=) while (head<tail&&g(opt[head],opt[head+])>sum[i]) head++;
else while (head<tail&&g(opt[head],opt[head+])<sum[i]) head++;
int j=opt[head];
f[i]=f[j]+a*(sum[i]-sum[j])*(sum[i]-sum[j])+b*(sum[i]-sum[j])+c;
if (a>=) while (head<tail&&g(opt[tail-],opt[tail])<g(opt[tail],i)) tail--;
else while (head<tail&&g(opt[tail-],opt[tail])>g(opt[tail],i)) tail--;
opt[++tail]=i;
}
printf("%lld\n",f[n+]);
return ;
}
patrol 巡逻
Description

/**************************************************************
Problem: 1912
User: mjy0724
Language: C++
Result: Accepted
Time:708 ms
Memory:5288 kb
****************************************************************/ #include<cstdio>
#include<cstdlib>
#include<cstring>
const int maxn=,maxm=;
int n,k,e,link[maxn],next[maxm],fa[maxm],pos1[maxn],pos2[maxn],w[maxm],ans,sum,s;
void add(int x,int y){
fa[++e]=y;next[e]=link[x];link[x]=e;w[e]=;
fa[++e]=x;next[e]=link[y];link[y]=e;w[e]=;
} int dfs(int p,int fat){
int max1=,max2=;
for (int i=link[p];i;i=next[i]) if (fa[i]!=fat){
int tmp=dfs(fa[i],p)+w[i];
if (tmp>max1){
max2=max1;max1=tmp;pos2[p]=pos1[p];pos1[p]=i;
}else if (tmp>max2) max2=tmp,pos2[p]=i;
}
if (max1+max2>ans) {
ans=max1+max2;s=p;
}
return max1;
} int main(){
scanf("%d%d",&n,&k);
int e=,x,y;
for (int i=;i<n;i++) scanf("%d%d",&x,&y),add(x,y);
dfs(,);sum=ans;
if (k==){printf("%d\n",*(n-)-(ans-));return ;}
for (int i=pos1[s];i;i=pos1[fa[i]]) w[i]=-;
for (int i=pos2[s];i;i=pos1[fa[i]]) w[i]=-;
ans=;dfs(,);
printf("%d\n",*(n-)-(ans-)-(sum-));
return ;
}
signaling 信号覆盖
Description


/**************************************************************
Problem: 1913
User: mjy0724
Language: C++
Result: Accepted
Time:1996 ms
Memory:1356 kb
****************************************************************/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#define ll long long
#define maxn 1510
struct point{
ll x,y;
double angle;
};
ll n,an,b;
point p[maxn],a[maxn];
ll cross(point p0,point p1,point p2){
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
void sortf(int l,int r){
int i=l,j=r;double mid=p[(l+r) >> ].angle;
do{
while (i<r&&p[i].angle<mid) i++;
while (l<j&&p[j].angle>mid) j--;
if (i<=j){
point tmp=p[i];p[i]=p[j];p[j]=tmp;
i++;j--;
}
}while (i<=j);
if (i<r) sortf(i,r);
if (l<j) sortf(l,j);
}
ll calc(int x){
int tot=;
for (int i=;i<=n;i++) {if (i!=x) p[++tot]=a[i];else p[]=a[i];}
for (int i=;i<=tot;i++) p[i].angle=atan2(p[i].y-p[].y,p[i].x-p[].x);
sortf(,tot);
ll ans=(n-)*(n-)*(n-)/;
ll tail=,t=;
for (int i=;i<=tot;i++){
while (cross(p[],p[i],p[tail])>=) {tail=tail%tot+;t++;if (tail==i) break;}
ans-=t*(t-)/;t--;
}
return ans;
}
int main(){
scanf("%lld",&n);
for (int i=;i<=n;i++) scanf("%lld%lld",&a[i].x,&a[i].y);
ll an=;for (int i=;i<=n;i++) an+=calc(i);
ll b=n*(n-)*(n-)*(n-)/-an,c=*b+an,d=(n-)*n*(n-)/;
printf("%lf",(double)(c*+(d-c)*)/d);
return ;
}
[BZOJ1911][BZOJ1912][BZOJ1913]APIO2010解题报告的更多相关文章
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- BZOJ 1051 最受欢迎的牛 解题报告
题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4438 Solved: 2353[S ...
- 习题:codevs 2822 爱在心中 解题报告
这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...
- 习题:codevs 1035 火车停留解题报告
本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...
- 习题: codevs 2492 上帝造题的七分钟2 解题报告
这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...
- 习题:codevs 1519 过路费 解题报告
今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...
- NOIP2016提高组解题报告
NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合
- LeetCode 解题报告索引
最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中...... ...
随机推荐
- Maven实现项目构建直接部署Web项目到Tomcat
Maven实现项目构建直接部署Web项目到Tomcat配置如下: 1.Tomcat的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户. <ro ...
- Java对象创建过程补遗
一.static修饰的东东是属于这个类的,是所有的该类的实例共享的,因此它们的初始化先于实例对象的初始化. 二.Java中没有静态构造方法,但是有静态代码块.当类中同时存在静态代码块和静态成员变量声明 ...
- WPF浏览器应用程序与JS的互调用(不用WebBrowser)
首先说些题外话,很久没有写博客了,空间里面的大部分文章还是11年写的.那时候刚毕业就来到这家公司,参与到一个Asp.net MVC的项目开发中,这个项目是一个全新的项目,连项目开发框架都没有,亏得领导 ...
- 防御 XSS 的七条原则
本文将会着重介绍防御XSS攻击的一些原则,需要读者对于XSS有所了解,至少知道XSS漏洞的基本原理,如果您对此不是特别清楚,请参考这两篇文章:<Stored and Reflected XSS ...
- HDU 2156 分数矩阵
http://acm.hdu.edu.cn/showproblem.php?pid=2156 Problem Description 我们定义如下矩阵:1/1 1/2 1/31/2 1/1 1/21/ ...
- NIO网络编程中重复触发读(写)事件
一.前言 公司最近要基于Netty构建一个TCP通讯框架, 因Netty是基于NIO的,为了更好的学习和使用Netty,特意去翻了之前记录的NIO的资料,以及重新实现了一遍NIO的网络通讯,不试不知道 ...
- .net 下SSE使用
HTML5有一个Server-Sent Events(SSE)功能,允许服务端推送数据到客户端.(通常叫数据推送),基于数据推送是这样的,当数据源有新数据,它马上发送到客户端,不需要等待客户端请求.这 ...
- [十二]SpringBoot 之 servlet
Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet.Filter.Listener.Interceptor 等等. 当使用spring-Boot时,嵌 ...
- 洛谷 P1231 教辅的组成(网络最大流+拆点加源加汇)
题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书 ...
- (三)MySQL学习笔记
[Leecode]175. 组合两个表 解答:由于是组合两个表的信息,很容易想到连接查询,这里使用左连接 select p.Firstname,p.Lastname,q.City,q.State fr ...