上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页
摘要: DP,DP方程好复杂,不知道怎么说的好,代码里分解吧:#include <stdio.h>#include <stdlib.h>#define max(a, b) ((a)>(b)?(a):(b))int g[300001][2], f[300001];int main(int argc, char **argv){ int i, min = -1; int m, s, t; scanf("%d%d%d", &m, &s, &t); g[0][0] = m; for(i = 1; i <= t; i++){ if( 阅读全文
posted @ 2011-08-05 19:46 zqynux 阅读(421) 评论(2) 推荐(0) 编辑
摘要: 因式分解神马的,具体上代码:#include <math.h>#include <stdio.h>#include <stdlib.h>int a0, a1, b0, b1;int prim[20000], num[20000], end;int ans[200000], len;int gcd(int a, int b){ int t; while(b != 0){ t = a % b; a = b; b = t; } return a;}void dfs(int now, int pro){ int i; if(now == end){ ans[len+ 阅读全文
posted @ 2011-08-05 19:44 zqynux 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 题目中的原话:(**注意**:在任意一层的第一段也可以走到本层的最后一段或上一层的最后一段)。 好恶心的题目,就是一个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) 编辑
摘要: 纯模拟,考虑0啊,1啊,-1啊等的特殊情况就行了。。。 代码如下:#include <stdio.h>#include <stdlib.h>const char xishu[2][4] = {"%+d", "%d"};void output(int a, int b, int *c){ if(a == 0){ return; } if(b == 0){ printf(xishu[*c], a); }else if(abs(a) == 1){ if(*c){ if(a == -1){ printf("-"); } 阅读全文
posted @ 2011-08-03 16:11 zqynux 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 作者: tuhaihe 日期: 2011 年 06 月 02 日 发表评论 (12)查看评论0我一直有个困扰:在Fedora 15 GNOME 3环境下,使用Delete键删除文件的时候,必须配合Ctrl键才能实现。每次删除文件,这都是一个鸡肋对我操作相当不方便。但是,这一局面终于在今日得到解决。各位有同样困扰的同学不用发愁了。设置方法如下:#1,打开终端,输入命令:gsettings set org.gnome.desktop.interface can-change-accels true#2,打开Nautilus文件管理器,选中一个文件,然后打开“编辑(Edit)”选项,将鼠标移动到“M 阅读全文
posted @ 2011-08-02 12:39 zqynux 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 就用DFS吧,然后注意剪枝和环就行,代码如下:#include <stdio.h>#include <stdlib.h>int rode[80000], next[80000];int time[80000], tili[80000];int tail;int head[5000];int n, m;int have, ans = 0xFFFFFFF;int use, tmp;int t;void add(int a, int b, int c, int d){ tili[tail] = c; time[tail] = d; rode[tail] = b; next[t 阅读全文
posted @ 2011-08-01 14:16 zqynux 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 直接暴力搜索就是,没太多的算法,不过我要说的是,题目的数据根本没按照题目的范围来,比题目说的范围要大一些……鄙视出题者,,有10 4的数据,所以根据数据,我定义的MAX是427。 代码如下:#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAX 427int ans[11], max;int s[11];int n, k;int count(int *need){ int i; for(i = 1; i <= MAX; i++){ if(need[i] > n){ b 阅读全文
posted @ 2011-08-01 12:25 zqynux 阅读(687) 评论(0) 推荐(0) 编辑
摘要: 跟8年前NOIP 2000 方格取数的题目几乎一样,不多解释了,代码:#include <stdio.h>#include <stdlib.h>#define min(a, b) ((a)<(b)?(a):(b))#define max(a, b) ((a)>(b)?(a):(b))int map[51][51];int f[100][51][51];int main(int argc, char **argv){ int i, j, k, c; int m, n; scanf("%d%d", &m, &n); for(i 阅读全文
posted @ 2011-07-30 20:28 zqynux 阅读(1031) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页