t1

题意:n*m的棋盘上从(1,1)走到(n,m),只能向下或向右,一些格子有老鼠,每个老鼠互不相同,当处于与老鼠有重边的格子时,视为看见了这只老鼠,求到终点看到最少的不同老鼠数。

分析:DP 由于求得是看到的不同的老鼠数目,不能直接用过河卒做,因为同一个位置的老鼠可能会统计多次,我们还需要增加一维即方向。

f[i,j,0]表示到从上面一个格子走到(i,j)时最少老鼠数,f[i,j,1]表示左边。

f[i,j,0]:=min(f[i-1,j,0]+a[i,j-1],f[i-1,j,1])+a[i+1,j]+a[i,j+1];

f[i,j,1]:=min(f[i,j-1,1]+a[i-1,j],f[i,j-1,0])+a[i+1,j]+a[i,j+1];

对于(i,j)如果左边有老鼠,那么从(i-1,j-1)走到(i-1,j)再到(i,j)会看到该老鼠两次但只能记为1次,(i-2,j)走到(i-1,j)再到(i,j)时只看到该老鼠一次,故要加上这一次。上边有老鼠也同理。

代码:

program mouse;
var
a:array[..,..]of longint;
f:array[..,..,..]of longint;
n,i,m,j:longint;
function min(x,y:longint):longint;
begin
if x<y then min:=x else min:=y;
end;
begin
assign(input,'mouse.in');
reset(input);
assign(output,'mouse.out');
rewrite(output);
readln(n,m);
for i:= to n do begin
for j:= to m do
read(a[i,j]); readln; end;
for i:= to n do
for j:= to m do
begin
f[i,j,]:=maxlongint div ;f[i,j,]:=maxlongint div ;
end;
f[,,]:=a[,]+a[,]+a[,]; f[,,]:=a[,]+a[,]+a[,];
for i:= to n do
for j:= to m do
if (i<>)or(j<>) then
begin
f[i,j,]:=min(f[i-,j,]+a[i,j-],f[i-,j,])+a[i+,j]+a[i,j+];
f[i,j,]:=min(f[i,j-,]+a[i-,j],f[i,j-,])+a[i+,j]+a[i,j+];
end;
writeln(min(f[n,m,],f[n,m,]));
close(input); close(output);
end.

t2

题意:给出一个无向有权图,图的每个点为一个城市,我们说城市B愿意与城市A建立合作关系,当且仅当对于所有满足d(A,C)<=d(A,B)的城市C,都有R(C)<=R(B)。一个城市的受欢迎程度Bi定义为愿意与其建立合作关系的城市数量,求所有城市受欢迎度和(可以和自己建立关系)

分析:最短路,我们可以将条件转化为对于所有R(c)>R(B)的城市C,都有d(A,C)>d(A,B),我们设l[i]为满足R(x)>R(i)的点到i的最短路,从大到小枚举r的值,然后对R(i)=r的点做最短路,如果在这一过程中某个点d(i,j)<=l[j]说明不可行,则不去松弛。

代码:

program work;
type
point=^node;
node=record
x,v:longint; next:point;
end;
var
a:array[..]of point;
l,r,d,g,w,d1:array[..]of longint;
q:array[..]of longint;
n,i,m,ans,x,y,v,j:longint;
procedure add(x,y,v:longint);
var p:point;
begin
new(p); p^.x:=y; p^.v:=v; p^.next:=a[x]; a[x]:=p;
end;
procedure spfa(s:longint);
var h,t,x,y,k:longint; p:point;
begin
h:=; t:=; q[]:=s; d[s]:=; d1[s]:=; g[s]:=s;w[s]:=s; inc(ans);
while h<t do
begin
inc(h); x:=q[h]; new(p); p:=a[x]; g[x]:=;
if h>= then h:=;
while p<>nil do
begin
y:=p^.x; k:=d1[x]+p^.v;
if k<l[y] then
if (w[y]<>s)or(k<d1[y]) then
begin
d1[y]:=k; if d1[y]<d[y] then d[y]:=d1[y];
if w[y]<>s then begin w[y]:=s; inc(ans); end;
if g[y]<>s then
begin
g[y]:=s; inc(t); q[t]:=y;
if t>= then t:=;
end;
end;
p:=p^.next;
end;
end;
end;
begin
readln(n,m);
for i:= to n do readln(r[i]);
for i:= to m do
begin
readln(x,y,v); add(x,y,v); add(y,x,v);
end;
ans:=;
for i:= to n do l[i]:=maxlongint;
for i:= downto do
begin
for j:= to n do
begin d[j]:=maxlongint div ; g[j]:=; w[j]:=; end;
for j:= to n do
if r[j]=i then spfa(j);
for j:= to n do
if d[j]<l[j] then l[j]:=d[j];
end;
writeln(ans);
end.

