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. makefile编写

    概述 什么是makefile?或许非常多Winodws的程序猿都不知道这个东西,由于那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序猿,makefil ...

  2. Nginx+Https自己敲命令生成证书

    nginx配置https访问 一.准备 环境:centos6.8 nginx:1.13.6 二.开始       首先安装依赖包: yum install -y gcc gcc-c++ autocon ...

  3. angualr-cli命令创建文件

    1.创建Component ng g component my-new-component 2.创建 Directive ng g directive my-new-directive 3.创建Pip ...

  4. 软件分享--EditPlus

    有些人分享的报毒,不好用,所以在这分享个好用的.百度网盘地址: 链接: https://pan.baidu.com/s/15s7I6p0K_36KPtzRDbHfrw 密码:kl5w

  5. poj1416

    #include<iostream> using namespace std; int target,datanum; ],temproad[]; int N,flag,maxsum; ] ...

  6. STREAMING HIVE流过滤 官网例子 注意中间用的py脚本

    Simple Example Use Cases MovieLens User Ratings First, create a table with tab-delimited text file f ...

  7. react将字符串转义成html语句

    在使用reactjs库的时候,会遇到将一段html的字符串,然后要将它插入页面中以html的形式展现,然而直接插入的话页面显示的就是这段字符串,而不会进行转义,可以用以下方法插入,便可以html的形式 ...

  8. Mac mini 使用打印机

    扫描与打印机使用: 第一步:左上角黑苹果->系统偏好设置->打印机与扫描仪->设置打印机 第二步:Launchpad -> 预览 -> 文件 -> 从扫描仪导入-& ...

  9. yum 运行失败

    https://stackoverflow.com/questions/47633870/rpm-lib64-liblzma-so-5-version-xz-5-1-2alpha-not-found- ...

  10. DOS特殊字符转义方法

    http://www.robvanderwoude.com/escapechars.php 期望得到的字符 转义后字符 说明 % %% May not always be required in do ...