1185专题

HIHO #1185 : 连通性·三

题目链接 先使用tarjan算法,计算强连通分量,进行缩点成DAG,然后在使用拓扑排序计算 tarjan中,我们只需要从1号节点计算,因为开始时在1号点。 建立新图的过程中,1号点不能到达的点也不用建立到新图里面 #include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#defin

XTU 1185 Bob's Problem

Bob's Problem Accepted : 53 Submit : 356Time Limit : 1000 MS Memory Limit : 65536 KB 题目描述 Bob今天碰到一个问题,他想知道x3+y3 = c 是否存在正整数解? 输入 第一行是一个整数K(K≤20000),表示样例的个数。 以后每行一个整数c(2≤c≤109) 输出 每行输出一个样例的结果,

poj 1185 炮兵阵地(动态规划:状压DP)

用二进制数表示一行的状态 预处理记录满足条件的状态对应十进制数 因为当前行仅与上两行有关,所以状态转移方程为: dp[i][k][t] = max(dp[i][k][t], dp[i-1][j][k]+num[t]) num[t]表示状态t对应的炮台数 dp[i][k][t]表示第i行状态为t,第i-1行状态为k时对应的最大值 代码如下: #include <cstdio>#i

poj -- 1185 炮兵阵地

题解:二进制压缩,枚举每行存在的状态,判断与前一行的状态的关系,找出最大值 dp[i][j][k] = max(dp[i][j][k] , dp[i-1][k][[l] + p[j]) 表示第i行第j个状态,i-1行的第k个状态炮兵的最大数量 #include<stdio.h>#include<string.h>#include<iostream>#include<algorithm

【Python】【难度:简单】Leetcode 1185. 一周中的第几天

给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数:day、month 和 year,分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}。   示例 1: 输入:day = 31, month = 8

POJ 1185 - 炮兵阵地

Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表

炮兵阵地 POJ - 1185

点击打开链接 第i行只和第i-1行 第i-2行有关 显然要DP 发现列数很小 考虑状态压缩 但若使dp[i][j][k]代表在第i行 第i行取j状态 第i-1行取k状态 那复杂度就是n*(2^m)*(2^m)*(2^m) 这里最巧妙的是 对于某一行 它所有状态中 满足炮兵两两不交叉的状态非常少 因为这相当于要求二进制位上相邻1至少相隔两位 这样就把m变的很小 最后注意一下细节     #

1185 威佐夫游戏 V2

1185 威佐夫游戏 V2  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。 例如:2堆石子分别为3颗和5颗。那么不论A怎

(POJ 1185)炮兵阵地 状压DP经典题目

炮兵阵地 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用”H” 表示),也可能是平原(用”P”表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区

51nod 1185 威佐夫游戏 V2

题目描述 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。 例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。 Input 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T

算法实验T14——POJ 1185炮兵阵地

题目链接 思路         一道非常好的状压DP题。         首先我们从题目中总结出约束条件:         炮不能安置在山上;        一行内的炮不能相距小于2个距离;        一列的炮不能相距小于2个距离;         注意到地形图只有山和平原两种状态,可以用 1 和 0 来表示,因此每一行就是一个最多10位的二进制串转化成10进制对应1024种状态。这

【LeetCode每日一题】1185.一周中的第几天(模拟+调用库函数:三种方法)

2023-12-30 文章目录 一周中的第几天方法一:模拟思路步骤 方法二:调用库函数方法三:调用库函数 一周中的第几天 ​ 提示:给出的日期一定是在 1971 到 2100 年之间的有效日期。 方法一:模拟 思路 1.可以根据1970年的最后一天(周四),计算出和输入日期间隔了几天(ans+之前的年份天数和+当前的月份天数和+输日的天数) 2.求出具体

LeetCode每日一题——1185. Day of the Week

文章目录 一、题目二、题解 一、题目 Given a date, return the corresponding day of the week for that date. The input is given as three integers representing the day, month and year respectively. Return the

LC 1185. 一周中的第几天

1185. 一周中的第几天 难度 :简单 题目大意: 给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数:day、month 和 year,分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}。 给出的日

POJ 1185 炮兵阵地 状态压缩DP

http://hi.baidu.com/brabt_king/blog/item/38396a8ad00b9414c8fc7a2f.html 比较好的解题报告大概如此了。不过没有提供代码。 代码参考了http://www.chenyajun.com/2010/02/20/4511 哎,羞愧,还是参考了才做出来的。这种先预处理可能状态,然后再枚举的思想是重要的。根据题目中的条件,每行的状态实际