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=12;
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
int n,m,ans=0;
int vis[50],shift=10;
void dfs(int d){ans=max(ans,d-2);if(d>m+n) return;for(int x=1;x<=d-1;x++){int y=d-x;if(x<1||x>n||y<1||y>m) continue;//printf("dfs %d  %d %d\n",d,x,y);if(vis[x-y+shift]) continue;vis[x-y+shift]=1;dfs(d+1);vis[x-y+shift]=0;}
}int main(){freopen("bishop.in","r",stdin);freopen("bishop.out","w",stdout);n=read();m=read();dfs(2);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=1005,INF=1e9;
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
int n,s,a[N],w[N],vis[N],cnt=0,ans=1e9;
void dfs(int x,int t,int val){//printf("dfs %d %d %d\n",x,t,val);
cnt++;vis[x]=1;if(cnt==n){ans=min(ans,val);return;}int i;for(i=x+1;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]=0;}for(i=x-1;i>=1;i--) if(!vis[i]) break;//printf("vis %d  hi2 %d %d\n",vis[1],x,i);if(i>=1){int tt=t+(a[x]-a[i]);dfs(i,tt,val+tt*w[i]);cnt--;vis[i]=0;}
}
int main(){freopen("czybm.in","r",stdin);freopen("czybm.out","w",stdout);n=read();s=read();for(int i=1;i<=n;i++){a[i]=read();w[i]=read();}dfs(s,0,0);printf("%d",ans);
}

//区间DP#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=1005;
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
int n,st,a[N],w[N],s[N];
int f[N][N][2];
inline int sum(int i,int j){return s[j]-s[i-1];}
void dp(){for(int i=1;i<=n;i++) f[i][i][0]=f[i][i][1]=abs(a[i]-a[st])*s[n];for(int l=2;l<=n;l++)for(int i=1;i<=n;i++){int j=i+l-1;if(j>n) break;f[i][j][0]=min(f[i+1][j][0]+(a[i+1]-a[i])*(sum(j+1,n)+sum(1,i)),f[i][j-1][1]+(a[j]-a[j-1])*(sum(j,n)+sum(1,i-1))+(a[j]-a[i])*(sum(1,i-1)+sum(j+1,n)) );f[i][j][1]=min(f[i][j-1][1]+(a[j]-a[j-1])*(sum(j,n)+sum(1,i-1)),f[i+1][j][0]+(a[i+1]-a[i])*(sum(1,i)+sum(j+1,n))+(a[j]-a[i])*(sum(1,i-1)+sum(j+1,n)) );}
}
int main(){//freopen("czybm.in","r",stdin);//freopen("czybm.out","w",stdout);n=read();st=read();for(int i=1;i<=n;i++){a[i]=read();w[i]=read();s[i]=s[i-1]+w[i];printf("n %d\n",i);}dp();printf("%d",min(f[1][n][0],f[1][n][1]));
}

转载于:https://www.cnblogs.com/candy99/p/5968110.html

NOIP模拟赛20161016R1相关推荐

  1. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  2. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排 ...

  3. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  4. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

  5. NOIP模拟赛csy2021/10/30

    NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...

  6. 【WZOI第二次NOIP模拟赛Day1T2】世界末日 解题报告

    [WZOI第二次NOIP模拟赛Day1T2]世界末日 Problem 2 世界末日 (doomsday.pas/c/cpp) 背景 话说CWQ大牛终于打开了那扇神秘大门,但迎接他的不是什么神秘的东西, ...

  7. NOIP 模拟赛 长寿花 题解

    NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同. 相邻两层颜色集 ...

  8. 辣鸡(ljh) NOIP模拟赛 模拟 平面几何 数论 化学相关(雾)

    [题目描述] 辣鸡ljhNOI之后就退役了,然后就滚去学文化课了. 然而在上化学课的时候,数学和化学都不好的ljh却被一道简单题难住了,受到了大佬的嘲笑. 题目描述是这样的:在一个二维平面上有一层水分 ...

  9. NOIP模拟赛套路技巧经验总结

    前言 还有2天就NOIP了,之前做了这么多场模拟赛,是时候拿出来总结一下, 算是给自己一针强心剂. 列表 从最近的考试总结起(个人认为的重点,可能有重复,仅供参考): (转化很重要,一定要简化问题过后 ...

最新文章

  1. php文件夹列表,php获取文件夹下面的文件列表和文件夹列表
  2. noi 7221 拯救公主 (状态压缩+bfs)
  3. 数据库设计规范之对象设计使用规范
  4. 账簿登记重要十条规则
  5. 简单示例立马搞懂Java日期格式中yyyy-MM-dd HH:mm:ss和YYYY-MM-dd hh:mm:ss的区别
  6. 关于jdk1.5之后的自定拆装箱
  7. 《c语言从入门到精通》看书笔记——第6章 选择结构程序设计
  8. PHP留言并展示_利用PHP实现简单留言板
  9. 用Cython加速Python到“起飞”
  10. 计算机科学与技术文科可以学么,文科生成绩一般,大学可以选择计算机吗?
  11. ipsec穿越NAT功能的配置
  12. android 添加文件打开方式
  13. python预测模型类型,多变量时间序列的预测和建模指南(附Python代码)
  14. java liveness_Kubernetes Liveness and Readiness Probes
  15. 2018-2019赛季多校联合新生训练赛第四场 18-12-09
  16. 【重磅首发新品】AM335x全面升级处理器——AM62x,四核Cortex-A53+M4F,主频1.4GHz
  17. Android 内存管理中的 Shallow heap Retained heap
  18. 微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)...
  19. WIFI万能钥匙显密码版
  20. hdoj 4417 Super Mario 【树状数组 + 思维】

热门文章

  1. matlab怎么更改图形窗口的句柄值,matlab图形句柄属性
  2. 设计模式-软件设计七大原则
  3. matlab如何记录时间,求助:在MATLAB里如何输入时间序列中的时间
  4. python爬虫作业帮_【Python爬虫】01作业
  5. c语言贪心算法合并箭,贪心算法:用最少数量的箭引爆气球
  6. openstack horizon dashboard_OpenStack最新版本:Ussuri发布亮点
  7. python 提取邮箱的正则表达式
  8. 中的工程图怎样才能做成正规图纸_新一代一拖二口罩机图纸详细设计三维模型带工程图...
  9. 一台电脑有线连接路由器另一台无线连接_两个无线路由器怎么实现无线桥接【详细介绍】...
  10. IP与以太网的包收发操作