A.Babs' Box Boutique

给定n个盒子,每个盒子都有长宽高(任意两个盒子长宽高不完全相同),现在选盒子的任意两面,要求x1 <= x2 && y1 <= y2,问最多能选多少盒子满足这需求。

直接dfs暴搞................

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
# define INF 0x7FFFFFFF
using namespace std;
int vis[11];
struct node {
int a[3];
}p[11];
int ans,n;
int dx[] = {0,0,1};
int dy[] = {1,2,2};
//bool cmp(int a,int b) {
// return a > b;
//} void dfs(int step,int x,int y) {
if(step > ans) ans = step;
if(step == n) return ;
for(int i=0; i<n; i++) {
if(vis[i] == 1) continue; for(int j=0; j<3; j++) {
int xx = p[i].a[dx[j]];
int yy = p[i].a[dy[j]];
if(xx >= x && yy >= y ) {
vis[i] = 1;
dfs(step + 1,xx,yy);
vis[i] = 0;
}
}
}
} int main() {
int casee = 1;
while(scanf("%d",&n) && n) {
if(n == 0) break;
int tmp[3];
for(int i=0; i<n; i++) {
scanf("%d%d%d",&tmp[0],&tmp[1],&tmp[2]);
sort(tmp,tmp+3);
p[i].a[0] = tmp[0];
p[i].a[1] = tmp[1];
p[i].a[2] = tmp[2];
}
ans = 0;
memset(vis,0,sizeof(vis));
dfs(0,0,0);
printf("Case %d: %d\n",casee++,ans);
}
return 0;
}

C.Hexagon Perplexagon

题意就不写了:戳这

dfs暴搞,每一层传入三个参数,层数, 每一块需要匹配的前驱点,和最后一块需要匹配的点..........

#include <iostream>
#include <stdio.h>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
int map[8][8];
int ans[8];
int save[8];
int vis[8];
int n,ok; void change(int x,int pos) {
int i;
for(i=0; i<6; i++) {
if(map[x][i] == pos) break;
}
pos = i;
int cnt = 0;
for(int i=0; i<6; i++) {
save[cnt++] = map[x][pos];
pos ++;
if(pos >= 6) pos -= 6;
}
} int getpre(int pos,int t) {
t --;
if(t < 0) t = 5;
return map[pos][t];
} int getsuc(int pos,int t) {
t ++;
if(t > 5) t = 0;
return map[pos][t];
} void dfs(int step,int p1,int p2) {
if(step == 7) return ;
if(ok == 1) return ;
for(int i=0; i<7; i++) {
if(vis[i] == 1) continue;
int j;
for(j=0; j<6; j++) {
if(map[i][j] == save[step-1]) break;
}
int tmp1 = getpre(i,j);
int tmp2 = getsuc(i,j);
if(step == 1) {
ans[step] = i;
vis[i] = 1;
dfs(step + 1,tmp1,tmp2);
vis[i] = 0;
}
if(step > 1 && step < 6) {
if(tmp2 == p1 ) {
ans[step] = i;
vis[i] = 1;
dfs(step+1,tmp1,p2);
vis[i] = 0;
}
}
if(step == 6) {
if(tmp2 == p1 && tmp1 == p2 ) {
ans[step] = i;
ok = 1;
}
}
if(ok == 1) return ;
}
}
int main() {
int T;
cin >> T;
int casee = 1;
while(T --) {
for(int i=0; i<7; i++) {
for(int j=0; j<6; j++) {
scanf("%d",&map[i][j]);
}
}
ok = 0;
for(int i=0; i<7; i++) {
memset(vis,0,sizeof(vis));
vis[i] = 1;
change(i,1);
ans[0] = i;
dfs(1,0,0);
if(ok) break;
}
printf("Case %d: ",casee++);
if(ok == 0) {
printf("No solution\n");
continue;
}
printf("%d",ans[0]);
for(int i=1; i<7; i++) {
printf(" %d",ans[i]);
}
puts("");
}
return 0;
}

D.I've Got Your Back(gammon)

暴搞,每一种排列分别保存它的各个点的情况,并且用map保存每种排列的顺序下标

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <cmath>
#include <map>
using namespace std;
struct node
{
int pos[10];
} p[20000]; map <string,int>mm;
int cnt ;
string str = "";
string str2 = "";
string change(int x)
{
str = "";
str2 = "";
if(x == 0)
{
str += '0';
return str;
}
int cn = 0;
while(x)
{
int t = x % 10;
str += t + '0';
x = x / 10;
}
int len = str.length();
for(int i=len-1; i>=0; i--) str2 += str[i];
str2 += '\0';
return str2;
}
void init()
{
cnt = 0;
for(int i=0; i<=15; i++)
{
for(int j=0; j<=15; j++)
{
for(int k=0; k<=15; k++)
{
for(int l=0; l<=15; l++)
{
for(int x=0; x<=15; x++)
{
for(int y=0; y<=15; y++)
{
int t = i + j + k + l + x + y;
if(t > 15) break;
if(t == 15)
{
string tmp;
p[cnt].pos[0] = i;
p[cnt].pos[1] = j;
p[cnt].pos[2] = k;
p[cnt].pos[3] = l;
p[cnt].pos[4] = x;
p[cnt].pos[5] = y;
tmp += change(i);
tmp += ' ';
tmp += change(j);
tmp += ' ';
tmp += change(k);
tmp += ' ';
tmp += change(l);
tmp += ' ';
tmp += change(x);
tmp += ' ';
tmp += change(y); mm[tmp] = cnt;
cnt ++;
}
}
}
}
}
}
}
} int n;
int main()
{
init();
char c;
int a,b,d,e,f,g;
int casee = 1;
while(cin >> c)
{
if(c == 'e') break;
printf("Case %d: ",casee++);
if(c == 'm')
{
scanf("%d%d%d%d%d%d",&a,&b,&d,&e,&f,&g);
string tmp;
tmp += change(a);
tmp += ' ';
tmp += change(b);
tmp += ' ';
tmp += change(d);
tmp += ' ';
tmp += change(e);
tmp += ' ';
tmp += change(f);
tmp += ' ';
tmp += change(g);
//cout << tmp << endl;
printf("%d\n",mm[tmp]);
}
if(c == 'u')
{
scanf("%d",&a);
printf("%d",p[a].pos[0]);
for(int i=1; i<6; i++)
{
printf(" %d",p[a].pos[i]);
}
puts("");
}
}
return 0;
}

