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);
}



2czy把妹(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的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  3. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  4. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  5. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  6. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  7. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  8. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  9. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

随机推荐

  1. 图解SQL的Join(转)

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...

  2. Python 3.4 Library setup

    matplotlib:  https://pypi.python.org/pypi/matplotlib/1.4.3 Unofficial Windows Binaries for Python Ex ...

  3. [moka同学笔记]使用composer 安装yii2以及遇到的问题

    [一.Yii2安装过程] 使用composer安装,composer安装请参考其他博客 1.下载 Yii2 高级模板 跟普通模板一样 , 可以通过 Composer 和 github 下载 ,不过官方 ...

  4. adb查询log命令

    http://blog.csdn.net/fulinwsuafcie/article/details/8028572

  5. SqlServer灾备方案(本地)

    如果你曾经有那么一个不经意的心跳来自于数据库数据损坏:错误的新增.更新.删除 .那么下面的方案一定能抚平你的创伤! 对于一个数据库小白来说,数据库的任何闪失带来的打击可说都是致命的.最初,我们让一个叫 ...

  6. ["1", "2", "3"].map(parseInt)?

    ["1", "2", "3"].map(parseInt)得到什么? 答案是:[1, NaN, NaN]. 原因:parseInt接收的是两 ...

  7. jquery编写插件的方法

     版权声明:作者原创,转载请注明出处! 编写插件的两种方式: 1.类级别开发插件(1%) 2.对象级别开发(99%) 类级别的静态开发就是给jquery添加静态方法,三种方式 1.添加新的全局函数 2 ...

  8. python的基础知识

    Python文件命名时不要有中文,不然在dos中不能执行 D:\Program Files\Py>Python hellyy.pyYear:2016Month(1-12):1Day(1-31): ...

  9. 谈谈Fragment中的onActivityResult

    大家或许有遇到这个神坑,在Fragment中使用startActivityForResult能够成功,可是在Fragment中的onActivityResult却无法被调用.一不注意就让人一夜愁白了头 ...

  10. OC #import和@class的用法和区别

    OC #import和@class的用法和区别 import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑, ...