bzoj第一题,ctsc2001.

黑书上的递归例题,我们定义time()函数,递归求解即可。

这个题用到了一个小技巧:可以使用枚举来搞算法。

#include <iostream>
#include <cstdio>
#include <set>
using namespace std;
int n, m;
int p(int a, int b) {
if(b > a) return b-a;
else return b+3-a;
}
int times(int i, int j, int t1, int t2, int t3) {
if(i == j) return t3;
else if (i > j) return times(j, i-j, t2, t3, t1) + p(t1, t3);
else return times(i, j-i, t1, t3, t2) + p(t2, t3);
}
struct ans
{
int a, b, c;
bool operator < (const ans &b) const {
if(this->a != b.a) return this->a < b.a;
else return this->b < b.b;
}
};
int main() {
//freopen("student.in", "r" , stdin);
//freopen("out.out", "w", stdout);
while(scanf("%d %d", &n, &m) && n != -1) {
int p = 0;
set<ans> aa;
for(int i = 1; i <= m-1; i++) {
int a = i;
int b = m-i;
int c = m;
int k = n % 3;
if(k == 0) k = 3;
int xx = (k-1)%3;
int yy = (k+1)%3;
if(xx == 0) xx = 3;
if(yy == 0) yy = 3;
if(times(a, b, yy, xx, k) == n) {
if(k == 1) {
aa.insert((ans) {a+b, a, b} );
}
else if(k == 2) {
aa.insert((ans) {b, a+b, a} );
}
else if(k == 3) {
aa.insert((ans) {a, b, a+b} );
}
p++;
}
if(times(a, b, xx, yy, k) == n) {
if(k == 1) {
aa.insert((ans) {a+b, b, a} );
}
else if(k == 2) {
aa.insert((ans) {a, a+b, b} );
}
else if(k == 3) {
aa.insert((ans) {b, a, a+b} );
}
p++;
}
}
cout << p/2 << endl;
set<ans>::iterator it;
for(it = aa.begin(); it != aa.end(); it++) {
cout << (*it).a << ' ' << (*it).b << ' ' << (*it).c << endl;
}
}
return 0;
}

bzoj2523 聪明的学生的更多相关文章

  1. [BZOJ2523][Ctsc2001]聪明的学生

    [BZOJ2523][Ctsc2001]聪明的学生 试题描述 一位教授逻辑学的教授有三名非常善于推理且精于心算的学生A,B和C.有一天,教授给他们三人出了一道题:教授在每个人脑门上贴了一张纸条并告诉他 ...

  2. BZOJ2523/LOJ2646 聪明的学生

    BZOJ2523/LOJ2646 聪明的学生 第一道CTSC的题. 因为是思维题,所以思路就不写了.直接看代码吧. #include<bits/stdc++.h> #define M 30 ...

  3. 【bzoj2523】【CTSC2001】聪明的学生

    真是神仙题,做完后感觉智商提(jiang)升(di)了 这种题一般都是把局面设成状态,然后发现可以由一种状态转移到另一种状态,那就是 $dp$ 了. 但是这道题怎么设呢? 题目中给了你一个结论,一般题 ...

  4. *HDU1847 博弈

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  5. 探索性思维——How to Solve It

    我觉得这篇文章和什么都能扯上点关系,比如编程. 很多人已经讨论过数学与编程的关系了,这里不想过多探讨,只是简单提一下:有些人把数学贬低地一文不值,认为做一般的应用软件用不到数学:而有些人则把数学拔高到 ...

  6. [转] ACM中国国家集训队论文集目录(1999-2009)

    国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98试题PICTURE谈起>来煜坤:<把握本质,灵活运用——动态规划的深入探讨>齐鑫:<搜索方法中的 ...

  7. 【原创】我是怎么从零开始教女同学进行php开发的(4)

    周末给自己放了一个小假,周五晚上跟同学出去吃饭,周六又休息了一天,直到周日才坐到电脑前面码字. 本来说好周末这两天把之前三篇的代码根据评论中的建议好好修改一下的,顺便认真系统地学习一遍HTML基础.结 ...

  8. lecture11-hopfiled网络与玻尔兹曼机

    Hinton课程第11课 这部分的课程算是个知识背景,讲述RBM的来源吧,毕竟是按照hopfield--BM-RBM的路线过来的. 因为水平有限,都是直译,如果纠结某句话,肯定看不懂,所以这些课程只需 ...

  9. HD1847-(博弈论??)

    Good Luck in CET-4 Everybody! Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知 ...

随机推荐

  1. asp.net中membership使用oracle数据库(二)

    需要安装的东西都准备好了,继续生成后台表.过程.函数.触发器等.ps/sql中 @@E:\oracle\product\11.2.0\client_1\ASP.NET\SQL\InstallAllOr ...

  2. mac下wifi无法连接的问题

    今天遇到了一个Wi-Fi打死连不上的问题,关闭重启电脑路由器都试了一下还是不行,最后把资源库/偏好设置/SystemConfiguration下的文件都删除,有一个是删不掉的,留着不影响,然后重启,O ...

  3. svn工具安装下载Tomcat源码以及导入eclipse

    安装 1.svn下载地址 https://tortoisesvn.net/downloads.html 2.语言包下载 3.先安装svn,在直接安装语言包 4.桌面右键可以看到相关svn信息 下载To ...

  4. 网络知识学习1---(基础知识:ISO/OSI七层模型和TCP/IP四层模型)

    以下的内容和之后的几篇博客只是比较初级的介绍,想要深入学习的话建议自己钻研<TCP/IP详解 卷1:协议> 1.ISO/OSI七层模型    下四层是为数据传输服务的,物理层是真正的传输数 ...

  5. python学习笔记(1)

    python简介 python是Guido van Rossum在圣诞节打发无聊的时间时候写出来的语言. python是解释性的语言. python是动态类型的语言. python是强类型定义语言(高 ...

  6. 简单理解Socket

    题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...

  7. linux 内核与用户空间通信之netlink使用方法

    转自:http://blog.csdn.net/haomcu/article/details/7371835 Linux中的进程间通信机制源自于Unix平台上的进程通信机制.Unix的两大分支AT&a ...

  8. Monitoring Processes with Supervisord

    If you're interested in more of this type of content, check out the Servers for Hackers eBook! As so ...

  9. Ext3文件系统及JDB介绍

    Ext3介绍 对于ext3文件系统,磁盘空间划分一系列block groups,每个group有位图来跟踪inode和data块的分配和范围.其物理布局如下: Superblock:位于group内第 ...

  10. Updating My Notepad_1.1

    The old version Notepad 1.0 you can get it from below link : My Notepad I am very happy to announce ...