A HihoCoder 1268 九宫

思路:

  一般类似于数独的题目都是使用回溯解决,这里由于题目数据较小同样可以直接DFS得出结果。这里我用了一个偷懒的方法(next_permutation),直接求出全排列,然后将位置一一对应。

// Asimple
#include <bits/stdc++.h>
#define debug(a) cout<<#a<<" = "<<a<<endl
#define sysp system("pause")
using namespace std;
typedef long long ll;
const int maxn = + ;
ll T, n, sum, num, m, t, len, ans;
int a[] = {, , , , , , , , };
int res[][], Map[][], temp[][]; bool check() {
if(
a[]+a[]+a[] == a[]+a[]+a[] &&
a[]+a[]+a[] == a[]+a[]+a[] &&
a[]+a[]+a[] == a[]+a[]+a[] &&
a[]+a[]+a[] == a[]+a[]+a[] &&
a[]+a[]+a[] == a[]+a[]+a[] &&
a[]+a[]+a[] == a[]+a[]+a[] &&
a[]+a[]+a[] == a[]+a[]+a[]
)
return true;
return false;
} void input() {
for(int i=; i<; i++) {
for(int j=; j<; j++) {
scanf("%d", &Map[i][j]);
}
}
int flag = ;
do{
if( check() ) {
bool f = true;
for(int i=; i<; i++) {
for(int j=; j<; j++) {
temp[i][j] = a[i*+j];
if( Map[i][j] && Map[i][j] != temp[i][j] ) {
f = false;
break;
}
}
if( !f ) break;
}
if( f ) {
if( flag == ) {
flag = ; break;
} else flag = ;
for(int i=; i<; i++) {
for(int j=; j<; j++) {
res[i][j] = temp[i][j];
}
}
}
}
if( flag == ) break;
}while( next_permutation(a, a+));
if( flag == ) printf("Too Many\n");
else {
for(int i=; i<; i++) {
for(int j=; j<; j++) {
printf("%d", res[i][j]);
if( j == ) printf("\n");
else printf(" ");
}
}
}
//sysp;
} int main() {
input();
return ;
}
B HihoCoder 1269 优化延迟

思路:

  看到题目,第一眼就看到了给出的运行时间10s,果断一发暴力TLE。随后仔细看了下题目,发现当K越大,得出的结果也就越小,这个不是裸二分吗,然后直接上手,wa10+次,最后才发现自己的get_sp竟然是返回int,还以为是自己的二分有问题,改了好几版,-_-||。补充一下,k为什么不能为0呢?虽然为0时相当于没加缓冲。

// Asimple
#include <bits/stdc++.h>
#define debug(a) cout<<#a<<" = "<<a<<endl
#define sysp system("pause")
using namespace std;
typedef long long ll;
const int maxn = + ;
ll T, n, sum, num, m, t, len, ans;
ll a[maxn]; ll get_sp(int cnt) {
priority_queue<ll> q;
ll sp = , c = , v;
int i = ;
while( !q.empty() || i < n ) {
while( q.size()<cnt && i<n ) q.push(a[i++]);
v = q.top(); q.pop();
sp += c*v;
c ++;
if( sp > num ) return num + ;
}
return sp;
} void input() {
scanf("%lld %lld", &n, &num);
ll sp = ; ans = -;
for(int i=; i<n; i++) scanf("%lld", &a[i]);
ll low = , high = maxn;
while( low <= high ) {
ll mid = (low+high)/;
if( get_sp(mid)<=num ) {
ans = mid;
high = mid-;
}
else low = mid+;
}
printf("%lld\n", ans);
//sysp;
} int main() {
input();
return ;
}

附上自己wa的截图:

C HihoCoder 1270 建造基地
 思路:
  这道题不由的让我想起了当初做区域赛的网络赛的场景,这完全是道读题目的题,题目看懂了其实还挺简单的。
