NOIP模拟赛20161016R1
1、传教士(bishop)
问题描述:
panzhili王国的疆土恰好是一个矩形,为了管理方便,国王jjs将整个疆土划分成N*M块大小相同的区域。由于jjs希望他的子民也能信教爱教(”打拳”神教),所以他想安排一些传教士到全国各地去传教。但这些传教士的传教形式非常怪异,他们只在自己据点周围特定的区域内传教且领地意识极其强烈(即任意一个传教士的据点都不能在其他传教士的传教区域内,否则就会发生冲突)。现在我们知道传教士的传教区域为以其据点为中心的两条斜对角线上(如图)。现在jjs请你帮忙找出一个合理的安置方案,使得可以在全国范围内安置尽可能多的传教士而又不至于任意两个传教士会发生冲突。
(若A为某传教士的据点,则其传教范围为所有标有X的格子。为不产生冲突,则第二个传教士的据点只能放在上图的空格中。)
输入数据
输入文件共一行,包含两个整数N和M,代表国土的大小,n为水平区域数,m为垂直区域数。
输出数据
输出文件仅一行,包含一个整数,即最多可以安置的传教士的数目。
样例输入bishop.in
3 4
样例输出bishop.out
6
说明:样例安置方案如下图所示,X表示为某传教士的据点。
XXX
OOO
OOO
XXX
对于100%的数据,1<=n,m<=9,且数据规模呈梯度上升。
类似八皇后
对角线一条一条斜着搜索即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
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,ans=;
int vis[],shift=;
void dfs(int d){
ans=max(ans,d-);
if(d>m+n) return;
for(int x=;x<=d-;x++){
int y=d-x;
if(x<||x>n||y<||y>m) continue;
//printf("dfs %d %d %d\n",d,x,y);
if(vis[x-y+shift]) continue;
vis[x-y+shift]=;
dfs(d+);
vis[x-y+shift]=;
}
} int main(){
freopen("bishop.in","r",stdin);
freopen("bishop.out","w",stdout);
n=read();m=read();
dfs();
printf("%d",ans);
}
2、czy把妹(czybm)
Czy是个大丧失,非常喜欢bm。他经常挑战bm的极限,同时b很多的mz。(虽然也许质量不容乐观)
这一天,czy又开始了他的极限挑战。在一个数轴上有n个maze,她们都在等待着czy的到来。Czy一开始站在k号妹子的旁边,他需要搞定所有的妹子(由于他向fewdan学会了绝技,所以搞定妹子的时间是无限接近于0的,也就是一瞬间就搞定而不用花额外的时间)。Maze们都很没有耐心,每让她们多等1s,她们就会增加w[i]的不开心值。现在,czy从k号妹子这里出发,以1m/s的速度开始行动,他希望在搞定所有maze的情况下使得她们的不开心值总和最小,于是他找到了即将在NOIP2014 AK的你来帮他解决这个问题。
文件输入:
输入文件的第一行包含一个整数N,2<=N<=1000,表示maze的数量。
第二行包含一个整数V,1<=V<=N,表示开始时czy站在几号maze的旁边.接下来的N行中,每行包含两个用空格隔开的整数D和W,用来描述每个maze,其中0<=D<=1000,0<=W<=1000。D表示MM在数轴上的位置(单位: m),W表示每秒钟会增加的不开心值。
文件输出:
一个整数,最小的不开心值。(答案不超过10^9)
样例输入
4
3
2 2
5 8
6 1
8 7
样例输出
56
对于40%的数据,1<=n<=7
对于100%的数据,1<=n<=1000 0<=D<=1000 0<=w<=1000
想了各种DP和图论模型.......哎
最后搜索加剪枝骗了60分
PS:搜索时注意在那里cnt++和vis[x]=1/0
正解就是区间DP,差一点想出来了,代价计算时有问题
f[i][j][0/1]表示i到j完成,在左或在右
转移考虑从那里走来,以外的都要贡献w*t的代价,预处理前缀和
//搜索
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,INF=1e9;
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,s,a[N],w[N],vis[N],cnt=,ans=1e9;
void dfs(int x,int t,int val){//printf("dfs %d %d %d\n",x,t,val);
cnt++;vis[x]=;
if(cnt==n){ans=min(ans,val);return;}
int i;
for(i=x+;i<=n;i++) if(!vis[i]) break;
if(i<=n){
int tt=t+(a[i]-a[x]);
dfs(i,tt,val+tt*w[i]);
cnt--;vis[i]=;
}
for(i=x-;i>=;i--) if(!vis[i]) break;//printf("vis %d hi2 %d %d\n",vis[1],x,i);
if(i>=){
int tt=t+(a[x]-a[i]);
dfs(i,tt,val+tt*w[i]);
cnt--;vis[i]=;
}
}
int main(){
freopen("czybm.in","r",stdin);
freopen("czybm.out","w",stdout);
n=read();
s=read();
for(int i=;i<=n;i++){a[i]=read();w[i]=read();}
dfs(s,,);
printf("%d",ans);
}
//区间DP
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=;
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,st,a[N],w[N],s[N];
int f[N][N][];
inline int sum(int i,int j){return s[j]-s[i-];}
void dp(){
for(int i=;i<=n;i++) f[i][i][]=f[i][i][]=abs(a[i]-a[st])*s[n];
for(int l=;l<=n;l++)
for(int i=;i<=n;i++){
int j=i+l-;
if(j>n) break;
f[i][j][]=min(f[i+][j][]+(a[i+]-a[i])*(sum(j+,n)+sum(,i)),
f[i][j-][]+(a[j]-a[j-])*(sum(j,n)+sum(,i-))
+(a[j]-a[i])*(sum(,i-)+sum(j+,n)) );
f[i][j][]=min(f[i][j-][]+(a[j]-a[j-])*(sum(j,n)+sum(,i-)),
f[i+][j][]+(a[i+]-a[i])*(sum(,i)+sum(j+,n))
+(a[j]-a[i])*(sum(,i-)+sum(j+,n)) );
}
}
int main(){
//freopen("czybm.in","r",stdin);
//freopen("czybm.out","w",stdout);
n=read();
st=read();
for(int i=;i<=n;i++){
a[i]=read();w[i]=read();
s[i]=s[i-]+w[i];printf("n %d\n",i);
}
dp();
printf("%d",min(f[][n][],f[][n][]));
}
NOIP模拟赛20161016R1的更多相关文章
- 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 ...
随机推荐
- 让服务器iis支持.apk文件下载的设置方法
随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件 ...
- 增加线程异步发送消息的方法一(Thread)
@RequestMapping(value="order/updateOrder.do") public String updateOrder(HttpServletRequest ...
- 如何使用Dubbo服务和集成Spring
Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo是一个 ...
- Oracle学习总结_day03_day04_条件查询_排序_函数_子查询
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...
- 6、ASP.NET MVC入门到精通——ASP.Net的两种开发方式
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 目前,ASP.NET中两种主流的开发方式是:ASP.NET Webform和ASP.NET MVC.从下图可以看到ASP.NET WebFo ...
- C#枚举、结构、数组、排序
- CSS3动画属性Transform解读
无论你是前端还是设计师,相信你在网页二维空间上的操作早已经得心应手,JS处理时间线的动画也早已经 烂熟于胸.从今天开始,我跟大家分享一些“新”的东西,网页的第三个维度,以及纯CSS实现的动画.限于篇幅 ...
- iOS 十六进制的颜色值转换为UIColor
UIColor+Hex.h里面中 #import <UIKit/UIKit.h> @interface UIColor (Hex) + (UIColor *) colorWithHexSt ...
- Day Tips:关于搜索小问题
1.如果想重启SPSearchHostController请确保没有服务在运行,如果有爬网运行可能会导致重启失败,使之处于stoping状态,不过遇到这个状态也不要紧使用 taskkill /f /f ...
- iOS多线程实现4-NSOperation
原文链接:http://www.cnblogs.com/mddblog/p/4816875.html 一.介绍 NSOperation是一个抽象类,我们可以使用系统提供的子类或者自己实现它的子类,具有 ...