题解 [HDU6746] Civilization(贪心+模拟)
一道贪心 + 细节模拟题
题意很简单,这里不详细写了
观察题目,\(n\) 只有 500 ,可以 \(n \times n\) 枚举每个位置作为起点,对于每个位置而言,可以 \(6 \times 6\) 去枚举周围曼哈顿距离为 \(3\) 的点,将其都压入一个 vector 中然后排序,显然在城市分配完毕后,选择权值较大的点作为接下来的工作地点是最优的,接下来模拟每个回合的过程就好了,注意,不需要枚举回合,因为大量相邻的回合所提供的贡献都是相同的,可以将其划分一下,就能快速计算了。
当然这种写法也是时间复杂度挺大的,几乎是卡 3s 通过了
代码
const int N = 5e3 + 10;
int a[N][N];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n, x, y;
cin >> n >> x >> y;
for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) cin >> a[i][j];
int ans = INT_MAX;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++) {
vectornum;
num.push_back(a[i][j]);
for (int xx = i - 3; xx <= i + 3; xx++)
for (int yy = j - 3; yy <= j + 3; yy++) {
if (xx <= 0 || yy <= 0 || xx > n || yy > n) continue;
if (abs(xx - i) + abs(yy - j) > 3) continue;
if (xx == i && yy == j) continue;
num.push_back(a[xx][yy]);
}
sort(num.begin() + 1, num.end(), greater());
while (num.size() <= 9)
num.push_back(0);
int day = (abs(x - i) + abs(y - j) + 1) / 2; //回合
int sum = 0; //粮食
int t = num[0]; //当前劳动力
for (int i = 1; i <= 8; i++) { //枚举人数
int target = i * i * 8; //需要多少粮食才能升人口
if (sum < target) {
int temp = (target - sum + t - 1) / t; //还需要工作几个回合
sum += temp * t; //加上temp回合的贡献
day += temp; //加上temp回合
}
t += num[i]; //贪心加上新来的人口
}
ans = min(ans, day);
}
cout << ans << "\n";
}
}
题解 [HDU6746] Civilization(贪心+模拟)的更多相关文章
- Codeforces Round #547 (Div. 3) D. Colored Boots (贪心,模拟)
题意:有两个字符串,两个字符串中的相同字符可以相互匹配,\(?\)可以和任意字符匹配,输出最大匹配的字符数量和它们分别两个字符串中的位置. 题解:很容易贪心,我们先遍历第一个字符串,然后在第二个字符串 ...
- 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts
题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...
- 贪心+模拟 ZOJ 3829 Known Notation
题目传送门 /* 题意:一串字符串,问要最少操作数使得成为合法的后缀表达式 贪心+模拟:数字个数 >= *个数+1 所以若数字少了先补上在前面,然后把不合法的*和最后的数字交换,记录次数 岛娘的 ...
- CodeForces ---596B--Wilbur and Array(贪心模拟)
Wilbur and Array Time Limit: 2000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Su ...
- 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...
- 洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心)
洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/132 ...
- CodeForces 797C Minimal string:贪心+模拟
题目链接:http://codeforces.com/problemset/problem/797/C 题意: 给你一个非空字符串s,空字符串t和u.有两种操作:(1)把s的首字符取出并添加到t的末尾 ...
- UVA 11776 - Oh Your Royal Greediness! - [贪心/模拟]
题目链接:https://cn.vjudge.net/problem/UVA-11776 题意: 给出数字n(0<=n<=1000),代表有n个农民,接下来有n行,每行两个数字S和E代表这 ...
- 【BZOJ2457】[BeiJing2011]双端队列 贪心+模拟
[BZOJ2457][BeiJing2011]双端队列 Description Sherry现在碰到了一个棘手的问题,有N个整数需要排序. Sherry手头能用的工具就是若 ...
- [CSP-S模拟测试]:开心的金明(贪心+模拟)
题目传送门(内部题117) 输入格式 第一行一个整数$k$,表示需要处理的月份数. 接下来的$k$行,每行$4$个整数,第$1+i$行分别为:$c_i,d_i,m_i,p_i$ 接下来的$k-1$行, ...
随机推荐
- 6款AI工具网站,赶紧收藏,以备不时之需
1.海鲸AI-支持AI对话.AI文档解析.AI绘画 海鲸AI-基于新一代人工智能技术,只需输入问题,即可得到智能回答 https://www.weijiwangluo.com/talk/ 海鲸AI是 ...
- 在NET8中使用简化的 AddJwtBearer 认证
开发环境 系统版本: win10 .NET SDK: NET8 开发工具:vscode 参考引用:使用 dotnet user-jwts 管理开发中的 JSON Web 令牌 注意:以下示例中的端口. ...
- 我理解的null和“ “,希望大家给予更正。
我认为null是零的意思,就是没有任何的东西,比如说文件的读取中,没有任何的东西就是null,刚刚用new String创建的String里面有一个引用,所以它不为null,如果用String h=& ...
- 封装RabbitTemplate,使用自定义消息转换器
前面创建项目我就省了...活不多说直接上代码! 核心代码 RabbitMQConfig import lombok.extern.slf4j.Slf4j; import org.springframe ...
- 华企盾DSC:wps个人模式无策略组新建的文件仍然加密
解决方法:右键wps安装目录手动解密即可(原因:wps模板被加密导致)
- 冲刺秋招之牛客刷Java记录第二天
第一题 下列代码输入什么? public class Test { public static Test t1 = new Test(); { System.out.println("blo ...
- 字符集(Character Set)和编码(Encoding)的历史演化
字符集(Character Set)和编码(Encoding)是两个相关但不同的概念,它们在计算机和信息技术领域用于处理文本数据. 字符集(Character Set): 字符集是一种定义了一组字符. ...
- Keepass调用Xshell、SecureCRT、RDP、Putty的方法(一劳永逸版)
依次点击"工具"--"选项"--"集成"--"网址替代"--"添加"--添加"方案&quo ...
- Java 并发编程(二 )Thread
线程状态 线程一般的状态转换图如下: 在线程生命周期中存在的状态解释如下: New(初始化)状态 此时线程刚刚被实例化,可以通过调用 start() 方法来启动这个实例化的的线程,使其状态转变成为 R ...
- Vue3中使用TypeScript封装axios遇到的问题(AxiosRequestConfig)
如果您有更好的解决方法,欢迎评论区评论. 版本 "dependencies": { "axios": "^1.4.0", "van ...