「日常训练」Equation(HDU-5937)
题意与分析
时隔一个月之后来补题。说写掉的肯定会写掉。
题意是这样的:给1~9这些数字,每个数字有\(X_i\)个,问总共能凑成多少个不同的等式\(A+B=C\)(\(A,B,C\)均为1位,\(1+2=3\)和\(2+1=3\)视为不同等式)?
这题的搜索稍微有一些技巧:先暴力再搜索,而不是起手就搜索。怎么个暴力呢?把所有能够构成\(A+B=C\)的情况先全部穷举出来,然后看先有的这些bricks的数目能不能够实现这些情况——这就是基础搜索了。两种情况:a)当前情形能够用,答案+1;b)当前情况无效,遍历下一个,答案不变。
然后就没有然后了,过了.jpg
场上竟然队伍没几个写这个的。。。被带榜了啊
代码
/*
* Filename: hdu5937.cpp
* Date: 2018-11-11
*/
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define PB emplace_back
#define MP make_pair
#define fi first
#define se second
#define rep(i,a,b) for(repType i=(a); i<=(b); ++i)
#define per(i,a,b) for(repType i=(a); i>=(b); --i)
#define ZERO(x) memset(x, 0, sizeof(x))
#define MS(x,y) memset(x, y, sizeof(x))
#define ALL(x) (x).begin(), (x).end()
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
#define DEBUG(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)
using namespace std;
using pi=pair<int,int>;
using repType=int;
using ll=long long;
using ld=long double;
using ull=unsigned long long;
struct Node
{
int x,y,z;
Node(int _x, int _y, int _z):
x(_x), y(_y), z(_z) {}
};
vector<Node> vec;
void init()
{
for(int i=1;i<=8;++i)
for(int j=1;i+j<=9;++j)
vec.PB(i,j,i+j);
}
int brick[15],ans=0;
void dfs(int pnt, int nans)
{
if(pnt==vec.size()) { ans=max(nans, ans); return; }
if(nans+vec.size()-pnt<=ans) return;
int x=vec[pnt].x,
y=vec[pnt].y,
z=vec[pnt].z;
if(brick[x]>0 && brick[y]>0 && brick[z]>0)
{
brick[x]--; brick[y]--; brick[z]--;
if(brick[x]>=0 && brick[y]>=0 && brick[z]>=0) dfs(pnt+1, nans+1);
brick[x]++; brick[y]++; brick[z]++;
}
dfs(pnt+1,nans); // This is important!
}
int
main()
{
init(); //cout<<vec.size()<<endl;
int T; cin>>T;
rep(kase,1,T)
{
rep(i,1,9) cin>>brick[i];
ans=0;
dfs(0,0);
cout<<"Case #"<<kase<<": "<<ans<<endl;
}
return 0;
}
「日常训练」Equation(HDU-5937)的更多相关文章
- 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)
题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...
- 「日常训练」 神、上帝以及老天爷 (HDU 2048)
题意 数论中的错排问题.记错排为Dn" role="presentation">DnDn,求Dnn!" role="presentation&q ...
- 「日常训练」 不容易系列之(3)—— LELE的RPG难题 (HDU 2045)
题目简述 有排成一行的n" role="presentation">nn个方格,用红(Red).粉(Pink).绿(Green)三色涂每个格子,每格涂一色,要求任何 ...
- 「日常训练」 Fire!(UVA-11624)
与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...
- 「日常训练」COMMON 约数研究(HYSBZ-1968)
题意与分析 感谢https://www.cnblogs.com/Leohh/p/7512960.html的题解.这题话说原来不在我的训练范围,正好有个同学问我,我就拿来做做.数学果然不是我擅长的啊,这 ...
- 「日常训练」Mike and Feet(Codeforces Round #305 Div. 2 D)
题意 (Codeforces 548D) 对一个有$n$个数的数列,我们要求其连续$x(1\le x\le n)$(对于每个$x$,这样的连续group有若干个)的最小数的最大值. 分析 这是一道用了 ...
- 「日常训练」 Mike and Fun (CFR305D2B)
题意(CodeForces 548B) 每次对01矩阵中的一位取反,问每次操作后,单列中最长连续1的长度. 分析 非常非常简单,但是我当时训练的时候WA了四次...无力吐槽了,人间 不值得.jpg 代 ...
- 「日常训练」Common Subexpression Elimination(UVa-12219)
今天做的题目就是抱佛脚2333 懂的都懂. 这条题目干了好几天,最后还是参考别人的代码敲出来了,但是自己独立思考了两天多,还是有收获的. 思路分析 做这条题我是先按照之前的那条题目(The SetSt ...
- 「日常训练」Magic Stones(CodeForces-1110E)
题意 给定两个数组c和t,可以对c数组中的任何元素变换\(c_i\)成\(c_{i+1}+c_{i-1}-c_i\),问c数组在若干次变换后能否变换成t数组. 分析 这种魔法题目我是同样的没做过. ...
随机推荐
- 树形背包O(n * v^2)入门
我虽然做了好几道树形背包的题,但是一直不是十分理解,对于每一道题,总是看题解就明白,然后换一道题自己写不出来.临近NOIP,gg让我们强化一下背包以及树形背包,我也恰有此打算,于是又开始从头学习了树形 ...
- PHP-------- JQUERY方式
JQUERY方式 1.根据ID取元素,Jquery对象 var div = $("#one"); 2.根据class取 var div = $(".test&quo ...
- 17、配置嵌入式servlet容器(1)
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器 1).如何定制和修改Servlet容器的相关配置 1.修改和server有关的配置 (Se ...
- js秒换成天时分
js秒换成天时分 function timeStamp( second_time ){ var time = parseInt(second_time) + "秒"; if( pa ...
- IOS开发数据存储篇—IOS中的几种数据存储方式
IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09 421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都 ...
- java模拟浏览器发送请求
package test; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOExcep ...
- oracle 优化相关
--选择最有效率的表名顺序: Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理, 在FROM子句中包含多 ...
- Oracle数据库随机取某条记录的一个字段值
思路: 先将取出的值随机排序,然后在随机排序的每次取第一条的结果 举例如下: select * from(select t.code fromTBIZOPS_PROVINCE t ORDER BY ...
- ie浏览器下载文件时文件名乱码
做一个文件下载功能时,用ie浏览器下载时文件名乱码,火狐和谷歌正常,修改后ie显示正常,修改方法如下: @RequestMapping(value = "fileDownload" ...
- 什么是 better-scroll(转自知乎网 : 黄轶)
什么是 better-scroll better-scroll 是一个移动端滚动的解决方案,它是基于 iscroll 的重写,它和 iscroll 的主要区别在这里.better-scroll 也很强 ...