SP10228题解
因为题目输入格式,输出格式和数据范围没给全。所以我补充一下。 输入格式第一行输入 $T$ 表示有 $T$ 组数据。每组数据中第一行两个整数 $R,C$ ,接下来输入一个 $R$ 行 $C$ 列的网格 $S$ ,如果 $S_{i,j} < 0$ 表示恐龙,否则表示药水。 输出格式输出包含 $T$ 组数据,每组数据输出一个正整数,表示由单元格 $1,1$ 到单元格 $R,C$ 的最小力量值。 数据范围与约定$1 \leq T \leq 5$ $2 \leq R,C \leq 500$ $-10^3 \leq S_{i,j} \leq 10^3$ $S_{1,1} = S_{R,C} = 0$ 下面回归正轨 解题思路这道题是一道明显的 dp 题。 定义状态: $dp_{i,j}$ 表示从第 $i$ 行第 $j$ 列走到第 $R$ 行第 $C$ 列所需最小体力值。 初始状态: $dp_{R,C} = 1$ ,因为 $S_{R,C} = 0$ 且体力值必须为正数,所以最小值是 $1$ 。 最终解: $dp_{1,1}$ ,从第 $1$ 行第...
CF1591A题解
这题真还挺简单的(红题不都是吗?) 废话不多说!开始!(这也不废话吗) 理解题意题目描述 题中说得很清楚了 输入格式 本题有多组数据。首先,输入整数 $t$ ,表示数据组数 $t(1\le t\le100)$ ,对于每组数据,输入整数 $n$ ,表示一共浇花或没浇花的天数 $(1\leq n\leq100)$ ,然后输入 $n$ 个整数 $a_1,a_2,\dots a_n\ (a_i=0$ 或 $a_i=1)$ , $a_i=1$ 表示第 $i$ 天浇花了,否则表示第 $i$ 天没浇花。 输出格式 对于每组数据,如果花活着,输出花 $n$ 天后的高度,如果花死了,输出 $-1$ 。 解法这道题我们用模拟的解法。用一变量 $h$ 表示花的高度, $a_1,a_2,\dots a_n$ 浇表示第几天浇花了没。一开始让 $h$ 为 $1$ ,从第 $1$ 天起每天都会有四种情况: 如果今天浇花而且昨天也浇花了, $h+5$ 。 如果今天浇花而且昨天没浇花, $h+1$ 。 如果今天没浇花而且昨天浇花了, $h$ 不变。 如果今天没浇花而且昨天也没浇花,...
UVA1149题解
看一眼算法标签就知道了是贪心 ps:文章翻译有些错误 最后一行是包裹的容量 应该是 第二行是包裹的容量 解题思路 对物品数组按体积由大往小排序 用两个变量当前指针和后指针 如果第一个和最后一个能装到箱子里,计数器 $+1$ ,前指针向后挪一位,后指针向前挪一位。否则只能装大的,计数器 $+1$ ,并且前指针要向后挪一位。 重复循环直到前指针大于或等于后指针,输出结果。 流程图(自己做的,有点丑) 献上代码核心代码 12345678910111213141516171819202122232425cin>>n;memset(V,0,sizeof(V));p1=1,p2=n,cnt=0;初始化cin>>v;for(int i=1;i<=n;i++){ cin>>V[i];}数据输入sort(V+1,V+n+1,greater<int>()); 排序while(true){ 循环处理 if(p1==p2||p1>p2){ 结束了 cnt++; 因为...
UVA483题解
题目传送门 水题 看不懂stringstream,所以用了这种方法,【分析】可以直接用cin>>…读入。(cin遇到空格,回车,TAB停止读入 比如I love you.会读入I 和 love 和 you. 怎么实现?直接用 1234string s;while(cin>>s){ /*语句段*/} 它会一直读入数据,直到EOF(输入中止结束符) 百科 https://baike.baidu.com/item/EOF/1017800?fr=aladdin 模拟:(以I love you.为例: 首先读入I,遇到空格,执行语句段,然后读入love……最后读入you.遇到EOF,结束。 reverse(s.begin(),s.end());:reverse:定义在<algorithm>中,指将字符串、数组等反转,s.begin和s.end是两个广义指针,分别指向s的开头和末尾。 介绍一下getchar: getchar原本的意思指读入一个字符,在这里可以把两个字符串之间的空格/回车”吃掉“,示例如下: 之后怎么办?输出...