简单来说就是一个类完全背包的问题,每一层在修建的时候都是在要花最小的代价去满足建筑值。当一层修建完成之后,便是将金属的建筑值更新。
// Asimple
#include <bits/stdc++.h>
#define debug(a) cout<<#a<<" = "<<a<<endl
#define sysp system("pause")
using namespace std;
typedef long long ll;
const int maxn = + ;
const ll INF = <<;
const ll mod = ;
ll T, n, sum, num, m, t, len, ans, k;
ll dp[maxn], a[maxn], b[maxn]; void input() {
while( cin >> T ) {
while( T -- ) {
ans = ;
cin >> n >> m >> k >> t;
for(int i=; i<=m; i++) cin >> a[i];
for(int i=; i<=m; i++) cin >> b[i];
for(int u=; u<=n; u++) {
for(int i = ; i<maxn; i++) dp[i] = INF;
dp[] = ;
for(int i=; i<=m; i++) {
for(int j=; j<=k; j++) {
if( j + b[i] > k ) dp[k] = min(dp[k], dp[j] + a[i]);
else dp[j+b[i]] = min(dp[j+b[i]], dp[j] + a[i]);
}
}
ans += dp[k];
for(int v=; v<=m; v++) b[v] /= t;
}
if( ans >= INF ) cout << "No Answer" << endl;
else cout << ans << endl;
}
}
//sysp;
} int main() {
input();
return ;
}
D HihoCoder 1271 舰队游戏

暂无思路。看了题解说是用贪心+状压过,状态压缩是个好东西,可惜我不会。

AC博客1:https://blog.csdn.net/qq_32400847/article/details/51087220

AC博客2:https://blog.csdn.net/tc_to_top/article/details/50825418

[Offer收割] 编程练习赛1的更多相关文章

  1. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  2. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  3. [Offer收割]编程练习赛46

    [Offer收割]编程练习赛46赛后题解 A.AEIOU 分析

  4. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

  5. HihoCoder1670 : 比赛日程安排([Offer收割]编程练习赛41)(模拟)

    描述 H国编程联赛中有N只队伍,编号1~N. 他们计划在2018年一共进行M场一(队)对一(队)的比赛. 为了让参赛队员能得到充分的休息,联赛组委会决定:每支队伍连续两场比赛之间至少间隔一天.也就是如 ...

  6. [Offer收割]编程练习赛48

    题目1 : 折线中点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定平面上N个点P1, P2, ... PN,将他们按顺序连起来,形成一条折线. 请你求出这条折线的 ...

  7. [Offer收割]编程练习赛3 - 题目3 : 智力竞赛

    智力竞赛 Problem's Link ---------------------------------------------------------------------------- Mea ...

  8. [Offer收割]编程练习赛5-1 小Ho的防护盾

    #1357 : 小Ho的防护盾 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho的虚拟城市正在遭受小Hi的攻击,小Hi用来攻击小Ho城市的武器是一艘歼星舰,这艘歼星 ...

  9. hiho #1272 买零食 [Offer收割]编程练习赛2

    #1272 : 买零食 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰 ...

  10. hiho #1283 hiho密码 [Offer收割]编程练习赛3

    #1283 : hiho密码 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho根据最近在密码学课上学习到的知识,开发出了一款hiho密码,这款密码的秘钥是这样生成的 ...

随机推荐

  1. python中matplotlib画图

    参考 https://blog.csdn.net/u010358304/article/details/78906768 https://www.cnblogs.com/onemorepoint/p/ ...

  2. python中的基础2

    2 2.1 字符串的索引与切片: a = 'ABCDEFGHIJK' print(a[0]) print(a[3]) print(a[5]) print(a[7]) 2.2  字符串的常用方法. pr ...

  3. Lecture6.概率极限理论

    一.随机变量序列的收敛性 1.定义 (1)概率为1收敛: 如果$P{\lim\limits_{n \to \infty}X_n = X} = 1$,则称{Xn}概率为1地收敛于X,或几乎处处(几乎必然 ...

  4. UIAlertController中TextField的用法

    这时候可以添加如下代码: [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { // 可以 ...

  5. 阿里云Ubuntu 18.04安装图形界面

    #!/bin/bash #更新软件库 apt-get update #升级软件 apt-get upgrade #安装ubuntu桌面系统 apt-get install ubuntu-desktop

  6. zookeeper 日志输出到指定文件夹

    最近在研究Zookeeper Storm Kafka, 顺便在本地搭了一套集群, 遇到了Zookeeper日志问题输出路径的问题, 发现zookeeper设置log4j.properties不能解决日 ...

  7. sqlhelp3

    using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...

  8. docker上部署rabbitmq

    1.docker search rabbitmq 2.docker pull rabbitmq:3.6 3.docker run -d -p 5672:5672 -p 15672:15672 --na ...

  9. SQL中ON和WHERE的区别(转)

    原文:https://www.cnblogs.com/guanshan/articles/guan062.html 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时 ...

  10. webpack入门操作教程

    1. webpack介绍 在传统的项目中,一个html文件可能会加载多个js.css文件,如果多人协同开发的话,就会出现全局变量被污染.文件直接的依赖问题 而webpack打包工具,会先分析入口文件的 ...