摘要: 题目中的原话:(**注意**:在任意一层的第一段也可以走到本层的最后一段或上一层的最后一段)。 好恶心的题目,就是一个BFS,一个个搜,但是又类似于DP,不知道怎么形容的好,反正很猥琐。 最后就这样吧,我想说,好好学OI,拿IOI冠军,我要报送。#include <stdio.h>#include <stdlib.h>#define MAX 100000#define deal(a, b) deal_(a, b, i, j)int num[1001][1001];int f[1001][1001];int used[1001][1001];int n;struct qu 阅读全文
posted @ 2011-08-04 21:34 zqynux 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 我也不知道为什么,负数的进制就是这么写的,反正记住就是,如果余数是负数,那就加上base,然后再用n-新余数 再除以base。 代码如下:#include <stdio.h>#include <stdlib.h>#define MAX 10000int ans[MAX];int start;const char str[] = "0123456789ABCDEFGHIJKLNNOPQRSTUVWXYZ";int main(int argc, char **argv){ int i; int n, base; int r; while(scanf(&q 阅读全文
posted @ 2011-08-04 17:27 zqynux 阅读(1098) 评论(0) 推荐(0) 编辑
摘要: 题解,转自:http://zhurui250.blog.163.com/blog/static/137270520201012410434807/【问题转述】给出m1,m2以及若干个个si,求si^a mod m1^m2=0中a的最小值。若无解,输出-1。【分析】由于数据太大,根本不能直接计算,但是我们可以通过因式分解来找到突破点。当m1分解出一个因数而s[i]没有时,这种情况肯定无解,当m1和s[i]对此因数各有一定数量时,我们可以根据这个算出让此因数得到整除的a最小值(可能不是所有因数中最优答案,取所有因数答案最大的)设x为m此因数的个数,y为s[i]此因数的个数,则a=x div y; 阅读全文
posted @ 2011-08-04 16:55 zqynux 阅读(277) 评论(0) 推荐(0) 编辑