2012年7月17日

USACO section1.2 Transformations

摘要: 模拟题,给出一个 n×n 的字符块的两个状态(分别为初始态和目标态)和几种操作,问目标态最少是由初始态的哪个操作完成的,WA 3 次。/*PROG: transformLANG: C++*/# include <cstdio># include <cstring># define N 10 + 5void print(char s[][N], int n){ for (int i = 0; i < n; ++i) puts(s[i]);}/* rotate 90 degrees clockwise */void rotate(char s[][N], i 阅读全文

posted @ 2012-07-17 21:37 getgoing 阅读(157) 评论(0) 推荐(0) 编辑

USACO section1.2 Name That Number

摘要: 直接暴力也可,用的二分搜索+枚举,文件输入的调试了很久,后来不知道怎么就对了。二分的是写成求最小符合条件的下标;/*PROG: namenumLANG: C++*/# include <cstdio># include <cstring># include <cstdlib># define N 5000 + 10# define LEN 20int len[N];char s[N][LEN];char tab[30];void build(void){ for (int i = 'A'; i < 'S'; ++i) t 阅读全文

posted @ 2012-07-17 20:30 getgoing 阅读(187) 评论(0) 推荐(0) 编辑

USACO section1.2 Dual Palindromes

摘要: 给出 n 和 s (十进制),打印 s 后面 n 个在 2-10 进制中至少两个进制下为回文数的十进制表示。/*PROG: dualpalLANG: C++*/# include <cstdio># include <cstring>int n, s;void strRev(char *s){ char ch; int len = strlen(s), mid = len / 2; for (int i = 0; i < mid; ++i) ch = s[i], s[i] = s[len-1-i], s[len-1-i] = ch;}void to(int ba. 阅读全文

posted @ 2012-07-17 17:38 getgoing 阅读(176) 评论(0) 推荐(0) 编辑

USACO section1.2 Palindromic Squares

摘要: 给出一个数 n(十进制),求出 1-300 范围内所有平方(n 进制)为回文串的数,并打印。/*PROG: palsquareLANG: C++*/# include <cstdio># include <cstring># define N 300void strRev(char *s){ char ch; int len = strlen(s), mid = len / 2; for (int i = 0; i < mid; ++i) ch = s[i], s[i] = s[len-1-i], s[len-1-i] = ch;}void to(int bas. 阅读全文

posted @ 2012-07-17 17:18 getgoing 阅读(224) 评论(0) 推荐(0) 编辑

USACP section1.2 Milking Cows

摘要: 把所有区间(如果能)合并起来,求最长连续区间长度和最长间隔长度(两个区间之间,如果只有一个区间为0);/*PROG: milk2LANG: C++*/# include <cstdio># include <cstdlib># define N 5000 + 10struct val{ int s, t;} a[N];int n;int cmp(const void *x, const void *y){ val *p = (val*)x; val *q = (val*)y; if (p->s == q->s) return p->t - q-> 阅读全文

posted @ 2012-07-17 01:27 getgoing 阅读(221) 评论(0) 推荐(0) 编辑

USACO section1.1 Broken Necklace

摘要: 这道题理解了题目的含义就很简单了;如果题目改成每次只统计一端,遇到不同时开始统计另一端,并且只有相邻两次统计的(可以转化)为同一种颜色时,才能累加,难度会很高,可能要DP了;/*PROG: beadsLANG: C++*/# include <cstdio># include <cstring># define N 350 + 10int n;char s[N];int count(char *s, int k){ int ret = 0; int i = k; int j = (k-1+n) % n; char cur; while(ret < n && 阅读全文

posted @ 2012-07-17 00:34 getgoing 阅读(243) 评论(0) 推荐(0) 编辑

导航