【Nescafé 31】杯NOIP模拟赛的更多相关文章

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

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

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

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

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

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

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

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

  5. CH Round #53 -【Nescafé 32】杯NOIP模拟赛

    A.GCD Path http://ch.ezoj.tk/contest/CH%20Round%20%2353%20-%E3%80%90Nescaf%C3%A9%2032%E3%80%91%E6%9D ...

  6. 18年10月31日 NOIP模拟赛

    T1.exercise 题解 数据很小直接模拟 代码 #include<iostream> #include<cstdio> #include<cmath> #in ...

  7. 【强联通分量缩点】【最长路】【spfa】CH Round #59 - OrzCC杯NOIP模拟赛day1 队爷的讲学计划

    10分算法:对于城市网络为一条单向链的数据, 20分算法:对于n<=20的数据,暴力搜出所有的可能路径. 结合以上可以得到30分. 60分算法:分析题意可得使者会带着去的城市也就是这个城市所在强 ...

  8. 【离散化】【扫描线】CH Round #59 - OrzCC杯NOIP模拟赛day1 队爷的新书

    //上图绿色扫描线右侧少画了一条扫描线. 很多区间把数轴分成了很多段,看哪个点的(区间覆盖数*该点权值)最大. 显然在某个区间的右端点的答案是最优的. 排序后 用扫描线从左到右扫描,维护每个点的覆盖数 ...

  9. CH Round #59 - OrzCC杯NOIP模拟赛day1

    第一题:队爷的新书 题意简述:给定n个闭区间,求出一个数p使它与包含它的区间数的积最大,输出这个积. 分析:使用一个差分数组g,每个区间[l,r],l位置加1,r+1的位置减1,从前往后统计,得到对于 ...

随机推荐

  1. HDU2837 Calculation(扩展欧拉定理)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  2. 查询删除的SAP凭证

    标准报表查询:RSSCD100 函数模块:CHANGEDOCUMENT_DISPLAY, Display Change Documents 数据表查询:CDHDR, Change document h ...

  3. 搞定 mybatis generator 三步走

    基于idea 编辑器下maven项目使用mybatis generator快速生成持久层 添加插件:插件网址:http://www.mybatis.org/generator/running/runn ...

  4. JDK1.8简单配置环境变量---两步曲

    鄙人最近重新装完系统之后,在安装和配置jdk1.8的时候,发现网上许多教程配置jdk环境变量时都还在沿用传统的方式配置,但是随着技术的更新,完全没有必要那么麻烦了. 下载和安装jdk的教程,在这里就不 ...

  5. Linux-日期时间相关命令

    获取当前时间 date [root@VM_0_3_centos ~]# date Mon Mar 18 19:13:33 CST 2019 [root@VM_0_3_centos ~]# date相关 ...

  6. 汇编:实现C语言的 ||与&&运算

    ;C程序转汇编(或运算链接) DATAS SEGMENT a Dw b dw cc dw d dw m dw n dw string db dup(?) DATAS ends CODES SEGMEN ...

  7. 记一次微信小程序在安卓的白屏问题

    在做小程序的时候,做到了一个限时商品售卖,用到了倒计时,因为这个原因导致了安卓手机上使用小程序时,将小程序放入后台运行一段时间后,再次进入小程序后出现了页面白屏或者点击事件失效的情况,这里记录下 1. ...

  8. Webpack + Vue 多页面项目升级 Webpack 4 以及打包优化

    0. 前言 早在 2016 年我就发布过一篇关于在多页面下使用 Webpack + Vue 的配置的文章,当时也是我在做自己一个个人项目时遇到的配置问题,想到别人也可能遇到跟我同样的问题,就把配置的思 ...

  9. python错误处理之try...except...finally...错误处理机制。

    今天学习了python的错误处理. 在程序处理的过程中,经常会出现错误,一旦出错就会非常麻烦.所以有的高级语言通常都内置了一套  try...exept...finaly...的错误处理机制,pyth ...

  10. 【机器学习算法基础+实战系列】KNN算法

    k 近邻法(K-nearest neighbor)是一种基本的分类方法 基本思路: 给定一个训练数据集,对于新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例多数属于某个类别,就把输 ...