组队练习赛(Regionals 2012, North America - East Central NA)的更多相关文章

  1. 130825组队赛-Regionals 2012, North America - East Central NA

    A.Babs' Box Boutique 一道简单的dfs搜索题,需要两两比较,然后搜到底,得到最大值就行了.比赛时队友写的,我只负责debug..赛后自己写的.. #include<iostr ...

  2. Regionals 2012, North America - Greater NY 解题报告

    这套题..除了几何的都出了 完全没时间学几何.杯具 A,B,J 水题不解释 C.Pen Counts 这题的话 写几个不等式限制边得范围就行了 然后枚举最小边 D.Maximum Random Wal ...

  3. HNU 13064 Cuckoo for Hashing解题报告 North America - East Central 2013

    题目大意:使用两个哈希表来解决哈希冲突的问题.假如现在有两个哈希表分别为:H1,H2 ,大小分别为:n1,n2:现有一数据X需要插入,其插入方法为: 1.计算index1 = X MOD N1,  若 ...

  4. Regionals 2013 :: North America - Southeast USA

    Regionals 2013 :: North America - Southeast USA It Takes a Village As a Sociologist, you are studyin ...

  5. 2015 UESTC Winter Training #6【Regionals 2010 >> North America - Rocky Mountain】

    2015 UESTC Winter Training #6 Regionals 2010 >> North America - Rocky Mountain A - Parenthesis ...

  6. MPI Maelstrom(East Central North America 1996)(poj1502)

    MPI Maelstrom 总时间限制:  1000ms 内存限制:  65536kB 描述 BIT has recently taken delivery of their new supercom ...

  7. ICPC North Central NA Contest 2018

    目录 ICPC North Central NA Contest 2018 1. 题目分析 2. 题解 A.Pokegene B.Maximum Subarrays C.Rational Ratio ...

  8. poj 2732 Countdown(East Central North America 2005)

    题意:建一个家庭树,找出有第d代子孙的名字,按照要求的第d代子孙的数从大到小输出三个人名,如果有一样大小子孙数的,就按字母序从小到大将同等大小的都输出,如果小于三个人的就全输出. 题目链接:http: ...

  9. East Central North America Region 2015

    E 每过一秒,当前点会把它的值传递给所有相邻点,问t时刻该图的值 #include <iostream> #include <cstdio> #include <algo ...

随机推荐

  1. wordpress教程之the_author_meta()显示用户的信息

    描述 模板标签函数the_author_meta可以显示用户数据.如果该函数在文章主循环(Loop)中,则不必指定作者的ID值,标签所显示的就是当前文章作者的内容.如果在主循环(Loop)外,则需要指 ...

  2. 夏宇闻教授谈FPGA工程师的入门学习

    1. 必须清楚自己究竟适合不适合做工程师. 看看自己的性格特点,是不是特别安静,又耐得住寂寞.因为FPGA工程师是一个辛苦的工作,不但要通过不断学习研究提升自己的设计水平,还要经常性的熬夜加班敲写代码 ...

  3. cf479D Long Jumps

    D. Long Jumps time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  4. SQL 通配符

    在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符.SQL 通配符必须与 LIKE 运算符一起使用,必须放在引号内. 在 SQL 中,可使用以下通配符: %:替代一个或多个字符. _:仅替代 ...

  5. UGUI Button控件

    今天一起来学习下Button控件, Button控件其实是由Text,Button,Image组件形成的. 这里就简单介绍下Button组件 Interactable: 代表该组件是否进行交互, 我们 ...

  6. HDU 1559 最大子矩阵 (DP)

    题目地址:pid=1559">HDU 1559 构造二维前缀和矩阵.即矩阵上的点a[i][j]表示左上方的点为(0,0),右下方的点为(i,j)的矩阵的和.然后枚举每一个矩阵的左上方的 ...

  7. 关于iOS多线程,你看我就够了

    在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使 用 Swift  ...

  8. Linux下JDK的安装

    1.首先到官网上下载 jdk-7u7-linux-x64.tar.gz 2.将jdk-7u7-linux-x64.tar.gz拷贝到/usr/lib/jdk/目录下面,这里如果没有jdk文件夹,则创建 ...

  9. winform —— 常用控件

    1.textbox: 属性:text:    文本selectedtext:         获或设置选中文本canundo:         是否能够撤销 passwordchar:替换字符实现密码 ...

  10. log4.net 日志工具使用

    1. 在应用程序的相同目录下建立: winform :    程序名.exe.config          .(log4net程序,就log4net.exe.config) web:         ...