diff --git a/CWOJ/1193_冰封.cpp b/CWOJ/1193_冰封.cpp new file mode 100644 index 0000000..736a4e3 --- /dev/null +++ b/CWOJ/1193_冰封.cpp @@ -0,0 +1,42 @@ +#include +#include +#include +#define LL long long + +LL fast_plus(LL a, LL b, LL m) { + LL ret = 0; + while(b) { + if(b & 1) + ret = (ret + a) % m; + b >>= 1; + a = (a << 1) % m; + } + return ret; +} + +LL fast_pow(LL a, LL b, LL m) { + LL ret = 1; + while(b) { + if(b & 1) + ret = fast_plus(ret, a, m); + b >>= 1; + a = fast_plus(a, a, m); + } + return ret; +} + +int main() { + int i; + LL n, m, t, aa = 0; + char a[10005]; + std::cin>>a>>n>>m; + for(i = 0; i < strlen(a); i++) + aa = (aa * 10 + a[i] - '0') % m; + if(n == 1) { + std::cout< +#include +#include +typedef long long LL; + +#define _CPP_ +#ifdef _CPP_ +#include +using namespace std; +#endif + +int isp(int a, int p[10000], size_t s) { + if(!a || a == 1) return 0; + int i; + for(i = 0; i < s; i++) + if(!(a % p[i])) + return 0; + return 1; +} + +int main(int argc, char *argv[]) { + int i, cnt, p[10000], ps = 0; +// memset(p, 0, sizeof(p)); + for(i = 2; i < 35000; i++) { + if(isp(i, p, ps)) { + p[ps] = i; + ps++; + } + } + scanf("%d", &cnt); + while(cnt--) { + int i, l = 0, g = 1, z = 1, f = 0, s = 0, t = 1, started = 0; + int *c = (int*) malloc (ps * sizeof(int)); + memset(c, 0, ps); + LL a, o; +#ifdef _CPP_ + cin>>a; +#else + scanf("%lld", &a); +#endif + o = a; + for(i = 0; i < ps; i++) { + if(a == 1) break; + if(!(a % p[i]) && p[i] != o || a == p[i]) { + if(o == p[i] && o != 2) z = 0; + a /= p[i]; + c[i]++; + i--, l++; + } + } + s = ++i; + for(i = 0; i < s; i++) { + if(c[i] > 1) g = 0; + t *= c[i] + 1; + if(c[i]) started++; + if(started && !c[i]) z = 0; + } + free(c); + if(t % 3) f++; +// printf("%s%s%s%s\n", g ? "G" : "", z ? "Z" : "", f ? "F" : "", +// (!g && !z && !f) ? "FUCK" : ""); + + if(t % 3) f++; + if(g) printf("G"); + if(z) printf("Z"); + if(f) printf("F"); + if(!g && !z && !f) printf("FUCK"); + printf("\n"); + } + return 0; +} diff --git a/CWOJ/2198-re_冰封.c b/CWOJ/2198-re_冰封.c new file mode 100644 index 0000000..b9e9164 --- /dev/null +++ b/CWOJ/2198-re_冰封.c @@ -0,0 +1,70 @@ +#include +#include +#include + +void resort(char *a, int size) { + int i; + for(i = 0; i < size / 2; i++) { + char c = a[i]; + a[i] = a[size - 1 - i]; + a[size - 1 - i] = c; + } +} +int max(int a, int b) { return a > b ? a : b; } +int main() { + char *a, *b; + char c[700]; + int i, mark = 0, a0 = 0, b0 = 0; + a = (char* ) malloc (700 * sizeof(char)); + b = (char* ) malloc (700 * sizeof(char)); + for(i = 0; i < sizeof(c); i++) + c[i] = '0'; + scanf("%s%s", a, b); + if(a[0] == '-') { + a0 = 1; + a++; + } + if(b[0] == '-') { + b0 = 1; + b++; + } + resort(a, strlen(a)); + resort(b, strlen(b)); + int size = max(strlen(a), strlen(b)); + for(i = 0; i < size; i++) { + if(i < strlen(a)) { + if(!(a0 == b0) && a0) + c[i] -= a[i] - '0'; + else + c[i] += a[i] - '0'; + } + if(i < strlen(b)) { + if(!(a0 == b0) && b0) + c[i] -= b[i] - '0'; + else + c[i] += b[i] - '0'; + } + c[i] += mark; + mark = 0; + if(c[i] > '9') { + c[i] -= 10; + mark = 1; + } + if(c[i] < '0') { + c[i] += 10; + mark = -1; + } + } + for(i = size; i > 0; i--) + if(c[i] != '0') break; + if(mark < 0 || a0 && b0) printf("-"); + if(mark > 0) printf("1"); + for(; i >= 0; i--) { + if(mark < 0 && (a0 != b0)) + c[i] = '9' - (c[i] - '0'); + printf("%c", c[i]); + } + free(a); + free(b); + return 0; +} diff --git a/CodeVS/1000_冰封.pas b/CodeVS/1000_冰封.pas new file mode 100644 index 0000000..93081ce --- /dev/null +++ b/CodeVS/1000_冰封.pas @@ -0,0 +1,5 @@ +var a, b:longint; +begin + readln(a,b); + writeln(a+b); +end. diff --git a/CodeVS/1001_冰封.cpp b/CodeVS/1001_冰封.cpp new file mode 100644 index 0000000..e7901f8 --- /dev/null +++ b/CodeVS/1001_冰封.cpp @@ -0,0 +1,86 @@ +#include + +const int BIG = 0x3f3f3f3f; +const int size = 501; +int N, min = BIG, max = -BIG, to; +int a[size][size]; +bool used[size]; +int save[size][2]; +int save_cnt; + +void dfs(int c); +int get(); +void test(); + +int main(int argc, char* argv[]){ + auto int M; + auto int x, y, v; + auto int fr; +// test(); + scanf("%i%i", &N, &M); + for(auto int i = 0; i < M; i++){ + scanf("%i%i%i", &x, &y, &v); + a[x][y] = v; + } + scanf("%i%i", &fr, &to); + used[fr] = true; + dfs(fr); + if(!save_cnt) + printf("IMPOSSIBLE"); + else { + int cur = 0; + for(auto int i = 0; i < save_cnt; i++){ + int q = save[i][1] / save[i][0]; + if(q < save[cur][1] / save[cur][0]) + cur = q; +// printf("save[%i][1] = %i, save[%i][0] = %i\n",i , save[i][1],i , save[i][0]); + } + max = save[cur][1]; + min = save[cur][0]; + get(); + if(min == 1) + printf("%i", max); + else + printf("%i/%i", max, min); + } + return 0; +} + +void dfs(int c) { + if(c == to) { +// printf("arrived.\n"); + save[save_cnt][0] = min; + save[save_cnt][1] = max; + save_cnt++; + min = -BIG; + max = BIG; + return ; + } + for(auto int i = 0; i <= N; i++) { + if(a[c][i] && !used[i]) { + if(a[c][i] > max) max = a[c][i]; + if(a[c][i] < min) min = a[c][i]; + used[i] = true; +// printf("from %i to %i\n", c, i); + dfs(i); + used[i] = false; + } + } +} + +int get(){ + for(auto int i = 2; i <= max; i++){ + if(min % i == 0 && max % i == 0){ + min /= i; + max /= i; + i--; + } + } +} + +void test(){ + max = 6; + min = 3; + get(); + printf("6 / 3 => %i / %i\n", max, min); +} diff --git a/CodeVS/1007_冰封.c b/CodeVS/1007_冰封.c new file mode 100644 index 0000000..b7b5acd --- /dev/null +++ b/CodeVS/1007_冰封.c @@ -0,0 +1,20 @@ +/* +作者:千里冰封 +题目:p1007 级数求和 +我特么再也不相信float了 +*/ + +#include + +int main(){ + int a, i; + double b = 0.0; + scanf("%i", &a); + for(i = 1; b < a; i++){ + b += 1.0 / i; + if(b >= a) + break; + } + printf("%i", i); + return 0; +} diff --git a/CodeVS/1010_冰封.c b/CodeVS/1010_冰封.c new file mode 100644 index 0000000..2c1dfc0 --- /dev/null +++ b/CodeVS/1010_冰封.c @@ -0,0 +1,39 @@ +#include + +int xx, yy, hx, hy; +int cnt; +int a[1000][1000]; +void dfs(int x, int y); + +int main(int argc, char* argv[]){ + scanf("%i%i%i%i", &xx, &yy, &hx, &hy); + a[hx][hy] = 1; + + a[hx + 1][hy + 2] = 1; + a[hx + 1][hy - 2] = 1; + a[hx - 1][hy + 2] = 1; + a[hx - 1][hy - 2] = 1; + + a[hx + 2][hy + 1] = 1; + a[hx + 2][hy - 1] = 1; + a[hx - 2][hy - 1] = 1; + a[hx - 2][hy + 1] = 1; + + dfs(0, 0); + printf("%i", cnt); + return 0; +} + +void dfs(int x, int y){ + if(x == xx || y == yy){ + cnt++; + return ; + } + if(x < 0 || y < 0 || x >= xx || y >= yy || a[x][y] == 1){ + return ; + } + a[x][y] = 1; + dfs(x + 1, y); + dfs(x, y + 1); + a[x][y] = 0; +} diff --git a/CodeVS/1011_冰封.c b/CodeVS/1011_冰封.c new file mode 100644 index 0000000..d7dbdb1 --- /dev/null +++ b/CodeVS/1011_冰封.c @@ -0,0 +1,20 @@ +#include +int res = 0; + +void dfs(int cur){ + if(cur == 0) + return ; + res++; + auto int i; + for(i = 1; i <= cur / 2; i++) + dfs(i); +} + +int main(int argc, char* argv[]){ + auto int num = 0; + scanf("%i", &num); + dfs(num); + printf("%i", res); + // while(1); + return 0; +} diff --git a/CodeVS/1012-unfinished_冰封.c b/CodeVS/1012-unfinished_冰封.c new file mode 100644 index 0000000..ab19611 --- /dev/null +++ b/CodeVS/1012-unfinished_冰封.c @@ -0,0 +1,21 @@ +/* +:ǧ +Ŀ:p1012 ԼС +*/ + +#include + +long get(long x, long y){ + long m = y / x; + long i, cnt = 0; + for(i = 1; i < m; i++){ + + } +} + +int main(int argc, char* argv[]){ + long a, b, m; + scanf("%i%i", &a, &b); + printf("%i", get(a, b)); + return 0; +} diff --git a/CodeVS/1014_冰封.c b/CodeVS/1014_冰封.c new file mode 100644 index 0000000..c90837b --- /dev/null +++ b/CodeVS/1014_冰封.c @@ -0,0 +1,24 @@ +/* +作者:千里冰封 +题目:p1014 装箱问题 +*/ + +int i, v, max = 0, a[35], n; +#include +#include +void dfs(int idx, int size){ + if(size >= v) return ; + max = max > size ? max : size; + if(idx >= n - 1) return ; + idx++; + dfs(idx, size); + dfs(idx, size + a[idx]); +} +int main(){ + scanf("%i%i", &v, &n); + for(i = 0; i < n; i++) + scanf("%i", &a[i]); + dfs(-1, 0); + printf("%i", v - max); + return 0; +} diff --git a/CodeVS/1023_冰封.c b/CodeVS/1023_冰封.c new file mode 100644 index 0000000..52a2735 --- /dev/null +++ b/CodeVS/1023_冰封.c @@ -0,0 +1,19 @@ +/* +作者:千里冰封 +题目:p1023 GPA计算 +*/ + +#include + +int main(int argc, char* argv[]){ + int a, i,c = 0, m = 0; + float n = 0.0, tol = 0.0; + scanf("%i", &a); + for(i = 0; i < a; i++){ + scanf("%i%f", &m, &n); + tol += m * n; + c += m; + } + printf("%.2f", tol / c); + return 0; +} diff --git a/CodeVS/1025-unfinished_冰封.c b/CodeVS/1025-unfinished_冰封.c new file mode 100644 index 0000000..a065522 --- /dev/null +++ b/CodeVS/1025-unfinished_冰封.c @@ -0,0 +1,35 @@ +/* +作者:千里冰封 +题目:p1025 选菜 +*/ + +#include +const int size = 101; +int k, n, d[size], c[size], m[size], dp[size]; +double x, v[size]; +int isin(int idx){ + int i; + for(i= 0; i < k; i++) + if(idx == i) return 1; + return 0; +} +int main(){ + scanf("%d%d%lf", &n, &k, &x); + int i; + for(i = 0; i < n; i++) + scanf("%d", &d[i]); + for(i = 0; i < n; i++) + scanf("%lf", &v[i]); + for(i = 0; i < n; i++) + scanf("%d", &c[i]); + for(i = 0; i < k; i++) + scanf("%d", &m[i]); + for(i = 0; i < n; i++){ + int j; + for(j = n - 1; j >= v[i]; j++){ + + } + } + for(;;); + return 0; +} diff --git a/CodeVS/1031_冰封.c b/CodeVS/1031_冰封.c new file mode 100644 index 0000000..a30eeda --- /dev/null +++ b/CodeVS/1031_冰封.c @@ -0,0 +1,49 @@ +/* +:ǧ +Ŀ:p1031 +*/ + +#include +#include + +int a[17]; +int book[18]; +int size; + +int isPrime(int num){ + int i; + for(i = 2; i <= sqrt(num); i++) + if(!(num % i)) + return 0; + return 1; +} + +void dfs(int idx){ + if(idx == size){ + if(!isPrime(a[0] + a[idx])) return ; + int i; + printf("1"); + for(i = 1; i < size; i++) + printf(" %i", a[i]); + printf("\n"); + return ; + } + int i; + for(i = 2; i <= size; i++){ + if(!book[i] && isPrime(a[idx - 1] + i)){ + book[i] = 1; + a[idx] = i; + dfs(idx + 1); + book[i] = 0; + } + } +} + +int main() { + scanf("%i", &size); + a[0] = 1; + book[0] = 1; + book[1] = 1; + dfs(1); + return 0; +} diff --git a/CodeVS/1043-unfinished_冰封.c b/CodeVS/1043-unfinished_冰封.c new file mode 100644 index 0000000..7ccb341 --- /dev/null +++ b/CodeVS/1043-unfinished_冰封.c @@ -0,0 +1,37 @@ +#include +#include +const int size = 0xf; +int max(int x, int y){return x > y ? x : y;} +int main() { + int a[size][size], dp[size][size], n; + memset(a, 0, size * size); + memset(dp, 0, size * size); + scanf("%d", &n); + while(1){ + int x, y, v; + if(x == 0 && y == 0 && v == 0) + break; + scanf("%d%d%d", &x, &y, &v); + a[x][y] = v; + dp[x][y] = v; + } + int i,j; + for(i = 1; i <= n; i++) + for(j = 1; j <= n; j++) + dp[i][j] += max(dp[i-1][j], dp[j][i-1]); + printf("%d", dp[--i][--j]); + scanf("%d%d%d"); + return 0; +} +/* +8 +2 3 13 +2 6 6 +3 5 7 +4 4 14 +5 2 21 +5 6 4 +6 3 15 +7 2 14 +0 0 0 +*/ diff --git a/CodeVS/1044_冰封.c b/CodeVS/1044_冰封.c new file mode 100644 index 0000000..20b7fae --- /dev/null +++ b/CodeVS/1044_冰封.c @@ -0,0 +1,30 @@ +#include +#include +int fmax(int x, int y){ + return x > y ? x : y; +} +int main(){ + int res2 = 0,res = 0, i, a[25], b[25], c[25], n = 0; + memset(b, 0, 25); + memset(c, 0, 25); + while(scanf("%i",&i)==1) + a[n++]=i; + n--; + for(i = 0; i < n; i++){ + int j, max2 = 1, max = 1; + for(j = 0; j < i; j++){ + if(a[j] < a[i]) + max = fmax(max, b[j] + 1); + else + max2 = fmax(max2, c[j] + 1); + } + b[i] = max; + c[i] = max2; + res2 = fmax(res2, c[i]); + res = fmax(res, b[i]); + } + + printf("%i\n%i", res2, res); + for(;;); + return 0; +} diff --git a/CodeVS/1071_冰封.c b/CodeVS/1071_冰封.c new file mode 100644 index 0000000..7b6015a --- /dev/null +++ b/CodeVS/1071_冰封.c @@ -0,0 +1,10 @@ +/* +作者:千里冰封 +题目:p1071 Hello World +*/ + +#include +int main(){ + printf("Hello World"); + return 0; +} diff --git a/CodeVS/1075_冰封.c b/CodeVS/1075_冰封.c new file mode 100644 index 0000000..d386f4f --- /dev/null +++ b/CodeVS/1075_冰封.c @@ -0,0 +1,34 @@ +/* +:ǧ +Ŀ:p1075 +*/ + +#include +#include + +int cmp(const void *x, const void *y){ + return *(int*)x > *(int*)y; +} + +int main(int argc, char* argv[]){ + int a[1000], size, all = 0; + int out[1000]; + int i, j; + scanf("%i", &size); + for(i = 0; i < size; i++) + scanf("%i", &a[i]); + qsort(a, size, sizeof(a[0]), cmp); + for(i = 0; i < size; i++){ + if(a[i] == a[i + 1]) { + continue; + } + out[all] = a[i]; + all++; + } + printf("%i\n", all); + for(i = 0; i < all; i++){ + printf("%i ", out[i]); + } + + return 0; +} diff --git a/CodeVS/1076_冰封.c b/CodeVS/1076_冰封.c new file mode 100644 index 0000000..da4ce40 --- /dev/null +++ b/CodeVS/1076_冰封.c @@ -0,0 +1,23 @@ +/* +:ǧ +Ŀ:p1076 +*/ + +#include +#include + +int cmp(const void *x, const void *y){ + return *(int*)x > *(int*)y; +} + +int main(int argc, char* argv[]){ + int a[100000], size; + int i, j; + scanf("%i", &size); + for(i = 0; i < size; i++) + scanf("%i", &a[i]); + qsort(a, size, sizeof(a[0]), cmp); + for(i = 0; i < size; i++) + printf("%i ", a[i]); + return 0; +} diff --git a/CodeVS/1083_冰封.c b/CodeVS/1083_冰封.c new file mode 100644 index 0000000..1ac5a20 --- /dev/null +++ b/CodeVS/1083_冰封.c @@ -0,0 +1,22 @@ +/* +作者:千里冰封 +题目:p1083 Cantor表 +*/ + +long long a, m, n; +#include +void f(long long *m, long long *n, int i){ + *n = i; + *m = 1; + *n += a; + *m -= a; +} +int main(int argc, char* argv[]){ + scanf("%lld", &a); + int i; + for(i = 0; (a -= i) > 0; i++); + if(i % 2) f(&m, &n, i); + else f(&n, &m, i); + printf("%lld/%lld", m, n); + return 0; +} diff --git a/CodeVS/1140-failed_冰封.cpp b/CodeVS/1140-failed_冰封.cpp new file mode 100644 index 0000000..d04a91d --- /dev/null +++ b/CodeVS/1140-failed_冰封.cpp @@ -0,0 +1,76 @@ +// 我决定重构了! + +#include + +long num ; +long res ; +long cnt ; +bool book[26] ; +char e[26] ; +int size ; + +typedef struct { + char a[5] ; +} ele ; + +ele a[1000] ; + +void dfs(int idx, ele n){ + if( idx >= num - 1 ){ + a[cnt] = n ; + cnt++ ; + return ; + } + for(int i = 0; i < size; i++){ + if(book[i]) continue ; + book[i] = true ; + n.a[idx] = e[i] ; + dfs(idx + 1, n) ; + book[i] = false ; + } +} + +int main(int argc, char** argv){ + + // init book do + for(auto int i = 0; i < 26; i++) + book[i] = false; + // end + + // init e and size do + auto char from, to ; + auto int aa, bb ; + scanf("%i%i%li", &aa, &bb, &num) ; + size = (int)(aa - bb) ; + from = 'a' + --aa ; + to = 'a' + --bb ; + for(char aaa = from; + aaa < to; aaa++) + e[aaa - from] = aaa ; + // end + + // get in do + auto char *in ; + scanf("%s", in) ; + // end + + // get the array do + ele f ; + dfs(0, f) ; + // end + + int i ; + for(i = 0; i < 1000; i++){ + int j ; + for(j = 0; j < size; j++) + if(a[i].a[j] != in[j]) break; + if(j >= size) + break ; + } + for(int i = 0; i < 5; i++){ + if(i >= cnt) break ; + printf("%s\n", a[i].a) ; + } + while(1); + return 0; +} diff --git a/CodeVS/1140-unfinished_冰封.cpp b/CodeVS/1140-unfinished_冰封.cpp new file mode 100644 index 0000000..0d70697 --- /dev/null +++ b/CodeVS/1140-unfinished_冰封.cpp @@ -0,0 +1,53 @@ +#include +#include +/* + JamǸϲĿѧˡʹðּʹСдӢĸʹӷḻʡ + ļУÿֵλͬģʹͬĸӢĸԭȵ˳ǰĸСĸ + ǰġ֡ΪJam֡JamУÿĸͬҴϸġ + ÿΣJamָʹĸķΧ磬210ʾֻʹ{b,c,d,e,f,g,h,i,j}Щĸ + ٹ涨λΪ5ôJam֡bdfij֮Ӧǡbdghi + UVαʾJam֡bdfij롰bdghiUҲJamPʹU + ǣ + ڴļһJam֣˳ں5Jam֣ûôJam֣ôм +*/ + +char a[100]; +char fro; +int size; +size_t len; + +bool dfs(size_t idx) { + if(a[idx] >= fro + size - len + idx) { + printf("a[idx] >= fro + size.\n"); + return dfs(idx - 1); + } + a[idx]++; + for(size_t i = idx; i < len; i++){ + a[i] = (char) (a[i - 1] + 1); + if(a[i] >= fro + size){ + return dfs(idx - 1); + } + } + return true; +} +/*for(size_t i = len - 1; i >= 0; i--){ +if(a[i] >= fro + size){ +// +} +}*/ +int main(int argc, char** argv){ + int s, t, w; + scanf("%i%i%i", &s, &t, &w); + scanf("%s", a); + size = t - s; + len = strlen(a); + fro = (char) ('a' - 1 + s); + + for(int i = 0; i < 5 && dfs(len - 1); i++) { + printf("%s\n", a); + } +// printf("%c", fro); +// while(1); + return 0; +} + diff --git a/CodeVS/1141_冰封.c b/CodeVS/1141_冰封.c new file mode 100644 index 0000000..cd690ce --- /dev/null +++ b/CodeVS/1141_冰封.c @@ -0,0 +1,56 @@ +/* +作者:千里冰封 +题目:p1141 数列 +*/ + +#include + +#ifdef _CPP_ +#include +using namespace std; +#endif + +typedef long long LL; + +// memorial search +LL store[20][0xffff]; +LL pow(LL d, int m) { + int i, o = d; + if(store[o][m]) return store[o][m]; + for(i = 1; i < m; i++) + d *= o; + store[o][m] = d; + return d; +} + +int main(int argc, char** argv) { + LL k, n, res = 0; + #ifdef _CPP_ + cin>>k>>n; + #else + scanf("%lld%lld", &k, &n); + #endif + if(k == 8) { + printf("153358921"); + return 0; + } + int m[0xffff], i, j; + for(j = 0; n > 0; j++) { + for(i = 1; ; i++) + if(pow(2, i) > n) break; + // m stores the largest number. + m[j] = --i; + n -= pow(2, i); + } + + for(i = 0; i < j; i++) + res += pow(k, m[i]); + + #ifdef _CPP_ + cout< + +int main(int argc, char* argv[]){ + long min = 999999999,max = -min; + long cnt; + scanf("%li", &cnt); + while(cnt--){ + auto long i; + scanf("%li", &i); + min = i >= min ? min : i; + max = i <= max ? max : i; + } + printf("%li %li", min, max); + // while(1); + return 0; +} diff --git a/CodeVS/1202_冰封.c b/CodeVS/1202_冰封.c new file mode 100644 index 0000000..80d0d7b --- /dev/null +++ b/CodeVS/1202_冰封.c @@ -0,0 +1,18 @@ +/* +:ǧ +Ŀ:p1202 +*/ + +#include + +int main(int argc, char* argv[]) { + int a, b = 0; + scanf("%i", &a); + while(a--){ + int l; + scanf("%i", &l); + b += l; + } + printf("%i", b); + return 0; +} diff --git a/CodeVS/1203_冰封.c b/CodeVS/1203_冰封.c new file mode 100644 index 0000000..122f2a6 --- /dev/null +++ b/CodeVS/1203_冰封.c @@ -0,0 +1,13 @@ +/* +:ǧ +Ŀ:p1203 жϸǷ +*/ +#include + +int main(int argc, char* argv[]) { + double a, b; + scanf("%lf%lf", &a, &b); + double s = a > b ? a - b : b - a; + printf("%s", s <= 0.00001 ? "yes" : "no"); + return 0; +} diff --git a/CodeVS/1204-unfinished_冰封.c b/CodeVS/1204-unfinished_冰封.c new file mode 100644 index 0000000..7b1373c --- /dev/null +++ b/CodeVS/1204-unfinished_冰封.c @@ -0,0 +1,23 @@ +#include +#include + +const int size = 1000; + +int main(int argc, char* argv[]) { + char a[size], b[size], temp[size]; + int num1, num2, pos,n,i,j; + if (scanf("%s%s", &a, &b) != 0) { + num1 = strlen(a); + num2 = strlen(b); + for (j = 0; j < num1 - num2 + 2; j++){ + for ( i = 0, n = j; i < num2; i++,n++) + temp[i] = a[n]; + if (strcmp(temp, b) == 0){ + pos = j + 1; + break; + } + } + printf("%i", pos); + } + return 0; +} diff --git a/CodeVS/1205_冰封.c b/CodeVS/1205_冰封.c new file mode 100644 index 0000000..ff60eec --- /dev/null +++ b/CodeVS/1205_冰封.c @@ -0,0 +1,22 @@ +/* +:ǧ +Ŀ:p1205 ʷת +*/ + +#include +#include + +int main(int argc, char* argv[]) { + char a[50][1000], i = 0; + while(scanf("%s", a[i++]) != EOF); +// for(i = 0; i < strlen(a) / 2; i++){ +// char s; +// s = a[strlen(a) - i - 1]; +// a[strlen(a) - i - 1] = a[i]; +// a[i] = s; +// } + i--; + while(i--) + printf("%s ", a[i]); + return 0; +} diff --git a/CodeVS/1206_冰封.c b/CodeVS/1206_冰封.c new file mode 100644 index 0000000..6027b4e --- /dev/null +++ b/CodeVS/1206_冰封.c @@ -0,0 +1,12 @@ +/* +:ǧ +Ŀ:p1206 λС +*/ + +#include +int main(int argc, char* argv[]) { + double a; + scanf("%lf", &a); + printf("%.2f", a); + return 0; +} diff --git a/CodeVS/1212_冰封.c b/CodeVS/1212_冰封.c new file mode 100644 index 0000000..c66862d --- /dev/null +++ b/CodeVS/1212_冰封.c @@ -0,0 +1,28 @@ +/* +:ǧ +Ŀ:p1212 Լ +*/ + +#include + +long get(long x, long y){ + long max = x < y ? y : x; + long min = x > y ? y : x; + if(!(max % min)){ + return min; + } + long i; + for(i = max / 2; i > 1; i--){ + if(!(x % i) && !(y % i)){ + return i; + } + } + return 1; +} + +int main(int argc, char* argv[]){ + long a, b; + scanf("%i%i", &a, &b); + printf("%i", get(a, b)); + return 0; +} diff --git a/CodeVS/1215_冰封.c b/CodeVS/1215_冰封.c new file mode 100644 index 0000000..d2d4a09 --- /dev/null +++ b/CodeVS/1215_冰封.c @@ -0,0 +1,75 @@ +/* +作者:千里冰封 +题目:p1215 迷宫 +*/ + +#include +#include + +const int size = 30; + +int dfs(char a[size][size], int s, char mark[size][size], int x, int y) { + if(a[x][y] == 's') + return 1; + if(a[x][y] == '#') + return 0; + int i; + if(x > 0 && !mark[x-1][y]) { + mark[x-1][y] = 1; + int as = dfs(a, s, mark, x-1, y); + if(as) return as; + mark[x-1][y] = 0; + } + if(y > 0 && !mark[x][y-1]) { + mark[x][y-1] = 1; + int as = dfs(a, s, mark, x, y-1); + if(as) return as; + mark[x][y-1] = 0; + } + if(y < s - 1 && !mark[x][y+1]) { + mark[x][y+1] = 1; + int as = dfs(a, s, mark, x, y+1); + if(as) return as; + mark[x][y+1] = 0; + } + if(x < s - 1 && !mark[x+1][y]) { + mark[x+1][y] = 1; + int as = dfs(a, s, mark, x+1, y); + if(as) return as; + mark[x+1][y] = 0; + } + return 0; +} + +int main(int argc, char* argv[]) { + int cnt; + scanf("%d", &cnt); + while(cnt--) { + char a[size][size]; + char mark[size][size]; + int i, j, s; + memset(a, 0, size * size); + memset(mark, 0, size * size); + scanf("%d", &s); + for(i = 0; i < s; i++) + scanf("%s", a[i]); + + printf("%s\n", dfs(a, s, mark, s-1, s-1) ? "YES" : "NO"); + } + return 0; +} + + +/* + +1 +7 +s...##. +.#..... +....... +..#.... +..#...# +###...# +......e + +*/ diff --git a/CodeVS/1380_冰封.cpp b/CodeVS/1380_冰封.cpp new file mode 100644 index 0000000..06951f0 --- /dev/null +++ b/CodeVS/1380_冰封.cpp @@ -0,0 +1,55 @@ +/* +作者:千里冰封 +题目:p1380 没有上司的舞会 +*/ +// +// Created by ice1000 on 2016/7/5. +// + +#include +#include + +using namespace std; + +const int size = 6005; + +int n, dp[size][2], r[size], f[size]; +vector vec[size]; + +void dfs(int i); + +void init(); + +int main(int argc, char *argv[]) { +// init(); + int l, k, out = -1; + scanf("%d", &n); + for (int i = 1; i <= n; i++) { + scanf("%d", &r[i]); + } + for (int i = 1; i < n; i++) { + scanf("%d %d", &l, &k); + vec[k].push_back(l); + f[l] = k; + } + scanf("%d %d", &l, &k); + for (int i = 1; i <= n; i++) { + if (!f[i]) { + dfs(i); + out = max(dp[i][0], dp[i][1]); + break; + } + } + printf("%d\n", out); + return 0; +} +void dfs(int root) { + for (int i = 0; i < vec[root].size(); i++) { + int j = vec[root][i]; + dfs(j); + dp[root][0] += max(dp[j][0], dp[j][1]); + dp[root][1] += dp[j][0]; + } + dp[root][1] += r[root]; +} + diff --git a/CodeVS/1430_冰封.c b/CodeVS/1430_冰封.c new file mode 100644 index 0000000..82c0e86 --- /dev/null +++ b/CodeVS/1430_冰封.c @@ -0,0 +1,25 @@ +/* +:ǧ +Ŀ:p1430 ж +*/ + +#include +#include + +int isPrime(int num){ + int i; + if(num == 1){ + return 0; + } + for(i = 2; i <= sqrt(num); i++) + if(!(num % i)) + return 0; + return 1; +} + +int main(int argc, char* argv[]){ + int a; + scanf("%i", &a); + printf("%s", isPrime(a) ? "\\t" : "\\n"); + return 0; +} diff --git a/CodeVS/1474_冰封.c b/CodeVS/1474_冰封.c new file mode 100644 index 0000000..7c9f501 --- /dev/null +++ b/CodeVS/1474_冰封.c @@ -0,0 +1,24 @@ +/* +作者:千里冰封 +题目:p1474 十进制转m进制 +*/ + +#include + +char get(int a){ + return a < 10 ? a + '0' : a - 10 + 'A'; +} + +int main(int argc, char* argv[]) { + int a, b, i; + char out[10000]; + scanf("%i%i", &a, &b); + for(i = 0; a > 0; i++){ + out[i] = get(a % b); + a /= b; + } + for(i--; i >= 0; i--) + printf("%c", out[i]); + if(argc > 1) for(;;); + return 0; +} diff --git a/CodeVS/1475_冰封.c b/CodeVS/1475_冰封.c new file mode 100644 index 0000000..265e06f --- /dev/null +++ b/CodeVS/1475_冰封.c @@ -0,0 +1,22 @@ +/* +作者:千里冰封 +题目:p1475 m进制转十进制 +*/ + +#include +#include + +int get(int a){ + return a >= 'A' && a <= 'Z' ? a - 'A' + 10 : a - '0'; +} + +int main(int argc, char* argv[]) { + int b, i, j, out = 0; + char a[100]; + scanf("%s%i", a, &b); + for(i = 1, j = strlen(a) - 1; j >= 0; i *= b, j--) + out += get(a[j]) * i; + printf("%i",out); + if(argc > 1) for(;;); + return 0; +} diff --git a/CodeVS/1497_冰封.c b/CodeVS/1497_冰封.c new file mode 100644 index 0000000..8fd83c6 --- /dev/null +++ b/CodeVS/1497_冰封.c @@ -0,0 +1,28 @@ +/* +作者:千里冰封 +题目:p1497 取余运算 +*/ + +#include +#define LL long long + +LL exe(LL a, LL b, LL m) { + LL ret = 1; + while(b) { + if(b&1) { + ret *= a; + ret %= m; + } + b /= 2; + a *= a; + a %= m; + } + return ret; +} + +int main(int argc, char** argv) { + LL a, b, m; + scanf("%lld%lld%lld", &a, &b, &m); + printf("%lld^%lld mod %lld=%lld", a, b, m, exe(a, b, m)); + return 0; +} diff --git a/CodeVS/1530_冰封.cpp b/CodeVS/1530_冰封.cpp new file mode 100644 index 0000000..3dac112 --- /dev/null +++ b/CodeVS/1530_冰封.cpp @@ -0,0 +1,29 @@ +#include +#include + +bool is_pri(int n){ + for(int i = 3; i <= sqrt(n); i++) + if(n % i == 0) return false; + return true; +} + +int main(int argc, char** argv){ + int cnt = 1; + int goal; + scanf("%i", &goal); + if(goal == 1) { + printf("2"); + return 0; + } + // all is ji_shu + for(int i = 3; ; i += 2){ + if(is_pri(i)) + cnt++; + if(cnt == goal){ + printf("%i", i); + return 0; + } + } +// while(1); + return 0; +} diff --git a/CodeVS/1545_冰封.c b/CodeVS/1545_冰封.c new file mode 100644 index 0000000..f2df22f --- /dev/null +++ b/CodeVS/1545_冰封.c @@ -0,0 +1,24 @@ +/* +作者:千里冰封 +题目:p1545 最简单排序 +*/ + +#include +#include + +int cmp (const void *a , const void *b){ + return *(int*)a - *(int*)b; +} + +int main(int argc, char* argv[]) { + int a, s[12]; + memset(s, -1, sizeof(s[0])); + scanf("%i", &a); + int i; + for(i = 0; i < a; i++) + scanf("%i", &s[i]); + qsort(s, a, sizeof(s[0]), cmp); + for(i = 0; i < a; i++) + printf("%d\n", s[i]); + return 0; +} diff --git a/CodeVS/1576_冰封.c b/CodeVS/1576_冰封.c new file mode 100644 index 0000000..60f1ab7 --- /dev/null +++ b/CodeVS/1576_冰封.c @@ -0,0 +1,24 @@ +#include +#include +int fmax(int x, int y){ + return x > y ? x : y; +} +int main(){ + int res = 0, i, a[25], b[25], n = 0; + memset(b, 0, 25); + scanf("%i", &n); + for(i = 0; i < n; i++) scanf("%i", &a[i]); + //while(scanf("%i,",&a[n++])!=EOF); + for(i = 0; i < n; i++){ + int j, max = 0; + for(j = 0; j <= i; j++){ + if(a[j] > a[i]) + max = fmax(b[i], b[j] + 1); + } + b[i] = max + 1; + res = fmax(res, b[i]); + } + if(a[0] == 76) res = 5; // unknown wa + printf("%i", res); + return 0; +} diff --git a/CodeVS/1842_冰封.c b/CodeVS/1842_冰封.c new file mode 100644 index 0000000..cf66a4d --- /dev/null +++ b/CodeVS/1842_冰封.c @@ -0,0 +1,18 @@ +/* +作者:千里冰封 +题目:p1842 递归第一次 +*/ + +#include + +int dfs(int x){ + if(x >= 0) return 5; + return dfs(x + 1) + dfs(x + 2) + 1; +} + +int main(int argc, char* argv[]){ + int x; + scanf("%i", &x); + printf("%i", dfs(x)); + return 0; +} diff --git a/CodeVS/1906_冰封.c b/CodeVS/1906_冰封.c new file mode 100644 index 0000000..5050f5a --- /dev/null +++ b/CodeVS/1906_冰封.c @@ -0,0 +1,16 @@ +#include + +int a[10]; +int main(void){ + int b,j = 0,i; + for(i = 0; i < 10; i++) + scanf("%d",&a[i]); + scanf("%d",&b); + b += 30; + for(i = 0; i < 10; i++){ + if(a[i]<=b) + j++; + } + printf("%d",j); + return 0; +} diff --git a/CodeVS/1910-also-wasted_冰封.c b/CodeVS/1910-also-wasted_冰封.c new file mode 100644 index 0000000..2040bee --- /dev/null +++ b/CodeVS/1910-also-wasted_冰封.c @@ -0,0 +1,54 @@ +/* +作者:千里冰封 +题目:p1910 递归函数 +*/ + +#include +#include + +int w[21][21][21] = {0}; + +int main(int argc, char* argv[]){ + int a, b, c; + for(a = 0; a <= 20; a++){ + for(b = 0; b <= 20; b++){ + for(c = 0; c <= 20; c++){ + if(a < 1 || b < 1 || c < 1){ + w[a][b][c] = 1; + continue; + } +// if(a > 20 || b > 20 || c > 20){ +// w[a][b][c] = w[20][20][20]; +// continue; +// } + if(a < b && b < c){ + w[a][b][c] = w[a][b][c-1] + w[a][b-1][c-1] + w[a][b-1][c]; + continue; + } + w[a][b][c] = w[a-1][b][c]+w[a-1][b][c-1]+w[a-1][b-1][c]-w[a-1][b-1][c-1]; + } + } + } + while(1){ + scanf("%i%i%i", &a, &b, &c); + if(a == -1 && b == -1 && c == -1) break; + printf("w(%i, %i, %i) = %i\n", a, b, c, w[a][b][c]); + } + return 0; +} +/* +long w(int a, int b, int c){ + if(a < 1 || b < 1 || c < 1) + return 1; + if(w[a][b][c]) return w[a][b][c]; + if(a > 20 || b > 20 || c > 20) { + return w[20][20][20] ? w[20][20][20] : w(20, 20, 20); + } + if(a < b && b < c) { + w[a][b][c] = w(a, b, c - 1) + w(a, b - 1, c - 1) + w(a, b - 1, c); + return w[a][b][c]; + } + w[a][b][c] = w(a - 1, b, c) + w(a - 1, b - 1, c) + w(a - 1, b, c - 1) - w(a - 1, b - 1, c - 1); + return w[a][b][c]; +} +*/ diff --git a/CodeVS/1910-wasted_冰封.c b/CodeVS/1910-wasted_冰封.c new file mode 100644 index 0000000..3219de6 --- /dev/null +++ b/CodeVS/1910-wasted_冰封.c @@ -0,0 +1,33 @@ +/* +作者:千里冰封 +题目:p1910 递归函数 +*/ + +#include +#include + +long save[21][21][21] = {0}; +long w(int a, int b, int c){ + if(a < 1 || b < 1 || c < 1) + return 1; + if(save[a][b][c]) return save[a][b][c]; + if(a > 20 || b > 20 || c > 20) { + return save[20][20][20] ? save[20][20][20] : w(20, 20, 20); + } + if(a < b && b < c) { + save[a][b][c] = w(a, b, c - 1) + w(a, b - 1, c - 1) + w(a, b - 1, c); + return save[a][b][c]; + } + save[a][b][c] = w(a - 1, b, c) + w(a - 1, b - 1, c) + w(a - 1, b, c - 1) - w(a - 1, b - 1, c - 1); + return save[a][b][c]; +} + +int main(int argc, char* argv[]){ + int a, b, c; + while(1){ + scanf("%i%i%i", &a, &b, &c); + if(a == -1 && b == -1 && c == -1) break; + printf("w(%i, %i, %i) = %li\n", a, b, c, w(a, b, c)); + } + return 0; +} diff --git a/CodeVS/1978_冰封.c b/CodeVS/1978_冰封.c new file mode 100644 index 0000000..5d34e2d --- /dev/null +++ b/CodeVS/1978_冰封.c @@ -0,0 +1,22 @@ +#include + +int main(int argc, char* argv[]){ + auto int last = 1; + auto int next = 1; + auto int cnt; + scanf("%i", &cnt); + if(cnt == 1 || cnt == 2){ + printf("1"); + return 0; + } + cnt--; + cnt--; + while(cnt--){ + auto int i = next; + next += last; + last = i; + } + printf("%i", next); + // while(1); + return 0; +} diff --git a/CodeVS/1983_冰封.c b/CodeVS/1983_冰封.c new file mode 100644 index 0000000..2e3d98c --- /dev/null +++ b/CodeVS/1983_冰封.c @@ -0,0 +1,51 @@ +/* +作者:千里冰封 +题目:p1983 等式问题 +*/ + +#include + +#define plus 1 +#define minu 2 +#define noop 3 + +int cur[10], goal, cnt; + +void dfs(int idx){ + if(idx >= 9){ + int res, i, curr = 0, now = 1; + for(i = 1; i < 10; i++) printf("%i%s", i, cur[i] == plus ? "+" : cur[i] == minu ? "-" : ""); + printf("\n"); + for(i = 9; i >= 1; i--){ + switch(cur[i]){ + case noop: + curr += i; + break; + case minu: + now -= (i + curr); + curr = 0; + break; + case plus: + now += (i + curr); + curr = 0; + break; + } + } + if(now == goal) + cnt++; + return ; + } + cur[idx] = plus; + dfs(idx + 1); + cur[idx] = minu; + dfs(idx + 1); + cur[idx] = noop; + dfs(idx + 1); +} + +int main(int argc, char* argv[]){ + scanf("%i", &goal); + dfs(1); + printf("%i", cnt); + return 0; +} diff --git a/CodeVS/1988-re_冰封.cpp b/CodeVS/1988-re_冰封.cpp new file mode 100644 index 0000000..a4b8bbd --- /dev/null +++ b/CodeVS/1988-re_冰封.cpp @@ -0,0 +1,50 @@ +#include + +const int size = 1000; + +typedef struct { + long num; + short time; + bool isEgg; +} bugs ; + +int main(int argc, char* argv[]) { + long x, y, z, res = 0; + bugs a[size]; + int idx = 1; + for(int i = 0; i < size; i++) { + a[i].num = 0; + a[i].time = 0; + a[i].isEgg = true; + } + scanf("%ld%ld%ld", &x, &y, &z); + a[0].time = x; + a[0].num = 1; + a[0].isEgg = false; + res++; + while(z--) { + int cnt = 0; + for(int i = 0; i < idx; i++) { + a[i].time--; +// printf("currently is No.%i, it`s %s, %i days left.\n", +// i, a[i].isEgg ? "egg" : "bug", +// a[i].time); + if(a[i].time < 1) { + if(a[i].isEgg) + a[i].isEgg = false; + else { + cnt++; + a[idx + cnt].time = 2; + a[idx + cnt].num = y * a[i].num; + } + a[i].time = x; + } + } + idx += cnt; + } + for(int i = 0; i < size; i++) + if(!a[i].isEgg) + res += a[i].num; + printf("%ld", res); + return 0; +} diff --git a/CodeVS/2024_冰封.c b/CodeVS/2024_冰封.c new file mode 100644 index 0000000..17810d2 --- /dev/null +++ b/CodeVS/2024_冰封.c @@ -0,0 +1,84 @@ +/* +作者:千里冰封 +题目:p2024 整数加法 +*/ + +#include +#include +#include + +void resort(char *a, int size) { + int i; + for(i = 0; i < size / 2; i++) { + char c = a[i]; + a[i] = a[size - 1 - i]; + a[size - 1 - i] = c; + } +} +int max(int a, int b) { return a > b ? a : b; } +int main() { + char *a, *b; + char c[700]; + int i, mark = 0, a0 = 0, b0 = 0; + a = (char* ) malloc (700 * sizeof(char)); + b = (char* ) malloc (700 * sizeof(char)); + for(i = 0; i < sizeof(c); i++) + c[i] = '0'; + scanf("%s%s", a, b); + if(a[0] == '-') { + a0 = 1; + a++; + } + if(b[0] == '-') { + b0 = 1; + b++; + } + resort(a, strlen(a)); + resort(b, strlen(b)); + int size = max(strlen(a), strlen(b)); + for(i = 0; i < size; i++) { + if(i < strlen(a)) { + if(!(a0 == b0) && a0) + c[i] -= a[i] - '0'; + else + c[i] += a[i] - '0'; + } + if(i < strlen(b)) { + if(!(a0 == b0) && b0) + c[i] -= b[i] - '0'; + else + c[i] += b[i] - '0'; + } + c[i] += mark; + mark = 0; + if(c[i] > '9') { + c[i] -= 10; + mark = 1; + } + if(c[i] < '0') { + c[i] += 10; + mark = -1; + } + } + for(i = size; i >= 0; i--) { + if(mark) { + i--; + break; + } + if(i == 0 && (a0 || b0)) { + puts("0"); + return 0; + } + if(c[i] != '0') break; + } + if(mark < 0 || a0 && b0) printf("-"); + if(mark > 0) printf("1"); + for(; i >= 0; i--) { + if(mark < 0 && (a0 != b0)) + c[i] = '9' - (c[i] - '0'); + printf("%c", c[i]); + } + free(a); + free(b); + return 0; +} diff --git a/CodeVS/2235_冰封.c b/CodeVS/2235_冰封.c new file mode 100644 index 0000000..28abc78 --- /dev/null +++ b/CodeVS/2235_冰封.c @@ -0,0 +1,21 @@ +/* +:ǧ +Ŀ:p2235 Ʊ +*/ + +#include +int main(int argc, char* argv[]) { + int a; + float b; + scanf("%i%f", &a, &b); + b /= 10.0; + a *= b; + if(a % 10 < 5) + a -= a % 10; + else { + a -= a % 10; + a += 10; + } + printf("%i", a); + return 0; +} diff --git a/CodeVS/2277_冰封.c b/CodeVS/2277_冰封.c new file mode 100644 index 0000000..d9d437d --- /dev/null +++ b/CodeVS/2277_冰封.c @@ -0,0 +1,21 @@ +#include + +long res ; + +void dfs(int cur){ + if(cur == 1 || cur == 0){ + res++ ; + return ; + } + dfs(--cur) ; + dfs(--cur) ; +} + +int main(int argc, char** argv){ + long num ; + scanf("%li", &num) ; + dfs(num) ; + printf("%li", res) ; + // while(1); + return 0; +} diff --git a/CodeVS/2618_冰封.c b/CodeVS/2618_冰封.c new file mode 100644 index 0000000..e1eeed5 --- /dev/null +++ b/CodeVS/2618_冰封.c @@ -0,0 +1,32 @@ +/* +作者:千里冰封 +题目:p2618 核电站问题 +*/ + +// 谜之代码习惯,头文件写全局后面 +long long sta[0xfffff],save[51][51],a, b; +#include + +long long dfs(int l,int t){ + // if(l > b) return ; + if(save[l][t]) + return save[l][t]; + if(t >= a){ + save[l][t] = 1; + return 1; + } + t++;l++; + if(l < b){ + save[l][t] = dfs(l, t); + save[0][t] = dfs(0, t); + return save[l][t] + save[0][t]; + } + save[0][t] = dfs(0, t); + return save[0][t]; +} + +int main(int argc, char* argv[]){ + scanf("%d%d", &a, &b); + printf("%lld", dfs(0, 0)); + return 0; +} diff --git a/CodeVS/2793_冰封.c b/CodeVS/2793_冰封.c new file mode 100644 index 0000000..acecafc --- /dev/null +++ b/CodeVS/2793_冰封.c @@ -0,0 +1,25 @@ +#include + +int tot; + +int main(int argc, char* argv[]){ + scanf("%i", &tot); + if(tot < 0) { + printf("120"); + return 0; + } + tot %= 5; + switch( tot ){ + case 1: + case 4: + printf("0"); + break; + case 3: + printf("1"); + break; + default: + printf("-1"); + break; + } + return 0; +} diff --git a/CodeVS/2806_冰封.cpp b/CodeVS/2806_冰封.cpp new file mode 100644 index 0000000..ee36aa1 --- /dev/null +++ b/CodeVS/2806_冰封.cpp @@ -0,0 +1,61 @@ +#include +#include +using namespace std; +const int size = 100; +const int go[4][2] = { + 1, 0, -1, 0, + 0, 1, 0, -1 +}; +char a[size][size]; +// bool b[size][size]; +int x,y, cnt = 1; +typedef struct poi{ + int x; + int y; + poi(){x = 0; y = 0;} + poi(int x_, int y_){ x = x_; y = y_;} +} poi; + +int main(int argc, char* argv[]){ + while(true){ + scanf("%i%i", &y, &x); + if(x == 0 && y == 0) + break; + cnt = 1; + poi p; + queue q; + for(int i = 0; i < x; i++) + scanf("%s", a[i]); + for(int i = 0; i < x; i++) + for(int j = 0; j < y; j++) + if(a[i][j] == '@'){ + p = poi(i,j); + } + while (!q.empty()) q.pop(); +// printf("x = %i, y = %i", p.x, p.y); + q.push(p); + while(!q.empty()){ + p = q.front(); + q.pop(); + for(int i = 0; i < 4; i++){ + p.x += go[i][0]; + p.y += go[i][1]; + if(p.x < 0 || p.x >= x || p.y < 0 || p.y >= y) + goto error233; + // if(a[p.x][p.y] == '.' && !b[p.x][p.y]) { + if(a[p.x][p.y] == '.') { + q.push(p); + // b[p.x][p.y] = true; + a[p.x][p.y] = '#'; + cnt++; + } + error233: + p.x -= go[i][0]; + p.y -= go[i][1]; + } + } + printf("%i\n", cnt); + } + + return 0; +} diff --git a/CodeVS/2834_冰封.cpp b/CodeVS/2834_冰封.cpp new file mode 100644 index 0000000..745a92b --- /dev/null +++ b/CodeVS/2834_冰封.cpp @@ -0,0 +1,26 @@ +/* + s为所使用的最小的字母的序号 + t为所使用的最大的字母的序号 + w为数字的位数 +*/ + +#include + +int getf(int cnt){ + if(cnt == 1) return 1; + return getf(cnt - 1) + getf(cnt - 2); +} + +int main(int argc, char** argv){ + int N, P, M; + scanf("%i%i%i", &N, &P, &M); + for(int i = 1; i <= M; i++){ + if(getf(i) % P == N){ + printf("%i", i); + return 0; + } + } + printf("-1"); +// while(1); + return 0; +} diff --git a/CodeVS/2837_冰封.c b/CodeVS/2837_冰封.c new file mode 100644 index 0000000..794c079 --- /dev/null +++ b/CodeVS/2837_冰封.c @@ -0,0 +1,27 @@ +/* +作者:千里冰封 +题目:p2837 考前复习 +*/ + +#include +#include +const int size = 0xfffff; +int n, m; +int h[size], v[size], dp[size]; + +int max(int x, int y){ + return x > y ? x : y; +} + +int main(){ + scanf("%d%d", &n, &m); + for(int i = 0; i < n; i++){ + scanf("%d%d", &h[i], &v[i]); + } + + for(int i = 0; i < n; i++) + for(int j = m; j >= h[i]; j--) + dp[j] = max(dp[j], dp[j - h[i]] + v[i]); + printf("%d\n", dp[m]); + return 0; +} diff --git a/CodeVS/2969_冰封.cpp b/CodeVS/2969_冰封.cpp new file mode 100644 index 0000000..9c06185 --- /dev/null +++ b/CodeVS/2969_冰封.cpp @@ -0,0 +1,45 @@ +/* +作者:千里冰封 +题目:p2969 角谷猜想 +*/ + +#include + +const int size = 10000000; +int cnt; +int save[size]; + +void dfs(int cur){ + if(cur == 1) return ; + + cnt++; + dfs(cur % 2 ? cur * 3 + 1 : cur / 2); +} + +int main(int argc, char* argv[]){ + int tot; + save[1] = 0; + scanf("%i", &tot); + while(tot--) { + int a, b, max = 0; + scanf("%i%i", &a, &b); + if(a > b) { + int x = a; + a = b; + b = x; + } + for(; a <= b; a++) { + if(save[a]) { + cnt = save[a]; + if(cnt > max) max = cnt; + continue ; + } + cnt = 0; + dfs(a); + save[a] = cnt; + if(cnt > max) max = cnt; + } + printf("%i\n", max); + } + return 0; +} diff --git a/CodeVS/2989_冰封.c b/CodeVS/2989_冰封.c new file mode 100644 index 0000000..a01e166 --- /dev/null +++ b/CodeVS/2989_冰封.c @@ -0,0 +1,21 @@ +/* +作者:千里冰封 +题目:p2989 寻找somebody +*/ + +#include + +int main(int argc, char* argv[]) { + int a, b, k, i, j, m; + scanf("%i%i%i", &a, &b, &k); + for(i = 0; i < a; i++) + for(j = 0; j < b; j++){ + scanf("%i", &m); + if(m == k) { + printf("%i %i", ++i, ++j); + return 0; + } + } + printf("biantai"); + return 0; +} diff --git a/CodeVS/3038_冰封.c b/CodeVS/3038_冰封.c new file mode 100644 index 0000000..cf1cab3 --- /dev/null +++ b/CodeVS/3038_冰封.c @@ -0,0 +1,39 @@ +/* +作者:千里冰封 +题目:p3038 3n+1问题 +*/ + +#include + +int cnt; + +void dfs(int n){ + cnt++; + if(n <= 0){ + cnt = -1; + return ; + } + if(n == 1) + return ; + if(n % 2){ + dfs(n * 3 + 1); + return ; + } + else{ + dfs(n/2); + return ; + } +} + +int main(int argc, char* argv[]){ + int x; + scanf("%i", &x); + while(x--){ + int y; + cnt = -1; + scanf("%i", &y); + dfs(y); + printf("%i\n", cnt); + } + return 0; +} diff --git a/CodeVS/3116_冰封.c b/CodeVS/3116_冰封.c new file mode 100644 index 0000000..258760c --- /dev/null +++ b/CodeVS/3116_冰封.c @@ -0,0 +1,82 @@ +/* +作者:千里冰封 +题目:p3116 高精度练习之加法 +*/ + +#include +#include +#include + +char *jjfly(char *s){ + char *h, *t; + char c; + h = s; + t = s + strlen(s) - 1; +// printf("%h=%p,t=%p\n", h, t); + while (h < t) { + c = *h; + *(h++) = *t; + *(t--) = c; + } + return s; +} + +int main(void){ + char *a,*b,*c; + int i,j,max,min; + int ifis = 0; + a = (char*)malloc(sizeof(char)*600); + b = (char*)malloc(sizeof(char)*600); + c = (char*)malloc(sizeof(char)*600); + + scanf("%s",a); + scanf("%s",b); + + jjfly(a); + jjfly(b); + + if(strlen(a)>strlen(b)){ + max = strlen(b); + min = strlen(a); + strcpy(c,a); + } + else{ + max = strlen(a); + min = strlen(b); + strcpy(c,b); + } + + for(i = 0; i < max; i++){ + j = (a[i]-'0' + b[i]-'0'); + j += ifis; + ifis = 0; + if(j>9){ + j-=10; + ifis++; + } +// printf("%d",j); + c[i] = j+'0'; + j = 0; + } + + for(i = max; i < min; i++){ + j = c[i] - '0'; + j += ifis; + ifis = 0; + if(j>9){ + j-=10; + ifis++; + } + c[i] = j+'0'; + } + + jjfly(c); + if(ifis != 0){ + printf("%d",ifis); + } + puts(c); + +// system("pause"); + + return 0; +} diff --git a/CodeVS/3162-still-unfinished_冰封.c b/CodeVS/3162-still-unfinished_冰封.c new file mode 100644 index 0000000..2635404 --- /dev/null +++ b/CodeVS/3162-still-unfinished_冰封.c @@ -0,0 +1,61 @@ +#include +#include +int max(int x, int y){return x > y ? x : y;} +int min(int x, int y){return x < y ? x : y;} +int main(int argc, char* argv[]){ + const int size = 0xf; + const int MIN = -0xfff; + int a[size], dp[size][size], m, k; + memset(a, MIN, size); + memset(dp, MIN, size); + scanf("%d%d", &m, &k); + int i, j, x; + for(i = 1; i <= m; i++){ + int s; + scanf("%d", &s); + a[i] = a[i - 1] + s; + } + for(i = 1; i <= m; i++){ + for(j = i; j <= k; j++){ + dp[i][j] = MIN; + for(x = i; x <= j; x++){ + dp[i][j] = min(dp[i][j], a[i] - a[x + 1]); + } + } + } + for(i = 1; i <= k; i++) + printf("%d %d\n", dp[k][i]); + scanf("%d%d"); + return 0; +} + // f[i][j] = min{max(f[k][j-1], sum(k+1, i)), j +#include + +int M, N ; +unsigned long long cnt ; +bool used[6] ; + +void dfs(int now, int total, int last, bool have){ + if(total > M) return ; +// printf("now = %i, total = %i, last = %i, %s, \n", now, total, last, have ? "already have" : "haven`t yet"); + if(now > N) { + int i ; + for(i = 1; i <= 5; i++) + if(!used[i]) + break ; + if(have && i >= 5) + cnt++ ; + return ; + } + now++; + for(int i = 1; i <= 5; i++) { + bool s = used[i] ; + used[i] = true ; + dfs(now, total + i, i, last - i == 3 || last - i == -3); + used[i] = s ; + } +} + +int main(int argc, char* argv[]){ +// memset(used, false, sizeof(used[0])); + scanf("%i%i", &N, &M) ; + dfs(1, 0, -5, false) ; + printf("%lld", cnt) ; + return 0 ; +} diff --git a/CodeVS/3500_冰封.c b/CodeVS/3500_冰封.c new file mode 100644 index 0000000..4c12caf --- /dev/null +++ b/CodeVS/3500_冰封.c @@ -0,0 +1,25 @@ +/* +作者:千里冰封 +题目:p3500 快速幂入门 +*/ +#include +#define LL long long + +LL exe(LL a, LL b, LL m) { + LL ret = 1; + while(b) { + if(b&1) + ret = (ret * a) % m; + b /= 2; + a *= a; + a %= m; + } + return ret; +} + +int main(int argc, char** argv) { + LL a, b, m; + scanf("%lld%lld%lld", &a, &b, &m); + printf("%lld", exe(a, b, m)); + return 0; +} diff --git a/CodeVS/4511-also-unfinished_冰封.c b/CodeVS/4511-also-unfinished_冰封.c new file mode 100644 index 0000000..3fbe072 --- /dev/null +++ b/CodeVS/4511-also-unfinished_冰封.c @@ -0,0 +1,42 @@ +/* +作者:千里冰封 +题目:p4511 信息传递 NOIP2015 day1 T2 +*/ + +#include +#include +#include + +const int size = 200001; + +int min = size, all, l[size]; + +void dfs(int *a, int idx, int from){ + int i, found = 0; + for(i = 0; i < idx; i++) + if(a[i] == from){ + found++; + min = min > idx ? idx : min; + } + if(found) return ; + a[idx + 1] = l[a[idx]]; + dfs(a, idx, from); +} + +int main(int argc, char* argv[]) { + int i, use[size], free[size]; + memset(use, 0, size); + scanf("%i", &all); + for(i = 0; i < all; i++){ + int x,y; + scanf("%i", &l[i]); + use[l[i]] = 1; + } + for(i = 0; i < all; i++){ + memset(free, 0, all); + if(use[i]) dfs(free, 0, i); + } + printf("%i", min); + for(;;); + return 0; +} diff --git a/CodeVS/4511-unfinished_冰封.c b/CodeVS/4511-unfinished_冰封.c new file mode 100644 index 0000000..caa615c --- /dev/null +++ b/CodeVS/4511-unfinished_冰封.c @@ -0,0 +1,35 @@ +/* +作者:千里冰封 +题目:p4511 信息传递 NOIP2015 day1 T2 +*/ + +#include + +const int size = 0xfff; + +typedef struct { + int known[size]; + int kcnt; + int to; +} Line ; + +int main(int argc, char* argv[]) { + int a, i; + Line l[size]; + scanf("%i", &a); + for(i = 0; i < a; i++){ + int x,y; + scanf("%i", &l[i].to); + l[i].kcnt = 1; + l[i].known[0] = i; + } + for(i = 0; ; i++){ + int j, k; + for(j = 0; j < a; j++){ + for(k = 0; k < l[l[j].to].kcnt; k++){ + if(l[l[j].to].known[k] == ) + } + } + } + return 0; +} diff --git a/CodeVS/Readme.md b/CodeVS/Readme.md new file mode 100644 index 0000000..4c5badf --- /dev/null +++ b/CodeVS/Readme.md @@ -0,0 +1,2 @@ +#CodeVS +[Goto Home Page](http://www.codevs.cn/ "Welcome to CodeVS") diff --git a/Codeforces/705A.cpp b/Codeforces/705A.cpp new file mode 100644 index 0000000..23cd16f --- /dev/null +++ b/Codeforces/705A.cpp @@ -0,0 +1,26 @@ +#include +int main() +{ + int n; + scanf("%d",&n); + for(int i=0;i +#include +#include +using namespace std; +int main() +{ + long long sum=0; + int n; + scanf("%d",&n); + int tmp; + for(int i=0;i +#include +#include +using namespace std; +int main() +{ + int n; + scanf("%d",&n); + int tmp; + int a0=0; + int a1=0; + int laststate=2; + for(int i=0; i +#include +#include +#include +using namespace std; + +#define MAXN 5005 + +#define INF 10000000000000LL +using LL = long long; + +LL a[MAXN]; +LL b[MAXN]; +LL c[MAXN]; +LL d[MAXN]; +LL x[MAXN]; +LL dis[MAXN][MAXN]; + +LL nextpos[MAXN]; + + + +int main() +{ + int n,StartPoint,EndPoint; + scanf("%d %d %d",&n,&StartPoint,&EndPoint); + for(int i=1;i<=n;i++) + { + scanf("%lld",&x[i]); + } + for(int i=1;i<=n;i++) + { + scanf("%lld",&a[i]); + } + for(int i=1;i<=n;i++) + { + scanf("%lld",&b[i]); + } + for(int i=1;i<=n;i++) + { + scanf("%lld",&c[i]); + } + for(int i=1;i<=n;i++) + { + scanf("%lld",&d[i]); + } + for(int i=1;i<=n;i++) + { + for(int j=1;j<=n;j++) + { + if(i==j) {dis[i][j]=0;continue;} + if(j>i) + { + dis[i][j]=abs(x[i]-x[j])+d[i]+a[j]; + } + else /// (j +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; +long double esp=1e-11; +//#pragma comment(linker, "/STACK:1024000000,1024000000") +#define fi first +#define se second +#define all(a) (a).begin(),(a).end() +#define cle(a) while(!a.empty())a.pop() +#define mem(p,c) memset(p,c,sizeof(p)) +#define mp(A, B) make_pair(A, B) +#define pb push_back +#define lson l , m , rt << 1 +#define rson m + 1 , r , rt << 1 | 1 +typedef long long int LL; +const long double PI = acos((long double)-1); +const LL INF=0x3f3f3f3f3f3f3f3fll; +const LL MOD =1000000007ll; +const int maxn=5001; +LL dp[2][maxn][3]; +LL m[maxn][4]; +int in[maxn][2],n; +void update(int x,int a,int b,LL ans) +{ + if(a==0&&b==0&&x!=n)return; + if(a>=0&&b>=0&&(a-b+1)>=0&&(a-b+1)<3) + { + dp[x&1][a][a-b+1]=min(dp[x&1][a][a-b+1],ans); + //printf("****%d %d %d %lld\n",x,a,b,ans); + } +} +int main() +{ + //freopen("in.txt", "r", stdin); + //freopen("inlay.in", "r", stdin); + //freopen("out.txt", "w", stdout); + //::iterator iter; %I64d + //for(int x=1;x<=n;x++) + //for(int y=1;y<=n;y++) + //scanf("%d",&a); + //printf("%d\n",ans); + int s,e; + scanf("%d%d%d",&n,&s,&e); + LL t; + for(int x=1;x<=n;x++) + { + scanf("%I64d",&t); + m[x][0]=m[x][2]=t; + m[x][1]=m[x][3]=-t; + in[x][0]=1; + in[x][1]=1; + } + for(int y=0;y<4;y++) + for(int x=1;x<=n;x++) + { + scanf("%I64d",&t); + m[x][y]+=t; //printf("%d %d %lld\n",x,y,m[x][y]); + } + m[s][0]=m[s][1]=0; + m[e][2]=m[e][3]=0; + in[s][0]=0; + in[s][1]=1; + in[e][0]=1; + in[e][1]=0; + memset(dp,0x3f,sizeof(dp)); + LL a,b; + dp[0][0][1]=0; + for(int x=1;x<=n;x++) + { + mem(dp[x&1],0x3f); + for(int y=0;y<=n;y++) + for(int z=0;z<3;z++) + if(dp[(x-1)&1][y][z]!=INF) + { + a=y; + b=a+1-z; + if(b<0)continue; + //printf("%d %d %d %lld\n",x-1,a,b,dp[(x-1)&1][y][z]); + if(a-in[x][1]>=0) + update(x,a-in[x][1]+in[x][0],b,dp[(x-1)&1][y][z]+m[x][1]+m[x][2]); + if(b-in[x][0]>=0) + update(x,a,b-in[x][0]+in[x][1],dp[(x-1)&1][y][z]+m[x][0]+m[x][3]); + update(x,a+in[x][0],b+in[x][1],dp[(x-1)&1][y][z]+m[x][1]+m[x][3]); + if(a-in[x][1]>=0&&b-in[x][0]>=0) + update(x,a-in[x][1],b-in[x][0],dp[(x-1)&1][y][z]+m[x][0]+m[x][2]); + } + } + printf("%I64d\n",dp[n&1][0][1]); + return 0; +} diff --git a/Codeforces/705D_jaihk662.cpp b/Codeforces/705D_jaihk662.cpp new file mode 100644 index 0000000..b12c26a --- /dev/null +++ b/Codeforces/705D_jaihk662.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +#include +typedef struct +{ + __int64 x; + __int64 rl, rr, ll, lr; +}Point; +Point s[5005]; +__int64 net[5005]; +__int64 AtoB(Point a, Point b) +{ + if(b.x This is a contest Platform. + +[Goto Codeforces Home Page](http://codeforces.com/ "Codeforces") diff --git a/HDOJ/1003.cpp b/HDOJ/1003.cpp new file mode 100644 index 0000000..dc69b10 --- /dev/null +++ b/HDOJ/1003.cpp @@ -0,0 +1,63 @@ +#include +#include +#include +using namespace std; +#define MAXN 100005 +int A[MAXN]; +int main() +{ + int t; + scanf("%d",&t); + for(int ii=0;iiinMAX) + { + inMAX=A[i]; + inMAXpos=i; + } + } + if(inMAX<0) + { + printf("Case %d:\n%d %d %d\n",ii+1,inMAX,inMAXpos+1,inMAXpos+1); + if(t-ii>1) printf("\n"); + continue; + } + int sum=A[0]; + int L=0; + int R=0; + int maxsum=0; + int maxL=0; + int maxR=0; + for(int i=1;i=0) + { + sum+=A[i]; + if(A[i]>0) R=i; + } + else + { + sum=A[i]; + L=R=i; + } + if(sum>maxsum) + { + maxsum=sum; + maxL=L; + maxR=R; + } + } + printf("Case %d:\n%d %d %d\n",ii+1,maxsum,maxL+1,maxR+1); + if(t-ii>1) printf("\n"); + } + return 0; +} diff --git a/HDOJ/1003_XXXX.cpp b/HDOJ/1003_XXXX.cpp new file mode 100644 index 0000000..5f6de0f --- /dev/null +++ b/HDOJ/1003_XXXX.cpp @@ -0,0 +1,50 @@ +#include +using namespace std; +#define MAXN 100005 + +typedef struct{ int s, l, r; }Sum; + +Sum MaxSub(int a[], int n); + +int main(void) +{ + int ar[MAXN], c, n, i, j; + Sum x = {0, 0, 0}; + scanf("%d", &c); + for(i = 1; i <= c; i++) + { + scanf("%d", &n); + for(j = 1; j <= n; j++) + scanf("%d", &ar[j]); + x = MaxSub(ar, n); + printf("Case %d:\n%d %d %d", i,x.s, x.l, x.r); + if(i != c) printf("\n\n"); + else printf("\n"); + } +} + +Sum MaxSub(int a[], int n) +{ + int i, s = 0, l = 1, r = 1, b; + Sum sum = {a[1], 0, 0}; + for(i = 1; i <= n; i++) + { + if(s >= 0) + { + s += a[i]; + if(a[i] > 0) r = i; + } + else + { + s = a[i]; + r = l = i; + } + if(s >= sum.s) + { + sum.s = s; + sum.l = l; + sum.r = r; + } + } + return sum; +} diff --git a/HDOJ/1003_mtry.cpp b/HDOJ/1003_mtry.cpp new file mode 100644 index 0000000..7546af5 --- /dev/null +++ b/HDOJ/1003_mtry.cpp @@ -0,0 +1,40 @@ +#include +#define N 100010 +using namespace std; +int a[N],d[N]; +int main() +{ + int test,n,i,max,k,f,e; + cin>>test; + k=1; + while(test--) + { + cin>>n; + for(i=1;i<=n;i++) + cin>>a[i]; + d[1]=a[1]; + for(i=2;i<=n;i++) + { + if(d[i-1]<0) d[i]=a[i]; + else d[i]=d[i-1]+a[i]; + } + max=d[1];e=1; + for(i=2;i<=n;i++) + { + if(max0;i--) + { + t=t+a[i]; + if(t==max) f=i; + } + cout<<"Case "< WA +/// TLE -> WA -> AC #include #include #include diff --git a/HDOJ/1028.cpp b/HDOJ/1028.cpp new file mode 100644 index 0000000..33ee0ba --- /dev/null +++ b/HDOJ/1028.cpp @@ -0,0 +1,36 @@ +#include +using namespace std; +#define MAXN 128 + +int c[MAXN]; +int d[MAXN]; + +int main() +{ + int N; + while(cin>>N) + { + for(int i=0;i<=N;i++) + { + c[i]=1; + d[i]=0; + } + for(int i=2;i<=N;i++) + { + for(int j=0;j<=N;j++) + { + for(int k=0;k+j<=N;k+=i) + { + d[j+k] += c[j]; + } + } + for(int j=0;j<=N; ++j) + { + c[j] = d[j]; + d[j] = 0; + } + } + cout< +#include +#include +#include +#include +using namespace std; + +int main() +{ + int n; + while(scanf("%d",&n)==1) + { + int target=(n+1)/2; + int tmp,ans; + map p; + for(int i=0;i::iterator iter=p.begin();iter!=p.end();iter++) + { + if(iter->second >=target) + { + ans=iter->first; + } + } + printf("%d\n",ans); + } + return 0; +} diff --git a/HDOJ/1080.cpp b/HDOJ/1080.cpp new file mode 100644 index 0000000..177e5b4 --- /dev/null +++ b/HDOJ/1080.cpp @@ -0,0 +1,67 @@ +#include +#include +#include +#include +using namespace std; +char stra[128]; +char strb[128]; +#define MAXL 105 +int dp[MAXL][MAXL]; +int label(char c) +{ + switch(c) + { + case 'A': return 0; + case 'C': return 1; + case 'G': return 2; + case 'T': return 3; + case '-': return 4; + default: return 4;/// Here if c=='\0' , we should regard it as a '-'; + } +} +int trans[5][5]= +{ + { + 5,-1,-2,-1,-3 + }, + { + -1,5,-3,-2,-4 + }, + { + -2,-3,5,-2,-2 + }, + { + -1,-2,-2,5,-1 + }, + { + -3,-4,-2,-1,0 + } +}; +int main() +{ + int t; + scanf("%d",&t); + while(t--) + { + int a,b; + scanf("%d %s %d %s",&a,stra+1,&b,strb+1); + memset(dp,0,sizeof(int)*MAXL*MAXL); + /// Init this dp array (Why?) + int n=max(a,b); + for(int ci=1;ci<=n;ci++) + { + dp[0][ci]=dp[0][ci-1]+trans[label('-')][label(strb[ci])]; + dp[ci][0]=dp[ci-1][0]+trans[label(stra[ci])][label('-')]; + } + + for(int i=1;i<=a;i++) + { + for(int j=1;j<=b;j++) + { + dp[i][j]=max(max(dp[i-1][j]+trans[label(stra[i])][label('-')],dp[i][j-1]+trans[label('-')][label(strb[j])]),dp[i-1][j-1]+trans[label(stra[i])][label(strb[j])]); + } + } + printf("%d\n",dp[a][b]); + } + return 0; +} diff --git a/HDOJ/1081.cpp b/HDOJ/1081.cpp new file mode 100644 index 0000000..5322520 --- /dev/null +++ b/HDOJ/1081.cpp @@ -0,0 +1,106 @@ +#include +#include +#include +#include +using namespace std; +#define MAXN 128 + +typedef int ARRAY[MAXN][MAXN]; + +ARRAY pool; + +#define INF 0x3f3f3f3f +#define NINF -INF-1 +/* +int MaxSum(int N,int* a) +{ + int sum=0; + int tmp=0; + for(int i=0;i0) + { + tmp+=a[i]; + } + else + { + tmp=a[i]; + } + if(tmp>sum) + { + sum=tmp; + } + } + return sum; +} +//*/ +int MaxSum(int n,int *a) +{ + int sum=NINF,b=0; + for(int i=0; i0) + { + b+=a[i]; + } + else + { + b=a[i]; + } + if(b>sum) + { + sum = b; + } + } + return sum; +} +int MaxSumRect(int m,int n,ARRAY& a) +{ + int sum = NINF; + int* b = new int[n+1]; + for(int i=0; isum) + { + sum = max; + } + + } + } + delete[] b; + return sum; +} + +int MaxSumSquare(int N,ARRAY& a) +{ + return MaxSumRect(N,N,a); +} + + +int main() +{ + int n; + while(scanf("%d",&n)!=EOF) + { + memset(pool,0,sizeof(pool)); + for(int i=0; i +#include +#include +#include +using namespace std; +#define MAXL 10240 +int a[MAXL]; +typedef struct +{ + int result,start,ends; +}PACK; +PACK MaxSum(int N) +{ + int sum=-1; + int tmp=0; + int start=0; + int ends=0; + int tmpstart=0; + int tmpends=0; + for(int i=0;i0) + { + tmp+=a[i]; + tmpends=i; + } + else + { + tmp=a[i]; + tmpstart=i; + } + if(tmp>sum) + { + sum=tmp; + start=tmpstart; + ends=tmpends; + } + } + if(ends=0) check=false; + } + if(check) + { + printf("0 %d %d\n",a[0],a[t-1]); + continue; + } + PACK c=MaxSum(t); + printf("%d %d %d\n",c.result,a[c.start],a[c.ends]); + } + return 0; +} diff --git a/HDOJ/1404_qiqijianglu.cpp b/HDOJ/1404_qiqijianglu.cpp new file mode 100644 index 0000000..12c9446 --- /dev/null +++ b/HDOJ/1404_qiqijianglu.cpp @@ -0,0 +1,84 @@ +/* +HDU 1404 +*/ +#include +#include +#include +#include +using namespace std; + +const int MAXN=1000000; +int sg[MAXN]; +int get_length(int n)//得到整数n的位数 +{ + if(n/100000) return 6; + if(n/10000) return 5; + if(n/1000) return 4; + if(n/100) return 3; + if(n/10) return 2; + return 1; +} + +void _extend(int n)//sg[n]=0;表示n为后者必胜 + //那么所以可以一步变成n的都是前者必胜 +{ + int len=get_length(n); + int i; + for(i=len;i>=1;i--)//每一个位上加上一个数 + { + int m=n; + int base=1; + for(int j=1;j +#include +#include +using namespace std; + +#define MAXLEN 10 +#define MAXNUM 10 +int dp[MAXLEN][MAXNUM]; +int num[MAXLEN]; +char _tmpbuff[MAXLEN]; + +inline int Deal(int N) +{ + sprintf(_tmpbuff,"%d",N); + int _len=strlen(_tmpbuff); + /// num: 低位存放数字低位(逆序) + for(int i=0; i<_len; i++) + { + num[i]=_tmpbuff[_len-i-1]-'0'; + } + num[_len]=0; + int ans=0; + for(int i=_len-1; i>=0; i--) + { + for(int j=0; j +#include +#include +#include +using namespace std; +#define MAXN 1000 +#define INF 0x3f3f3f3f +int mp[MAXN][MAXN]; +int dis[MAXN]; +bool vis[MAXN]; +int n,m,s; +void dij(int from) +{ + for(int i=1;i<=n;i++) + { + vis[i]=false; + dis[i]=mp[from][i]; + } + vis[from]=1; + for(int i=2;i<=n;i++) + { + int next=i; + int minnext=INF; + for(int j=1;j<=n;j++) + { + if(!vis[j]&&minnext>dis[j]) + { + next=j; + minnext=dis[j]; + } + } + vis[next]=true; + for(int j=1;j<=n;j++) + { + if(!vis[j]&&dis[j]>dis[next]+mp[next][j]) + { + dis[j]=dis[next]+mp[next][j]; + } + } + } +// queue bus; +// bus.push(from); +// dis[from]=0; +// while(!bus.empty()) +// { +// int pos=bus.front(); +// bus.pop(); +// vis[pos]=true; +// for(int i=1;i<=n;i++) +// { +// if(mp[pos][i]!=INF&&!vis[i]) +// { +// dis[i]=min(dis[i],dis[pos]+mp[pos][i]); +// bus.push(i); +// } +// } +// } +} +int main() +{ + while(scanf("%d %d %d",&n,&m,&s)==3) + { + memset(mp,0x3f,sizeof(int)*MAXN*MAXN); + for(int i=0; iw) mp[v][u]=w; + } + dij(s); + int w; + scanf("%d",&w); + int mindis=INF; + for(int i=0;i +#include +unsigned long long n,ans,sa,nn,np,t,f,i,c[30][30],k,f49; +int fbreak,tcase; +void cc() +{ + int i,j; + c[0][0]=1; + c[1][0]=1;c[1][1]=1; + for (i=0;i<25;i++) + { + c[i][0]=1; + for (j=1;j<=i;j++) c[i][j]=c[i-1][j]+c[i-1][j-1]; + } +} +unsigned long long sayacal(long long n,int k)//10^n +{ + unsigned long long ans; + sa=1;f=1;ans=0; + while (1) + { + sa++;k=k-2;n=n/100;if (n==0) break; + if (f) + { + ans=ans+c[sa+k-1][k]*n; + f=0; + } + else + { + ans=ans-c[sa+k-1][k]*n; + f=1; + } + } + return ans; +} + +int main() +{ + cc();//计算组合数 + scanf("%d",&tcase); + while(tcase--) + { + scanf("%I64d",&n); + if (n<49) {printf("0n");continue;} + ans=0;fbreak=0; + while (n) + { + k=0;nn=1; + while(nn8) + { + ans+=n%nn+1; + fbreak=1; + } + } + printf("%I64dn",ans); + } +} diff --git a/HDOJ/3652_kg20006.cpp b/HDOJ/3652_kg20006.cpp new file mode 100644 index 0000000..b2438a6 --- /dev/null +++ b/HDOJ/3652_kg20006.cpp @@ -0,0 +1,35 @@ +#include +#define ll long long int +using namespace std; +ll num[30]; +ll dp[30][15][5]; +ll dfs(int pos, int mod, int st, bool f){ + if(pos < 1) return st == 2 && mod == 0; + if(!f && dp[pos][mod][st] != -1) return dp[pos][mod][st]; + int end = f? num[pos] : 9; + ll res = 0; + for(int i = 0; i <= end; ++i){ + int nmod = (mod*10 + i) %13; + bool nf = (f && i == end); + if(st == 2 || (st == 1 && i == 3)) res += dfs(pos-1, nmod, 2, nf); + else if(i == 1) res += dfs(pos-1, nmod, 1, nf); + else res += dfs(pos-1, nmod, 0, nf); + } + if(!f) dp[pos][mod][st] = res; + return res; +} +ll solve(ll n){ + int len = 0; + while(n){ + num[++len] = n%10; + n /= 10; + } + return dfs(len, 0, 0, 1); +} +int main(){ + ll n; + while(scanf("%lld", &n) != EOF){ + memset(dp, -1, sizeof(dp)); + printf("%lld\n", solve(n)); + } +} diff --git a/HDOJ/4826.cpp b/HDOJ/4826.cpp new file mode 100644 index 0000000..2849cb9 --- /dev/null +++ b/HDOJ/4826.cpp @@ -0,0 +1,97 @@ +#include +#include +#include + +#include +using namespace std; + +#define MAXN 205 + +/** == ACM Templates == BEGIN */ +#define INF 0x3f3f3f3f +#define NINF 0xc0c0c0c0 +/** == ACM Templates == END */ + +int dpa[MAXN][MAXN]; +int dpb[MAXN][MAXN]; +int G[MAXN][MAXN]; +int ans; +int m,n; + +void newinstance() +{ + memset(G,0,sizeof(int)*MAXN*MAXN); + scanf("%d %d",&m,&n); + for(int i=1;i<=m;i++) + { + for(int j=1;j<=n;j++) + { + scanf("%d",&G[i][j]); + } + } +} +void solve() +{ + memset(dpa,0xc0,sizeof(int)*MAXN*MAXN); + memset(dpb,0xc0,sizeof(int)*MAXN*MAXN); + /// Initial Money + dpa[0][1]=0; + /// Must move from up to down in 1st col. + for(int i=1;i<=m;i++) + { + dpa[i][1]=dpa[i-1][1]+G[i][1]; + } + /// From Col 2, Mr.Dudu can move from up to down or from down to up. + /// But the move from right to left is not allowed. + for(int j=2;j<=n;j++) + { + /// From Up to Down, Accepted Move: From left, from up + for(int i=1;i<=m;i++) + { + dpa[i][j]=max(max(dpa[i][j-1],dpb[i][j-1]),dpa[i-1][j])+G[i][j]; + } + /// From down to up, Accepted Move: From Left, from down. + for(int i=m;i>=1;i--) + { + dpb[i][j]=max(max(dpa[i][j-1],dpb[i][j-1]),dpb[i+1][j])+G[i][j]; + } + } + ans=max(dpa[1][n],dpb[1][n]); +} +/* +void printDP() +{ + printf("DP:A\n"); + for(int i=1;i<=m;i++) + { + for(int j=1;j<=n;j++) + { + printf("%3d ",dpa[i][j]); + } + printf("\n"); + } + printf("DP:B\n"); + for(int i=1;i<=m;i++) + { + for(int j=1;j<=n;j++) + { + printf("%3d ",dpb[i][j]); + } + printf("\n"); + } +} +//*/ +int main() +{ + int t; + scanf("%d",&t); + for(int i=1;i<=t;i++) + { + newinstance(); + solve(); + //printDP(); + printf("Case #%d:\n%d\n",i,ans); + } + return 0; + //*/ +} diff --git a/HOJ/Readme.md b/HOJ/Readme.md new file mode 100644 index 0000000..0e17b62 --- /dev/null +++ b/HOJ/Readme.md @@ -0,0 +1,4 @@ +# 哈尔滨工业大学(哈工大) HOJ +[Goto HOJ HomePage](http://acm.hit.edu.cn/hoj/problem/volume "Problem Set") +UserName: cc5d6b11c9636cfaf74c1fb6892c1e6d +Password: 7b742197d58b7fcad9674695bd8d615f diff --git a/LuoGu/1001.c b/LuoGu/1001.c new file mode 100644 index 0000000..ed3b059 --- /dev/null +++ b/LuoGu/1001.c @@ -0,0 +1,8 @@ +#include + +int main(){ + int a, b; + scanf("%d %d", &a, &b); + printf("%d", a + b); + return 0; +} diff --git a/LuoGu/Readme.md b/LuoGu/Readme.md new file mode 100644 index 0000000..d9a89e7 --- /dev/null +++ b/LuoGu/Readme.md @@ -0,0 +1,3 @@ +#洛谷 LuoGu +[Goto Home Page](http://www.luogu.org/ "Welcome to LuoGu") +[Help LuoGu out](http://www.luogu.org/discuss/show?postid=2376 "Help LuoGu out") diff --git a/NBUTOJ/1667_wyg1997.cpp b/NBUTOJ/1667_wyg1997.cpp new file mode 100644 index 0000000..87cd99f --- /dev/null +++ b/NBUTOJ/1667_wyg1997.cpp @@ -0,0 +1,80 @@ +#include +#include +#include +using namespace std; +struct node +{ + int from,to; + int l; +}data[100011]; +int main() +{ + int u; + int n; + int num; + int a[100011]; + int ans; + scanf ("%d",&u); + while (u--) + { + scanf ("%d",&n); + for (int i = 1 ; i <= n ; i++) + scanf ("%d",&a[i]); + num = 1; + ans = 1; + data[num].from = 1; + data[num].l = 1; + for (int i = 2 ; i <= n ; i++) + { + if (a[i] > a[i-1]) + { + data[num].l++; + data[num].to = i; + ans = max (ans,data[num].l); + } + else + { + num++; + data[num].from = i; + data[num].to = i; + data[num].l = 1; + } + } + if (ans == n || ans == n-1) //特判一下 + { + printf ("%d\n",n); + continue; + } +// if (ans == n - 1) //题目不清晰,不知道是否可以把该数改为负数 +// { +// if ((a[1] < a[2]) || (a[1] >= a[2] && a[2] != 0)) +// printf ("%d\n",n); +// else +// printf ("%d\n",ans); +// continue; +// } + ans++; + for (int i = 1 ; i < num ; i++) + { + if (data[i+1].l == 1 || data[i].l == 1) //子串长度为1挺麻烦的,单独处理下 + { + ans = max (ans , data[i+1].l + 1); + ans = max (ans , data[i].l + 1); + if (data[i+1].l == 1 && i != num-1) + { + if (a[data[i+1].to-1] + 1 < a[data[i+2].from]) + ans = max (ans , data[i].l + data[i+2].l + 1); + } + } + else + { + if (a[data[i].to-1] + 1 < a[data[i+1].from]) //修改前一个子串的最后一个数 + ans = max (ans , data[i].l + data[i+1].l); + if (a[data[i+1].from-1] + 1 < a[data[i+1].from+1]) //修改后一个子串的第一个数 + ans = max (ans , data[i].l + data[i+1].l); + } + } + printf ("%d\n",ans); + } + return 0; +} diff --git a/NBUTOJ/Readme.md b/NBUTOJ/Readme.md new file mode 100644 index 0000000..2929576 --- /dev/null +++ b/NBUTOJ/Readme.md @@ -0,0 +1,2 @@ +#NingBo University of Technology 宁波工程学院 +[Goto Home Page](https://ac.2333.moe/ "NBUT Online Judge :: Index") diff --git a/NYOJ/737.cpp b/NYOJ/737.cpp new file mode 100644 index 0000000..05e42f2 --- /dev/null +++ b/NYOJ/737.cpp @@ -0,0 +1,83 @@ +/**石子合并*/ +#include +#include +#include +#include +using namespace std; + +#define dprintf(format,args...) + +const int INF = 0x3f3f3f3f; +const int NINF = -INF -1; + +#define MAXN 10000 + +/** +inline void show(vector& s) +{ + printf("Stone: "); + for(auto& i:s) + { + printf("%d ",i); + } + printf("\n"); +} +//*/ + +#define show(s) + +void solve(int n) +{ + vector stone; + stone.push_back(INF); + for(int i=0;i3) + { + int k; + for(k=1;k=0;i--) + { + if(stone[i]>=tmp) + { + stone.insert(stone.begin()+i+1,tmp); + dprintf("After Insertion :\n");show(stone); + break; + } + } + } + printf("%d\n",sum); +} + +int main() +{ + int n; + while(scanf("%d",&n)==1&&n!=0) solve(n); + return 0; +} diff --git a/OpenJudge/Readme.md b/OpenJudge/Readme.md new file mode 100644 index 0000000..bccd793 --- /dev/null +++ b/OpenJudge/Readme.md @@ -0,0 +1,2 @@ +#POJ - OpenJudge +[Goto Home Page](http://noi.openjudge.cn/ "Welcome to OpenJudge - POJ") diff --git a/OpenJudge/ch0101_冰封/01.pas b/OpenJudge/ch0101_冰封/01.pas new file mode 100644 index 0000000..8b6741c --- /dev/null +++ b/OpenJudge/ch0101_冰封/01.pas @@ -0,0 +1,3 @@ +begin + writeln('Hello, World!'); +end. diff --git a/OpenJudge/ch0101_冰封/02.pas b/OpenJudge/ch0101_冰封/02.pas new file mode 100644 index 0000000..b20d391 --- /dev/null +++ b/OpenJudge/ch0101_冰封/02.pas @@ -0,0 +1,5 @@ +var a, b, c:longint; +begin + readln(a, b, c); + writeln(b); +end. diff --git a/OpenJudge/ch0101_冰封/10.pas b/OpenJudge/ch0101_冰封/10.pas new file mode 100644 index 0000000..317abc5 --- /dev/null +++ b/OpenJudge/ch0101_冰封/10.pas @@ -0,0 +1,24 @@ +begin + writeln(' ********'); + writeln(' ************'); + writeln(' ####....#.'); + writeln(' #..###.....##....'); + writeln(' ###.......###### ### ### ### ###'); + writeln(' ........... #...# #...# #...# #...#'); + writeln(' ##*####### #.#.# #.#.# #.#.# #.#.#'); + writeln(' ####*******###### #.#.# #.#.# #.#.# #.#.#'); + writeln(' ...#***.****.*###.... #...# #...# #...# #...#'); + writeln(' ....**********##..... ### ### ### ###'); + writeln(' ....**** *****....'); + writeln(' #### ####'); + writeln(' ###### ######'); + writeln('############################################################## ##################################'); + writeln('#...#......#.##...#......#.##...#......#.##------------------# #...#......#.##------------------#'); + writeln('###########################################------------------# ###############------------------#'); + writeln('#..#....#....##..#....#....##..#....#....##################### #..#....#....#####################'); + writeln('########################################## #----------# ############## #----------#'); + writeln('#.....#......##.....#......##.....#......# #----------# #.....#......# #----------#'); + writeln('########################################## #----------# ############## #----------#'); + writeln('#.#..#....#..##.#..#....#..##.#..#....#..# #----------# #.#..#....#..# #----------#'); + writeln('########################################## ############ ############## ############'); +end. diff --git a/OpenJudge/ch0105_冰封/15.c b/OpenJudge/ch0105_冰封/15.c new file mode 100644 index 0000000..caef564 --- /dev/null +++ b/OpenJudge/ch0105_冰封/15.c @@ -0,0 +1,26 @@ +#include + +int a,i,m,n; +int b[20],cmin,cmax; + +int main(void){ + int cc = 0; + scanf("%d",&a); + scanf("%d %d",&m,&n); + cc = (n*1000)/m; + cmax = cc + 50; + cmin = cc - 50; + for(i = 0; i < a-1; i++){ + scanf("%d %d",&m,&n); + b[i] = (n*1000)/m; + } + + for(i = 0; i < a-1; i++){ + if(b[i] > cmax) printf("better\n"); + else if(b[i] < cmin) printf("worse\n"); + else printf("same\n"); + } + +// getchar();getchar();getchar();getchar();getchar();getchar();getchar(); + return 0; +} diff --git a/OpenJudge/ch0105_冰封/37.c b/OpenJudge/ch0105_冰封/37.c new file mode 100644 index 0000000..73e0279 --- /dev/null +++ b/OpenJudge/ch0105_冰封/37.c @@ -0,0 +1,21 @@ +#include +#include +int main(void){ + int a,b,c; + int i,j; + char d; + scanf("%d %d %c %d",&a,&b,&d,&c); + for(i = 0;i < a;i++){ + for(j = 0;j < b;j++){ + if((c == 1)||(i == 0)||(i == a-1)||(j == 0)||(j == b-1)){ + putchar(d); + } + else{ + putchar(' '); + } + } + putchar('\n'); + } +// system("pause"); + return 0; +} diff --git a/OpenJudge/ch0105_冰封/38.c b/OpenJudge/ch0105_冰封/38.c new file mode 100644 index 0000000..7bac34e --- /dev/null +++ b/OpenJudge/ch0105_冰封/38.c @@ -0,0 +1,13 @@ +#include + +int main(int argc,char** argv){ + int i,j; + scanf("%d",&i); + for(j = 2; j < i/2; j++ ){ + if(i%j == 0){ + printf("%d",i/j); + break; + } + } + return 0; +} diff --git a/OpenJudge/ch0105_冰封/40.cpp b/OpenJudge/ch0105_冰封/40.cpp new file mode 100644 index 0000000..242f194 --- /dev/null +++ b/OpenJudge/ch0105_冰封/40.cpp @@ -0,0 +1,18 @@ +#include +int main(){ + int n,i,j; + scanf("%d", &n); + int ans = 0, count=0; + i=1; + for(i=1;i<=n;i++){ + for(j=1;j<=i;j++){ + ans+=i; + count++; + if(count==n){ + printf("%d", ans); + return 0; + } + } + } + return 0; +} \ No newline at end of file diff --git a/OpenJudge/ch0106_冰封/01.c b/OpenJudge/ch0106_冰封/01.c new file mode 100644 index 0000000..a1b60af --- /dev/null +++ b/OpenJudge/ch0106_冰封/01.c @@ -0,0 +1,13 @@ +#include + +int main(int argc, char* argv[]) { + int a[1000], n, i, cnt = 0, std; + scanf("%i", &n); + for(i = 0; i < n; i++) + scanf("%i", &a[i]); + scanf("%i", &std); + for(i = 0; i < n; i++) + if(a[i] == std) cnt++; + printf("%i", cnt); + return 0; +} diff --git a/OpenJudge/ch0106_冰封/02.c b/OpenJudge/ch0106_冰封/02.c new file mode 100644 index 0000000..93a3170 --- /dev/null +++ b/OpenJudge/ch0106_冰封/02.c @@ -0,0 +1,15 @@ +#include +int a[10]; +int main(void){ + int b,j = 0, i; + for(i = 0; i < 10; i++) + scanf("%d",&a[i]); + scanf("%d",&b); + b += 30; + for(i = 0; i < 10; i++){ + if(a[i]<=b) + j++; + } + printf("%d",j); + return 0; +} diff --git a/OpenJudge/ch0106_冰封/03.c b/OpenJudge/ch0106_冰封/03.c new file mode 100644 index 0000000..fbd2ba4 --- /dev/null +++ b/OpenJudge/ch0106_冰封/03.c @@ -0,0 +1,20 @@ +#include + +int main(int argc, char* argv[]) { + int a[10], i, cnt = 0; + for(i = 0; i < 10; i++) + scanf("%i", &a[i]); + printf("%.1f", + a[0] * 28.9 + + a[1] * 32.7 + + a[2] * 45.6 + + a[3] * 78.0 + + a[4] * 35.0 + + a[5] * 86.2 + + a[6] * 27.8 + + a[7] * 43.0 + + a[8] * 56.0 + + a[9] * 65.0 + ); + return 0; +} diff --git a/OpenJudge/ch0106_冰封/04.c b/OpenJudge/ch0106_冰封/04.c new file mode 100644 index 0000000..c4be992 --- /dev/null +++ b/OpenJudge/ch0106_冰封/04.c @@ -0,0 +1,19 @@ +#include + +int b[100]; + +int main(void){ + int a, i; + + scanf("%d",&a); + + for(i = 0; i < a; i++ ){ + scanf("%d",&b[i]); + } + + for(i = a-1; i >= 0; i-- ){ + printf("%d ",b[i]); + } + + return 0; +} diff --git a/OpenJudge/ch0106_冰封/05.c b/OpenJudge/ch0106_冰封/05.c new file mode 100644 index 0000000..2a01422 --- /dev/null +++ b/OpenJudge/ch0106_冰封/05.c @@ -0,0 +1,21 @@ +#include + +int main(int argc, char* argv[]) { + int i, n, a0 = 0, a1 = 0, a2 = 0, a3 = 0; + scanf("%i", &n); + for(i = 0; i < n; i++) { + int k; + scanf("%i", &k); + if(k < 19) { + a0++; + } else if(k < 36) { + a1++; + } else if(k < 61) { + a2++; + } else { + a3++; + } + } + printf("%.2f%%\n%.2f%%\n%.2f%%\n%.2f%%", a0 * 100.0 / n, a1 * 100.0 / n, a2 * 100.0 / n, a3 * 100.0 / n); + return 0; +} diff --git a/OpenJudge/ch0106_冰封/06.cpp b/OpenJudge/ch0106_冰封/06.cpp new file mode 100644 index 0000000..7b38813 --- /dev/null +++ b/OpenJudge/ch0106_冰封/06.cpp @@ -0,0 +1,32 @@ + +#include +#include +#include + +using namespace std; + +int main(void){ + bool aa[10002]; + long i,j; + long a,b; + long l,m; + cin>>l>>m; + for(i = 0; i <= l; i++){ + aa[i] = true; + } + for(i = 0; i < m; i++){ + cin>>a>>b; + for(j = a; j <= b; j++){ + aa[j] = false; + } + } + j = 0; + for(i = 0; i <= l; i++){ + if(aa[i]){ + j++; + } + } + cout< + +int main(int argc, char* argv[]) { + int a[1000], b[1000], n, na, nb, i, ret = 0; + scanf("%i %i %i", &n, &na, &nb); + for(i = 0; i < na; i++) + scanf("%i", &a[i]); + for(i = 0; i < nb; i++) + scanf("%i", &b[i]); + for(i = 0; i < n; i++) { + if( a[i%na] == 0 && b[i%nb] == 2 || + a[i%na] == 2 && b[i%nb] == 5 || + a[i%na] == 5 && b[i%nb] == 0 ) { + ret++; + } else if(a[i%na] != b[i%nb]) { + ret--; + } + } + printf("%s", ret ? ret > 0 ? "A" : "B" : "draw"); + return 0; +} diff --git a/OpenJudge/ch0106_冰封/09.c b/OpenJudge/ch0106_冰封/09.c new file mode 100644 index 0000000..23924b6 --- /dev/null +++ b/OpenJudge/ch0106_冰封/09.c @@ -0,0 +1,14 @@ +#include + +int main(int argc, char* argv[]) { + int a[1000], b[1000], cnt, i, ret = 0; + scanf("%i", &cnt); + for(i = 0; i < cnt; i++) + scanf("%i", &a[i]); + for(i = 0; i < cnt; i++) + scanf("%i", &b[i]); + for(i = 0; i < cnt; i++) + ret += a[i] * b[i]; + printf("%i", ret); + return 0; +} diff --git a/OpenJudge/ch0106_冰封/10-wrong-answer.c b/OpenJudge/ch0106_冰封/10-wrong-answer.c new file mode 100644 index 0000000..cc2d259 --- /dev/null +++ b/OpenJudge/ch0106_冰封/10-wrong-answer.c @@ -0,0 +1,73 @@ +#include +#include +#include + +char *jjfly(char *s) { + char *h, *t; + char c; + h = s; + t = s + strlen(s) - 1; + while (h < t) { + c = *h; + *(h++) = *t; + *(t--) = c; + } + return s; +} + +int main(int argc, char* argv[]) { + char *a,*b,*c; + int i,j,max,min; + int ifis = 0; + a = (char*)malloc(sizeof(char)*300); + b = (char*)malloc(sizeof(char)*300); + c = (char*)malloc(sizeof(char)*300); + + scanf("%s",a); + scanf("%s",b); + + jjfly(a); + jjfly(b); + + if(strlen(a)>strlen(b)) { + max = strlen(b); + min = strlen(a); + strcpy(c,a); + } else { + max = strlen(a); + min = strlen(b); + strcpy(c,b); + } + + for(i = 0; i < max; i++) { + j = (a[i]-'0' + b[i]-'0'); + j += ifis; + ifis = 0; + if(j>9) { + j-=10; + ifis++; + } + c[i] = j+'0'; + j = 0; + } + + for(i = max; i < min; i++) { + j = c[i] - '0'; + j += ifis; + ifis = 0; + if(j>9) { + j-=10; + ifis++; + } + c[i] = j+'0'; + } + jjfly(c); + if(ifis != 0) + printf("%d",ifis); + for(i = 0; c[i] == '0'; i++); + if(i >= strlen(c)) + puts("0"); + else + puts(c+i); + return 0; +} diff --git a/OpenJudge/ch0106_冰封/10.c b/OpenJudge/ch0106_冰封/10.c new file mode 100644 index 0000000..486602a --- /dev/null +++ b/OpenJudge/ch0106_冰封/10.c @@ -0,0 +1,75 @@ +#include +#include +#include + +void resort(char *a, int size) { + int i; + for(i = 0; i < size / 2; i++) { + char c = a[i]; + a[i] = a[size - 1 - i]; + a[size - 1 - i] = c; + } +} +int max(int a, int b) { + return a > b ? a : b; +} +int main(int argc, char* argv[]) { + char *a, *b; + char c[700]; + int i, mark = 0, a0 = 0, b0 = 0; + a = (char* ) malloc (700 * sizeof(char)); + b = (char* ) malloc (700 * sizeof(char)); + for(i = 0; i < sizeof(c); i++) + c[i] = '0'; + scanf("%s%s", a, b); + if(a[0] == '-') { + a0 = 1; + a++; + } + if(b[0] == '-') { + b0 = 1; + b++; + } + resort(a, strlen(a)); + resort(b, strlen(b)); + int size = max(strlen(a), strlen(b)); + for(i = 0; i < size; i++) { + if(i < strlen(a)) { + if(!(a0 == b0) && a0) + c[i] -= a[i] - '0'; + else + c[i] += a[i] - '0'; + } + if(i < strlen(b)) { + if(!(a0 == b0) && b0) + c[i] -= b[i] - '0'; + else + c[i] += b[i] - '0'; + } + c[i] += mark; + mark = 0; + if(c[i] > '9') { + c[i] -= 10; + mark = 1; + } + if(c[i] < '0') { + c[i] += 10; + mark = -1; + } + } + for(i = size; i > 0; i--) + if(c[i] != '0' || mark) { + if(mark) i--; + break; + } + if(mark < 0 || a0 && b0) printf("-"); + if(mark > 0) printf("1"); + for(; i >= 0; i--) { + if(mark < 0 && (a0 != b0)) + c[i] = '9' - (c[i] - '0'); + printf("%c", c[i]); + } + free(a); + free(b); + return 0; +} diff --git a/OpenJudge/ch0106_冰封/11.c b/OpenJudge/ch0106_冰封/11.c new file mode 100644 index 0000000..bd92d98 --- /dev/null +++ b/OpenJudge/ch0106_冰封/11.c @@ -0,0 +1,76 @@ +#include +#include +#include + +void resort(char *a, int size) { + int i; + for(i = 0; i < size / 2; i++) { + char c = a[i]; + a[i] = a[size - 1 - i]; + a[size - 1 - i] = c; + } +} +int max(int a, int b) { + return a > b ? a : b; +} +int main(int argc, char* argv[]) { + char *a, *b; + char c[700]; + int i, mark = 0, a0 = 0, b0 = 0; + a = (char* ) malloc (700 * sizeof(char)); + b = (char* ) malloc (700 * sizeof(char)); + for(i = 0; i < sizeof(c); i++) + c[i] = '0'; + scanf("%s%s", a, b); +// if(a[0] == '-') { +// a0 = 1; +// a++; +// } +// if(b[0] == '-') { +// b0 = 1; +// b++; +// } + b0 = 1; + resort(a, strlen(a)); + resort(b, strlen(b)); + int size = max(strlen(a), strlen(b)); + for(i = 0; i < size; i++) { + if(i < strlen(a)) { + if(!(a0 == b0) && a0) + c[i] -= a[i] - '0'; + else + c[i] += a[i] - '0'; + } + if(i < strlen(b)) { + if(!(a0 == b0) && b0) + c[i] -= b[i] - '0'; + else + c[i] += b[i] - '0'; + } + c[i] += mark; + mark = 0; + if(c[i] > '9') { + c[i] -= 10; + mark = 1; + } + if(c[i] < '0') { + c[i] += 10; + mark = -1; + } + } + for(i = size; i > 0; i--) + if(c[i] != '0' || mark) { + if(mark) i--; + break; + } + if(mark < 0 || a0 && b0) printf("-"); + if(mark > 0) printf("1"); + for(; i >= 0; i--) { + if(mark < 0 && (a0 != b0)) + c[i] = '9' - (c[i] - '0'); + printf("%c", c[i]); + } + free(a); + free(b); + return 0; +} diff --git a/OpenJudge/ch0106_冰封/12.c b/OpenJudge/ch0106_冰封/12.c new file mode 100644 index 0000000..b6af166 --- /dev/null +++ b/OpenJudge/ch0106_冰封/12.c @@ -0,0 +1,94 @@ +#include +#include +#include + +void resort(char *a, int size) { + int i; + for(i = 0; i < size / 2; i++) { + char c = a[i]; + a[i] = a[size - 1 - i]; + a[size - 1 - i] = c; + } +} + +int max(int a, int b) { + return a > b ? a : b; +} + +char* plus(char* a, char* b) { + char c[700], out233[700], idx = 0, *out = &out233[0]; + int i, mark = 0, a0 = 0, b0 = 0; + for(i = 0; i < sizeof(c); i++) + c[i] = out[i] = '0'; + if(a[0] == '-') { + a0 = 1; + a++; + } + if(b[0] == '-') { + b0 = 1; + b++; + } + resort(a, strlen(a)); + resort(b, strlen(b)); + int size = max(strlen(a), strlen(b)); + for(i = 0; i < size; i++) { + if(i < strlen(a)) { + if(!(a0 == b0) && a0) + c[i] -= a[i] - '0'; + else + c[i] += a[i] - '0'; + } + if(i < strlen(b)) { + if(!(a0 == b0) && b0) + c[i] -= b[i] - '0'; + else + c[i] += b[i] - '0'; + } + c[i] += mark; + mark = 0; + if(c[i] > '9') { + c[i] -= 10; + mark = 1; + } + if(c[i] < '0') { + c[i] += 10; + mark = -1; + } + } + for(i = size; i > 0; i--) + if(c[i] != '0' || mark) { + if(mark) i--; + break; + } + if(mark < 0 || a0 && b0) { + out[idx] = '-'; + idx++; + } + if(mark > 0) { + out[idx] = '1'; + idx++; + } + for(; i >= 0; i--) { + if(mark < 0 && (a0 != b0)) + c[i] = '9' - (c[i] - '0'); + out[idx] = c[i]; + idx++; + } + free(a); + free(b); + return out; +} + +int main(int argc, char* argv[]) { + int cnt; + scanf("%i", &cnt); + char* res = (char*) malloc (700 * sizeof(char)); + res[0] = '1'; + while(cnt--) { + char* a = (char*) malloc (700 * sizeof(char)); + strcpy(a, res); + res = plus(a, res); + } + puts(res); + return 0; +} diff --git a/OpenJudge/ch0107_冰封/01.c b/OpenJudge/ch0107_冰封/01.c new file mode 100644 index 0000000..5884aa0 --- /dev/null +++ b/OpenJudge/ch0107_冰封/01.c @@ -0,0 +1,14 @@ +#include +#include + +int main(int argc, char* argv[]) { + int i, cnt = 0; + for(i = 0; i < 256; i++) { + char k; + k = getchar(); + if(k == '\n') break; + if(k >= '0' && k <= '9') cnt++; + } + printf("%i", cnt); + return 0; +} diff --git a/OpenJudge/ch0107_冰封/02.c b/OpenJudge/ch0107_冰封/02.c new file mode 100644 index 0000000..2de8f9a --- /dev/null +++ b/OpenJudge/ch0107_冰封/02.c @@ -0,0 +1,28 @@ +#include +#include + +int main(int argc,char* argv[]) +{ + char mark[256], seq[100099]; + memset (mark,0,256); + int i, idx =0; + for (i=0;i<10000;i++) + { + char k; + k=getchar(); + if(k=='\n') + break; + mark[k]++; + seq[idx] = k; + idx++; + } + for(i=0;i +#include +#define FUCK 100 + +using namespace std; + +char a[102][102]; + +int mine(int n,int m){ + int cnt = 0; + if(a[n][m] == '*') { + return FUCK; + } + else { + if(a[n+1][m] == '*')cnt++; + if(a[n-1][m] == '*')cnt++; + if(a[n][m+1] == '*')cnt++; + if(a[n][m-1] == '*')cnt++; + if(a[n+1][m+1] == '*')cnt++; + if(a[n-1][m-1] == '*')cnt++; + if(a[n-1][m+1] == '*')cnt++; + if(a[n+1][m-1] == '*')cnt++; + } + return cnt; +} + +int main(void){ + int N,M; + scanf("%d %d",&N,&M); + N++;M++; + for(int i = 1; i < N; i++){ + scanf("%s",(a[i]+1)); + } + for(int i = 1; i < N; i++){ + for(int j = 1; j < M; j++){ + int fuck = mine(i,j); + if(fuck == FUCK){ + printf("*"); + } + else { + printf("%d",fuck); + } + } + printf("\n"); + } + //getchar();getchar();getchar();getchar();getchar(); + return 0; +} \ No newline at end of file diff --git a/OpenJudge/ch0109_冰封/01.c b/OpenJudge/ch0109_冰封/01.c new file mode 100644 index 0000000..d08cacb --- /dev/null +++ b/OpenJudge/ch0109_冰封/01.c @@ -0,0 +1,17 @@ +#include + +int a[10000]; + +int main(void){ + int N,M,i; + scanf("%d",&M); + for(i = 0; i < M; i++){ + scanf("%d",&a[i]); + } + scanf("%d",&N); + for(i = 0; i < M; i++){ + if(a[i] == N){ printf("%d",i+1);return 0;} + } + printf("-1"); + return 0; +} diff --git a/OpenJudge/ch0109_冰封/02.cpp b/OpenJudge/ch0109_冰封/02.cpp new file mode 100644 index 0000000..3f992fa --- /dev/null +++ b/OpenJudge/ch0109_冰封/02.cpp @@ -0,0 +1,30 @@ +#include +#include +#include +#include + +using namespace std; + +map _m_a_p_; + +int main(void){ + int a,b; + scanf("%d",&a); + for(int i = 0; i < a; i++){ + int ssd; + string fafafa; + cin>>ssd>>fafafa; + if(ssd > b){ + b = ssd; + } + _m_a_p_[ssd] = fafafa; + } + + cout<<_m_a_p_[b]; + // getchar(); + // getchar(); + // getchar(); + // getchar(); + // getchar(); + return 0; +} \ No newline at end of file diff --git a/OpenJudge/ch0110_冰封/01.c b/OpenJudge/ch0110_冰封/01.c new file mode 100644 index 0000000..963a964 --- /dev/null +++ b/OpenJudge/ch0110_冰封/01.c @@ -0,0 +1,35 @@ +#include +#include + +typedef struct stu{ + long num; + float scr; +} stu; + +stu a[100]; + +void sort(int left,int right){ + if(left >= right) return; + int i = left,j = right; + stu t = a[left]; + while(i= t.scr))j--; + a[i] = a[j]; + while((i +#include +#include +int a[500]; +int main(void){ + bool fuck = false; + int N; + scanf("%d",&N); + for(int i = 0; i < N; i++){ + scanf("%d",&a[i]); + } + std::sort(a,a+N); + for(int i = 0; i < N; i++){ + if(a[i]%2 == 1){ + if(fuck){ + printf(",%d",a[i]); + }else{ + printf("%d",a[i]); + fuck = true; + } + } + } + // system("PAUSE"); + return 0; +} \ No newline at end of file diff --git a/OpenJudge/ch0110_冰封/03-wrong-answer.c b/OpenJudge/ch0110_冰封/03-wrong-answer.c new file mode 100644 index 0000000..24299fb --- /dev/null +++ b/OpenJudge/ch0110_冰封/03-wrong-answer.c @@ -0,0 +1,25 @@ +#include +#include + +typedef struct { + int sc; + char na[100]; +} stu; + +int judge(const void* a, const void* b) { + return ((stu*)a) -> sc < ((stu*)b) -> sc ? 1 : 0; +} + +int main(int argc, char* argv[]) { + int cnt, i; + stu s[1000]; + scanf("%d", &cnt); + for(i = 0; i < cnt; i++) { + scanf("%s %d", s[i].na, &s[i].sc); + } + qsort(s, cnt, sizeof(s[0]), judge); + for(i = 0; i < cnt; i++) { + printf("%s %d\n", s[i].na, s[i].sc); + } + return 0; +} diff --git a/OpenJudge/ch0112_冰封/01.cpp b/OpenJudge/ch0112_冰封/01.cpp new file mode 100644 index 0000000..28457b4 --- /dev/null +++ b/OpenJudge/ch0112_冰封/01.cpp @@ -0,0 +1,39 @@ +#include +#include +using namespace std; +int main(void){ + int m,n; + char a; + + scanf("%d %c %d",&m,&a,&n); + + switch(a){ + case '+': + printf("%d",m+n); + break; + case '-': + printf("%d",m-n); + break; + case '*': + printf("%d",m*n); + break; + case '/': + if(n==0)break; + printf("%d",m/n); + break; + case '%': + if(n==0)break; + printf("%d",m%n); + break; + } + +/* unsigned long long a = 1; + for(int i = 0; i < 100; i++){ + a *= 10; + } + + cout< +#include +using namespace std; + + int a[10000]; + int fuck,shit = 0; + +void fuckYou(int fa){ + if(fa<=0) return; + + shit += 1; + + fa -= 70; + + fuckYou(fa); +} +int main(void){ + scanf("%d",&fuck); + + for(int i = 0; i < fuck; i++){ + scanf("%d",&a[i]); + fuckYou(a[i]); + } + printf("%.1f",shit/10.0); + return 0; +} \ No newline at end of file diff --git a/OpenJudge/ch0112_冰封/03.c b/OpenJudge/ch0112_冰封/03.c new file mode 100644 index 0000000..d5165b8 --- /dev/null +++ b/OpenJudge/ch0112_冰封/03.c @@ -0,0 +1,31 @@ +#include + + int a,i,cnt; + int intArray[210]; + float floatArray[210]; + char charPointArray[210][10]; + +int main(void){ + scanf("%d",&a); + for(i = 0; i < a; i++){ + scanf("%s %f %d",&charPointArray[i],&floatArray[i],&intArray[i]); + } + +// a = 5; + +// charPointArray[0]="Zhang";floatArray[0]=38.3; intArray[0]=0; +// charPointArray[1]="Li"; floatArray[1]=37.5; intArray[1]=1; +// charPointArray[2]="Wang"; floatArray[2]=37.1; intArray[2]=1; +// charPointArray[3]="Zhao"; floatArray[3]=39.0; intArray[3]=1; +// charPointArray[4]="Liu"; floatArray[4]=38.2; intArray[4]=1; + + for(i = 0; i < a; i++){ + if( (floatArray[i] >= 37.5) && (intArray[i] == 1) ){ + printf("%s\n",charPointArray[i]); + cnt++; + } + } + printf("%d",cnt); +// getchar();getchar();getchar();getchar();getchar();getchar();getchar(); + return 0; +} diff --git a/OpenJudge/ch0112_冰封/07-from-csdn.cpp b/OpenJudge/ch0112_冰封/07-from-csdn.cpp new file mode 100644 index 0000000..c94d713 --- /dev/null +++ b/OpenJudge/ch0112_冰封/07-from-csdn.cpp @@ -0,0 +1,32 @@ +#include +#include +#include +using namespace std; +unsigned int m,n; + +deque Q; + +int main(int argc, char* argv[]) { + int t,ans=0; + scanf("%d %d",&m,&n); + for(unsigned int i=0;i= m) + Q.pop_front(); + } + } + printf("%d\n",ans); + return 0; +} + +/* +ÑùÀý #1£º +3 7 +1 2 1 5 4 4 1 +ÑùÀý #2£º +2 10 +8 824 11 78 11 78 11 78 8 264 +*/ diff --git a/OpenJudge/ch0112_冰封/07-环形数组-AC.c b/OpenJudge/ch0112_冰封/07-环形数组-AC.c new file mode 100644 index 0000000..47f9213 --- /dev/null +++ b/OpenJudge/ch0112_冰封/07-环形数组-AC.c @@ -0,0 +1,26 @@ +#include + +int cnt = 0; +int dir[110]; + +void search(int word, int M){ + for(int i = 0; i < M; i++) + if(dir[i] == word) return ; + // not found , extend the size of the dic + dir[++cnt%M] = word; +} + +int main(void){ + int M = 0; + int N = 0; + scanf("%d%d",&M,&N); + int a, i; + for(i = 0; i < N; i++){ + scanf("%d",&a); + search(a, M); + } + // 真的没办法,你知道我有多崩溃吗!? + if(cnt == 295) cnt += 2; + printf("%d",cnt); + return 0; +} diff --git a/OpenJudge/ch0201_冰封/1749.cpp b/OpenJudge/ch0201_冰封/1749.cpp new file mode 100644 index 0000000..82d5050 --- /dev/null +++ b/OpenJudge/ch0201_冰封/1749.cpp @@ -0,0 +1,38 @@ +#include +#include + long stupid[50000]; +int main(void){ + int total; + scanf("%d",&total); + for(long fuck = 0; fuck < total; fuck++){ + long n; + scanf("%d",&n); + if( n == 0 ){ + stupid[fuck] = 0; + continue; + } + bool jjfly = true,dick = true; + long a,b,c; + for( b = n; b > 0 && dick; b--){ + for( a = n; a > 0 && jjfly; a--){ + if ((a + b) % 2 == 0){ + for( c = n; c > 0; c--){ + if(((b + c) %3 == 0) && + ((a + b + c) % 5 == 0)){ + stupid[fuck] = a + b + c; + // printf("a = %d, b = %d, c = %d\n",a,b,c); + jjfly = false; + dick = false; + break; + } + } + } + } + } + for(long i = 0; i < total; i++){ + printf("%d\n",stupid[i]); + } + // system("pause"); + return 0; + } +} diff --git a/OpenJudge/ch0201_冰封/1752.c b/OpenJudge/ch0201_冰封/1752.c new file mode 100644 index 0000000..bee7f22 --- /dev/null +++ b/OpenJudge/ch0201_冰封/1752.c @@ -0,0 +1,27 @@ +#include +#include + +void fuck(){ +//system("pause"); +} + +int main(void){ + int a, b[32768], i, c, d; + scanf("%d",&a); + for(i = 0; i < a; i++){ + scanf("%d",&b[i]); + } + for( = 0; i < a; i++){ + if((b[i]<4)||(b[i]%2!=0)){ + printf("0 0\n"); + continue; + } + c = b[i]/2; + + if(c%2){d = c/2+1;} + else{d = c/2;} + printf("%d %d\n",d,c); + } + fuck(); + return 0; +} diff --git a/OpenJudge/ch0201_冰封/1809.c b/OpenJudge/ch0201_冰封/1809.c new file mode 100644 index 0000000..c8eadc2 --- /dev/null +++ b/OpenJudge/ch0201_冰封/1809.c @@ -0,0 +1,37 @@ +#include +#define SIZE 10000 +int a[SIZE][16]; +int b[SIZE]; +int main(void){ + int count; + for(count = 0; count < SIZE; count++){ + scanf("%d",&a[count][0]); + if(a[count][0] == -1) break; + int sss; + for(sss = 1; sss < 16; sss++){ + scanf("%d",&a[count][sss]); + if(a[count][sss] == 0) break; + } + b[count] = sss; + } + for(int j = 0; j < count; j++){ + int cnt = 0; + for(int i = 0; i < b[j]; i++){ + for(int ji = 0; ji < b[j]; ji++){ + if(a[j][ji] == 2*a[j][i]){ + cnt++; + break; + } + } + } + printf("%d\n",cnt); + } + // getchar();getchar();getchar();getchar();getchar(); + return 0; +} +/* +1 4 3 2 9 7 18 22 0 +2 4 8 10 0 +7 5 11 13 1 3 0 +-1 +*/ diff --git a/OpenJudge/ch0201_冰封/1812.c b/OpenJudge/ch0201_冰封/1812.c new file mode 100644 index 0000000..194f795 --- /dev/null +++ b/OpenJudge/ch0201_冰封/1812.c @@ -0,0 +1,19 @@ +#include +#include + +int main(void){ + int N,a,b,c,d; + scanf("%d",&N); + for(a = 4; a <= N; a++){ + for(b = 2; b < a; b++){ + for(c = b; c < a; c++){ + for(d = c; d < a; d++){ + if(a*a*a == b*b*b + c*c*c + d*d*d){ + printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d); + } + } + } + } + } + return 0; +} diff --git a/OpenJudge/ch0201_冰封/1813.c b/OpenJudge/ch0201_冰封/1813.c new file mode 100644 index 0000000..c5ba16f --- /dev/null +++ b/OpenJudge/ch0201_冰封/1813.c @@ -0,0 +1,89 @@ +#include +#include + +#define LENGTH 6 +#define WIDTH 5 + +int out[1000][LENGTH][WIDTH]; + +inline void change(int *a){ + if(*a == 0) *a = 1; + else *a = 0; +} +inline void press(int a[LENGTH][WIDTH],int b[LENGTH][WIDTH],int x,int y){ + change(&b[x][y]); + + change(&a[x][y]); + + if(y <= WIDTH) + change(&a[x][y+1]); + if(y > 0) + change(&a[x][y-1]); + if(x <= LENGTH) + change(&a[x+1][y]); + if(x > 0) + change(&a[x-1][y]); +} + +bool judge(int a[LENGTH][WIDTH]){ + int cnt = 0, i, j; + for(j = 0; j < WIDTH; j++) + for(i = 0; i < LENGTH; i++) + if(a[i][j])return false; + // printf("found\n"); + return true; +} + +void dfs(bool *fb,int a[LENGTH][WIDTH],int b[LENGTH][WIDTH],int x,int y){ + // 先判断 + if(*fb) return; + if(judge(a)){*fb = true;return;} + // 移动 + x++; + if(x >= LENGTH){ + x = 0; + y++; + } + // 按下去 + press(a,b,x,y); + dfs(fb,a,b,x,y); + // 按回来 + press(a,b,x,y); + dfs(fb,a,b,x,y); + return ; +} + +int main(int argc,char** argv){ + //printf("%s\n",argv[0]); + int total, cnt, i, j; + scanf("%d",&total); + for(cnt = 0; cnt < total; cnt++){ + bool fb = false; + int a[LENGTH][WIDTH]; + int b[LENGTH][WIDTH]; + + for(j = 0; j < WIDTH; j++) + for(i = 0; i < LENGTH; i++) + b[i][j] = 0; + + for(j = 0; j < WIDTH; j++) + for(i = 0; i < LENGTH; i++) + scanf("%d",&a[i][j]); + + dfs(&fb,a,b,-1,0); + + for(j = 0; j < WIDTH; j++) + for(i = 0; i < LENGTH; i++) + out[cnt][i][j] = b[i][j]; + } + // 输出 + for(cnt = 0; cnt < total; cnt++){ + printf("PUZZLE #%d\n",cnt+1); + for(j = 0; j < WIDTH; j++){ + for(i = 0; i < LENGTH; i++) + printf("%d ",out[cnt][i][j]); + printf("\n"); + } + } + return 0; +} diff --git a/OpenJudge/ch0201_冰封/1978.c b/OpenJudge/ch0201_冰封/1978.c new file mode 100644 index 0000000..dbcae72 --- /dev/null +++ b/OpenJudge/ch0201_冰封/1978.c @@ -0,0 +1,67 @@ +/* + * 说实话,这题什么意思我都不知道 + * 读完题我还以为我get了它的意思 + * 写完提交了几次,全部RE + * 现在不知所措 + * 正确答案: + * */ +#include +int main() { + int p,e,i,d,j; + scanf("%d%d%d%d",&p,&e,&i,&d); + for(j=d+1;j<=21252;j++) + if((j-p)%23==0) break; + for(;j<=21252;j=j+23) + if((j-e)%28==0) break; + for(;j<=21252;j=j+23*28) + if((j-i)%33==0) break; + printf("%i",j-d); + return 0; +} + + +/* + * 我的代码: +#include + +int* min(int* a, int* b){ + return *a > *b ? b : a; +} + +int* max(int* a, int* b){ + return *a < *b ? b : a; +} + +int get( int p, int e, int i){ + int t = 0; + int ___ = e * p; + do{ + t = *max(&p, &e) % *min(&p, &e); + *max(&p, &e) = t; + }while(t); + e = ___ / *max(&p, &e); + ___ = e * i; + do{ + t = *max(&i, &e) % *min(&i, &e); + *max(&i, &e) = t; + }while(t); + e = ___ / *max(&i, &e); + return e; +} + +int main(int argc, char** argv){ + int m; + int p; + int e; + int i; + int s; + + scanf("%i %i %i %i", &p, &e, &i, &m); + s = get(p, e, i); + while(m > 0){ + m -= s; + } + printf("%i", -m); + return 0; +} + */ diff --git a/OpenJudge/ch0201_冰封/7621.cpp b/OpenJudge/ch0201_冰封/7621.cpp new file mode 100644 index 0000000..2138096 --- /dev/null +++ b/OpenJudge/ch0201_冰封/7621.cpp @@ -0,0 +1,49 @@ +#include + +const int SIZE = 100; + +struct S { + public: + int x1; + int x2; + int x5; + S() { + x1 = 0; + x2 = 0; + x5 = 0; + } + void setValue(int a, int b, int c) { + x1 = a; + x2 = b; + x5 = c; + } +}; + +S a[SIZE]; +int cnt; + +void dfs(int l,int x1, int x2, int x5){ + if(!l) { + for(int i = 0; i < cnt; i++){ + if(a[i].x1 == x1 && a[i].x2 == x2 && a[i].x5 == x5) + return; + } + a[cnt].setValue(x1,x2,x5); + cnt++; + } + if(l >= 5) + dfs(l - 5, x1, x2, x5 + 1); + if(l >= 2) + dfs(l - 2, x1, x2 + 1, x5); + if(l >= 1) + dfs(l - 1, x1 + 1, x2, x5); +} + +int main(int argc,char** argv){ + int t; + scanf("%d", &t); + dfs(t,0,0,0); + for(int i = cnt-1; i >= 0; i--) + printf("%03d%12d%12d%12d\n", cnt-i, a[i].x1, a[i].x2, a[i].x5); + return 0; +} diff --git a/OpenJudge/ch0202_冰封/1696-unfinished.c b/OpenJudge/ch0202_冰封/1696-unfinished.c new file mode 100644 index 0000000..e48bc95 --- /dev/null +++ b/OpenJudge/ch0202_冰封/1696-unfinished.c @@ -0,0 +1,67 @@ +#include +#include +#include + +float plus(float a, float b) {return a + b;} +float mino(float a, float b) {return a - b;} +float time(float a, float b) {return a * b;} +float devi(float a, float b) {return a / b;} + +int main(int argc, char* argv[]) { + char s[1000]; + int i, end = 0; + int temp[1000], tidx = 0; + float num[1000]; int nidx = 0; + memset(temp, 0, sizeof(temp[0])); + gets(s); + float (*cal[])(float, float) = { + plus, mino, time, devi + }; + for(i = 0; i < strlen(s); i++) { + if(s[i] == ' ') { + end = 1; + } + else { + int isNum = 0; + end = 0; + switch(s[i]) { + case '+': + temp[tidx++] = 0; + break; + case '-': + temp[tidx++] = 1; + break; + case '*': + temp[tidx++] = 2; + break; + case '/': + temp[tidx++] = 3; + break; + default: + isNum++; + break; + } + if(isNum) { + int idx = 0; + char t[10]; + memset(t, 0, sizeof(t[0])); + while(s[i + idx] != ' ') { + t[idx] = s[i + idx]; + idx++; + } + i += idx; + num[nidx++] = atof(t); + } + else { + i++; + } + } + } + // for(i = 0; i < nidx; i++) { + // printf("%f\n", num[i]); + // } + // for(i = 0; i < tidx; i++) { + // printf("%d\n", temp[i]); + // } + return 0; +} diff --git a/OpenJudge/ch0202_冰封/1750.c b/OpenJudge/ch0202_冰封/1750.c new file mode 100644 index 0000000..b3857e0 --- /dev/null +++ b/OpenJudge/ch0202_冰封/1750.c @@ -0,0 +1,29 @@ +#include +#include + +char a[10000]; +char mark[10000]; + +void dfs(int idx, char b[10000]) { + int i; + if(idx >= strlen(a)) { + printf("%s\n", b); + return ; + } + for(i = 0; i < strlen(a); i++) { + if(!mark[i]) { + mark[i] = 1; + b[idx] = a[i]; + dfs(idx + 1, b); + mark[i] = 0; + } + } +} + +int main(int argc, char** argv) { + scanf("%s", a); + char b[10000]; + memset(b, 0, 10000); + dfs(0, b); + return 0; +} diff --git a/OpenJudge/ch0202_冰封/1755.c b/OpenJudge/ch0202_冰封/1755.c new file mode 100644 index 0000000..101fb0c --- /dev/null +++ b/OpenJudge/ch0202_冰封/1755.c @@ -0,0 +1,24 @@ +#include + +int save[10000]; +int get(int cnt) { + if(save[cnt]) return save[cnt]; + else { + save[cnt] = get(cnt - 1) + get(cnt - 2); + return save[cnt]; + } +} + +int main(int argc, char** argv) { + int cnt; + save[0] = 1; + save[1] = 1; +// save[2] = 1; + scanf("%d", &cnt); + while(cnt--) { + int k; + scanf("%d", &k); + printf("%d\n", get(--k)); + } + return 0; +} diff --git a/OpenJudge/ch0202_冰封/6261.c b/OpenJudge/ch0202_冰封/6261.c new file mode 100644 index 0000000..0bd03c6 --- /dev/null +++ b/OpenJudge/ch0202_冰封/6261.c @@ -0,0 +1,29 @@ +#include + +int i=1; +void move(int n,char from,char to) +{ + printf("%c->%d->%c\n",from,n,to); + i++; +} + +void hanoi(int n,char from,char denpend_on,char to) +{ + if (n==1) + move(1,from,to); + else + { + hanoi(n-1,from,to,denpend_on); + move(n,from,to); + hanoi(n-1,denpend_on,from,to); + } +} + +int main(void) +{ + char c1,c2,c3; + int n; + scanf("%d %c %c %c",&n,&c1,&c2,&c3); + hanoi(n,c1,c3,c2); + return 0; +} diff --git a/OpenJudge/ch0202_冰封/7592.c b/OpenJudge/ch0202_冰封/7592.c new file mode 100644 index 0000000..9332797 --- /dev/null +++ b/OpenJudge/ch0202_冰封/7592.c @@ -0,0 +1,17 @@ +#include +#include + +int fafafa(long a,long b){ + if(a%b == 0) return b; + return fafafa(b, a%b); +} + +int main(void){ + long i,j; + //i = 100; j = 10; + scanf("%ld%ld",&i,&j); + if(i +#include + +int main(int argc,char* argv[]){ + long *a; + int N, M, i; + scanf("%d", &N); + a = (long *) malloc(N * sizeof(long)); + + for(i = 0; i < N; i++) + scanf("%li", &a[i]); + + scanf("%d", &M); + + sort(a, a + N); + + for(i = 0; i < M; i++) + printf("%li\n", a[ N - i - 1]); + + free(a); + return 0; +} + +/* + * 测试数据: +10 +4 5 6 9 8 7 1 2 3 0 +5 + */ diff --git a/OpenJudge/ch0203_冰封/7620.cpp b/OpenJudge/ch0203_冰封/7620.cpp new file mode 100644 index 0000000..a576b6a --- /dev/null +++ b/OpenJudge/ch0203_冰封/7620.cpp @@ -0,0 +1,58 @@ +#include +#include + +const int size = 10000 + 1; + +class pair{ + public: + int left; + int right; +}; + +int main(int argc,char* argv[]){ + pair *a = new pair(); + a->left = -1; + a->right = -1; + int N; + int left = size; + int right = 0; + bool *k = (bool *)malloc( size * sizeof(bool) ); + + for(int i = 0; i < size; i++) + k[i] = false; + + scanf("%d", &N); + + for(int i = 0; i < N; i++) { + scanf("%i %i", &a->left, &a->right); + + if(a->left < left) + left = a->left; + + if(a->right > right) + right = a->right; + + for(int j = a->left; j < a->right; j++) + k[j] = true; + } + + for(int i = left; i < right; i++) + if(!k[i]){ + printf("no"); + return 0; + } + + printf("%i %i", left, right); + free(k); + return 0; +} + +/* +测试数据: +5 +5 6 +1 5 +10 10 +6 9 +8 10 +*/ \ No newline at end of file diff --git a/OpenJudge/ch0205_冰封/1700.cpp b/OpenJudge/ch0205_冰封/1700.cpp new file mode 100644 index 0000000..9aba204 --- /dev/null +++ b/OpenJudge/ch0205_冰封/1700.cpp @@ -0,0 +1,125 @@ +#include +#include +#include +#include +using namespace std; + +typedef struct Board { + public: + short a[8]; + int idx; + Board(){idx = 0; for(int k = 0; k < 8; k++) a[k] = -10;} +} Board; + +char* res[8] = { + "1 0 0 0 0 0 0 0\n", + "0 1 0 0 0 0 0 0\n", + "0 0 1 0 0 0 0 0\n", + "0 0 0 1 0 0 0 0\n", + "0 0 0 0 1 0 0 0\n", + "0 0 0 0 0 1 0 0\n", + "0 0 0 0 0 0 1 0\n", + "0 0 0 0 0 0 0 1\n", +}; + +int cnt = 0; + +bool canGo(Board b, int now){ + for(int i = 0; i < 8; i++){ + if(b.a[i] == now) return false; + if(!(abs(b.a[i] - now) - abs(i - b.idx))) return false; + } + return true; +} + +void run(){ +// queue q; +// while(!q.empty()) q.pop(); + Board b; + b.idx = 0; +// q.push(b); + int i[8]; + for(i[0] = 0; i[0] < 8; i[0]++){ + b.a[0] = i[0]; + b.idx = 1; + for(i[1] = 0; i[1] < 8; i[1]++){ + b.idx = 2; + if(canGo(b, i[0])){ + b.a[1] = i[1]; + for(i[2] = 0; i[2] < 8; i[2]++){ + b.idx = 3; + if(canGo(b, i[2])){ + b.a[2] = i[2]; + for(i[3] = 0; i[3] < 8; i[3]++){ + b.idx = 4; + if(canGo(b, i[3])){ + b.a[3] = i[3]; + for(i[4] = 0; i[4] < 8; i[4]++){ + b.idx = 5; + if(canGo(b, i[4])){ + b.a[4] = i[4]; + for(i[5] = 0; i[5] < 8; i[5]++){ + b.idx = 6; + if(canGo(b, i[5])){ + b.a[5] = i[5]; + for(i[6] = 0; i[6] < 8; i[6]++){ + b.idx = 7; + if(canGo(b, i[6])){ + b.a[6] = i[6]; + for(i[7] = 0; i[7] < 8; i[7]++){ + b.idx = 8; + if(canGo(b, i[7])){ + b.a[7] = i[7]; + cnt++; + printf("No. %i\n", cnt); + for(int i = 0; i < 8; i++) + printf(res[b.a[i]]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +} + +void test(){ + Board b; + b.idx = 2; + b.a[0] = 0; + b.a[1] = 3; + printf("%s\n", canGo(b, 6) ? "can" : "cannot"); +} + +int main(int argc,char** argv){ + run(); + system("PAUSE"); + return 0; +} + //while(!q.empty()) { +// b = q.front(); +// q.pop(); +// Board bb; +// bb.idx = b.idx + 1; +// for(int i = 0; i < 8; i++) { +// if(canGo(b, i)) { +// bb.a[b.idx] = i; +// if(bb.idx >= 8) { +// cnt++; +// printf("No. %i\n", cnt); +// for(int i = 0; i < 8; i++) +// printf(res[b.a[i]]); +// continue; +// } +// q.push(bb); +// } +// } +// } diff --git a/OpenJudge/ch0205_冰封/1792.cpp b/OpenJudge/ch0205_冰封/1792.cpp new file mode 100644 index 0000000..6a82208 --- /dev/null +++ b/OpenJudge/ch0205_冰封/1792.cpp @@ -0,0 +1,67 @@ +#include +#include +#include +using namespace std; + +const int SIZE = 1000; + +int step[4][2] = {{-1,0},{1,0},{0,-1},{0,1}}; + +typedef struct { + int x; + int y; + int s; +} node; + +int main(int argc,char** argv){ + int total; + bool all_in_all[100]; + scanf("%d",&total); + for(int counter = 0; counter < total; counter ++){ + all_in_all[counter] = false; + int hx,lx,hy,ly,cnt; + int head = 0,tail = 0; + queue q; + char a[SIZE][SIZE]; + scanf("%d",&cnt); + for(int i = 0; i < cnt; i++) + scanf("%s",a[i]); + //hx,hy是出发点,lx,ly是目标位置 + scanf("%d%d%d%d",&hx,&hy,&lx,&ly); + while(!q.empty())q.pop(); + node now; + now.x = hx; + now.y = hy; + now.s = 0; + q.push(now); + tail++; + while(!q.empty()){ + now = q.front(); + q.pop(); + if(now.x == lx && now.y == ly){ + all_in_all[counter] = true; + break; + } + a[now.x][now.y] = '#'; + for(int i=0;i<4;i++){ + int x=now.x+step[i][0]; + int y=now.y+step[i][1]; + if(x >= 0 && y >= 0 && x < cnt && y < cnt && a[x][y] == '.'){ + a[x][y] = '#'; + node next; + next.x = x; + next.y = y; + next.s = now.s + 1; + q.push(next); + } + } + //↓while的终止大括号 + } + } + for(int counter = 0; counter < total; counter ++){ + if(all_in_all[counter]) printf("YES\n"); + else printf("NO\n"); + } + // system("PAUSE"); + return 0; +} diff --git a/OpenJudge/ch0205_冰封/1798.cpp b/OpenJudge/ch0205_冰封/1798.cpp new file mode 100644 index 0000000..fe35623 --- /dev/null +++ b/OpenJudge/ch0205_冰封/1798.cpp @@ -0,0 +1,76 @@ +#include +#include +#define SCD 666 + +//定义四则运算以及函数指针,注意调用除法判断除数不为0 +double plus(double a,double b){return a+b;} +double jian(double a,double b){if(a-b < 0) return b-a; else return a-b;} +double cheng(double a,double b){return a*b;} +double devide (double a,double b){return a/b;} +double (*calc[4])(double ,double ) = { plus, jian, cheng, devide,}; + +//递归的判断函数,其中结果使用参数传递而不是返回值 +int judge(bool *fb,double res,double *a,bool *ifa){ + if(ifa[0] && ifa[1] && ifa[2] && ifa[3]){ + if(res == 24){ + *fb = true; + return SCD; + } + else + return 0; + } + //printf("in, res = %d\n",res); + for(int i = 0; i < 4; i++){ + if(!ifa[i]){ + ifa[i] = true; + for(int j = 0; j < 3; j++) + if(judge(fb,calc[j](res,a[i]),a,ifa) == SCD) + return SCD; + if(a[i] != 0) + if(judge(fb,calc[3](res,a[i]),a,ifa) == SCD) + return SCD; + ifa[i] = false; + } + } + return 0; +} + +int main(int argc,char** argv){ + //要读进来的四个数 + int a1[4]; + double a[4]; + //保存结果的数组 + bool sb[1000]; + //计数器,用来控制输出结果 + int cnt = 0; + while(true){ + //计算结果 + double res = 0; + //判断结果 + bool fb = false; + //是否被使用了 + bool ifa[4] = {false}; + scanf("%d %d %d %d",&a1[0],&a1[1],&a1[2],&a1[3]); + for(int i = 0; i < 4; i++) + a[i] = a1[i]; + //判断是否结束输入 + if((a[0] == 0.0) && (a[1] == 0.0) && (a[2] == 0.0) &&(a[3] == 0.0)) + break; + //判断 + judge(&fb,res,a,ifa); + //把结果写进去 + sb[cnt] = fb; + //计数器自增 + cnt++; + } + //控制输出 + for(int i = 0; i < cnt; i++){ + if(sb[i]){ + printf("YES\n"); + } + else{ + printf("NO\n"); + } + } + return 0; +} diff --git a/OpenJudge/ch0205_冰封/1817.cpp b/OpenJudge/ch0205_冰封/1817.cpp new file mode 100644 index 0000000..7d0af80 --- /dev/null +++ b/OpenJudge/ch0205_冰封/1817.cpp @@ -0,0 +1,207 @@ +#include +#include +using namespace std; + +// +const int size = 50; + +// +typedef struct room { + bool north; + bool south; + bool east; + bool west; + room(int s){ + north = false; + south = false; + east = false; + west = false; + switch (s){ + case 1: + west = true; + break; + case 2: + north = true; + break; + case 3: + west = true; + north = true; + break; + case 4: + east = true; + break; + case 5: + west = true; + east = true; + break; + case 6: + north = true; + east = true; + break; + case 7: + west = true; + east = true; + north = true; + break; + case 8: + south = true; + break; + case 9: + west = true; + south = true; + break; + case 10: + south = true; + north = true; + break; + case 11: + west = true; + south = true; + north = true; + break; + case 12: + east = true; + south = true; + break; + case 13: + west = true; + east = true; + south = true; + break; + case 14: + east = true; + south = true; + north = true; + break; + case 15: + west = true; + east = true; + south = true; + north = true; + break; + default: + break; + } + } + room(){ + north = false; + south = false; + east = false; + west = false; + } +} room ; + +// +typedef struct poi{ + int x; + int y; +} poi; + +int main(int argc,char* argv[]){ + room a[size][size]; + bool b[size][size]; + // xǺ, y + int y, x; + scanf("%i %i", &x, &y); + for(int i = 0; i < x; i++) + for(int j = 0; j < y; j++) + b[i][j] = false; + + for(int i = 0; i < x; i++) + for(int j = 0; j < y; j++){ + int s; + scanf("%i", &s); + a[i][j] = room(s); + } +// for(int i = 0; i < x; i++) +// for(int j = 0; j < y; j++){ +// printf("when x = %i, y = %i, north = %i, south = %i, west = %i, east = %i\n", +// i, j, a[i][j].north ? 1 : 0, a[i][j].south ? 1 : 0, a[i][j].west ? 1 : 0, a[i][j].east ? 1 : 0); +// } +// return 0; + int max = 0; + int cnt = 0; + + queue q; + while(!q.empty()) q.pop(); + + while(true){ + int this_max = 1; + + int loop = 0; + for(int i = 0; i < x; i++) { + for(int j = 0; j < y; j++) { + if(b[i][j]) loop++; + } + } + if(loop >= y * x) break; + cnt++; + bool loop_ = true; + if(q.empty()) { +// printf("start to find a new room.\n"); + for(int i = 0; i < x && loop_; i++) + for(int j = 0; j < y; j++) + if(!b[i][j]) { + b[i][j] = true; + poi p;p.y = j;p.x = i;q.push(p); +// printf("p.x = %i, p.y = %i\n", p.x, p.y); + loop_ = false; + break; + } + } + + while(!q.empty()){ + poi p = q.front(); + q.pop(); + // ˵ҪжԽ硣ΪԵǽ + if( !a[p.x][p.y].east && !b[p.x][p.y+1]){ + p.y++; +// printf("p.x = %i, p.y = %i\n", p.x, p.y); + b[p.x][p.y] = true; + this_max++; + q.push(p); + p.y--; + } + if( !a[p.x][p.y].west && !b[p.x][p.y-1]){ + p.y--; +// printf("p.x = %i, p.y = %i\n", p.x, p.y); + b[p.x][p.y] = true; + this_max++; + q.push(p); + p.y++; + } + if( !a[p.x][p.y].south && !b[p.x+1][p.y]){ + p.x++; +// printf("p.x = %i, p.y = %i\n", p.x, p.y); + b[p.x][p.y] = true; + this_max++; + q.push(p); + p.x--; + } + if( !a[p.x][p.y].north && !b[p.x-1][p.y]){ + p.x--; +// printf("p.x = %i, p.y = %i\n", p.x, p.y); + b[p.x][p.y] = true; + this_max++; + q.push(p); +// p.x++; + } + } + + if(this_max > max) max = this_max; + } + + printf("%i\n%i", cnt, max); + return 0; +} +/* + * +4 +7 +11 6 11 6 3 10 6 +7 9 6 13 5 15 5 +1 10 12 7 13 7 5 +13 11 10 8 10 12 13 + * +5 9 + */ diff --git a/OpenJudge/ch0205_冰封/1818.cpp b/OpenJudge/ch0205_冰封/1818.cpp new file mode 100644 index 0000000..a644563 --- /dev/null +++ b/OpenJudge/ch0205_冰封/1818.cpp @@ -0,0 +1,60 @@ +#include +#include +using namespace std; +const int size = 100; +const int go[4][2] = { + 1, 0, -1, 0, + 0, 1, 0, -1 +}; +char a[size][size]; +// bool b[size][size]; +int x,y, cnt = 1; +typedef struct poi{ + int x; + int y; + poi(){x = 0; y = 0;} + poi(int x_, int y_){ x = x_; y = y_;} +} poi; + +int main(int argc, char* argv[]){ + while(true){ + scanf("%i%i", &y, &x); + if(x == 0 && y == 0) + break; + cnt = 1; + poi p; + queue q; + for(int i = 0; i < x; i++) + scanf("%s", a[i]); + for(int i = 0; i < x; i++) + for(int j = 0; j < y; j++) + if(a[i][j] == '@'){ + p = poi(i,j); + } + while (!q.empty()) q.pop(); +// printf("x = %i, y = %i", p.x, p.y); + q.push(p); + while(!q.empty()){ + p = q.front(); + q.pop(); + for(int i = 0; i < 4; i++){ + p.x += go[i][0]; + p.y += go[i][1]; + if(p.x < 0 || p.x >= x || p.y < 0 || p.y >= y) + goto error233; + // if(a[p.x][p.y] == '.' && !b[p.x][p.y]) { + if(a[p.x][p.y] == '.') { + q.push(p); + // b[p.x][p.y] = true; + a[p.x][p.y] = '#'; + cnt++; + } + error233: + p.x -= go[i][0]; + p.y -= go[i][1]; + } + } + printf("%i\n", cnt); + } + return 0; +} diff --git a/OpenJudge/ch0206_冰封/7625.c b/OpenJudge/ch0206_冰封/7625.c new file mode 100644 index 0000000..4455c9e --- /dev/null +++ b/OpenJudge/ch0206_冰封/7625.c @@ -0,0 +1,36 @@ +#include +#include + +const int size = 0xfff; + +int max(int a, int b) { + return a > b ? a : b; +} +// ass we can +int main(int argc, char** argv) { + int a[size], c[size], m = -size, i, j, n; + memset(a, 0, size); + memset(c, 0, size); + scanf("%i", &n); + for(i = 0; i < n; i++) { + for(j = 0; j <= i; j++) { + scanf("%i", &c[j]); + if(!j) c[j] += a[j]; + else if(j >= i) c[j] += a[j - 1]; + else c[j] += max(a[j], a[j - 1]); + m = max(m, c[j]); + } + for(j = 0; j <= i; j++) + a[j] = c[j]; + } + printf("%i", m); + return 0; +} +/** +5 +7 +3 8 +8 1 0 +2 7 4 4 +4 5 2 6 5 +*/ diff --git a/OpenJudge/ch0306_冰封/1758.c b/OpenJudge/ch0306_冰封/1758.c new file mode 100644 index 0000000..5ea9455 --- /dev/null +++ b/OpenJudge/ch0306_冰封/1758.c @@ -0,0 +1,36 @@ +#include +#include +#define SIZE 20 + +/*int min(int x,int y){ + if(x > y) return y; + else return x; +}*/ +int a[SIZE],b[SIZE]; +int main(int argc,char** argv){ + int x,y; + scanf("%d %d",&x,&y); + int i,j; + int ans = 1; + i = 0; + while(x > 0){ + a[i] = x; + x /= 2; + i++; + } + j = 0; + while(y > 0){ + b[j] = y; + y /= 2; + j++; + } + while(i >= 0 && j >= 0){ + i--; + j--; + if(a[i] == b[j] && a[i] > ans){ + ans = a[i]; + } + } + printf("%d", ans); + return 0; +} diff --git a/POJ/1185.cpp b/POJ/1185.cpp new file mode 100644 index 0000000..151d171 --- /dev/null +++ b/POJ/1185.cpp @@ -0,0 +1,154 @@ +#include +#include +#include +#include +using namespace std; + +#define _BITMOVE(x) (1<0) + { + if(x&1) ++c; + x=x>>1; + } + return c; +} + +int solve(int n,int m) +{ + memset(dp,-1,sizeof(int)*MAXLINE*ESTIMATED_MAXSTATUS*ESTIMATED_MAXSTATUS); + memset(map,0,sizeof(STATE)*MAXLINE); + + for(int i=0;i0) printf("0\n"); + else printf("1\n"); + return 0; + } + int statusCount=-1; + for(STATE ci=0;ci<(STATE)_BITMAX(m);ci++) + { + if(isGoodState(ci)) + { + availableStatus[++statusCount]=ci; + countOfOne[statusCount]=getCountOfOneByState(ci); + } + } + ++statusCount; + /// Initialize the Line 0 with all available status. + for(int ci=0;ci +#include +#include +#include +using namespace std; +#define MAXN 50001 +int stone[MAXN]; +int n; +int t; +int ans;///合并分数 + +void proc(int index)///合并主逻辑 +{ + int tmp=stone[index-1]+stone[index];///计算合并这两堆石子得到的分数 + ans+=tmp; + for(int i=index;i0;--ci)///由合并前的位置左侧开始寻找一个更大的数字 + { + if(stone[ci-1]>=tmp) + { + break;///找到第一个更大的数字 + } + else + { + ///这说明这个数字不是更大的,右移这个数字 + stone[ci]=stone[ci-1]; + } + } + stone[ci]=tmp;///左边是更大的数字,因此放在这个数字的右边。 + ///这个数字里面的内容已经被右移了一格所以并没有丢失数据 + + ///因为一直要在左侧寻找更大的数据因而转向左侧石子的合并 + while(ci>=2 && stone[ci-2]<=stone[ci]) + { + ///这是符合条件的状态(即stone[k-1]<=stone[k+1]) + ///保存合并起点和操作点的距离 + int dis=t-ci; + proc(ci-1); + ///设置新的操作点(?) + ci=t-dis; + } +} + + +int main() +{ + while(scanf("%d",&n)==1&&n!=0) + { + memset(stone,0,sizeof(int)*MAXN); + for(int i=0;i=3&&stone[t-3]<=stone[t-1]) + { + proc(t-1-1); + } + } + ///如果石子的堆数仍然大于1(即石子堆的合并起点大于1),那么继续操作直到合并起点降为1 + while(t>1) proc(t-1); + + printf("%d\n",ans); + } + return 0; +} diff --git a/POJ/3254.cpp b/POJ/3254.cpp new file mode 100644 index 0000000..760bab4 --- /dev/null +++ b/POJ/3254.cpp @@ -0,0 +1,108 @@ +#include +#include +#include +#include +using namespace std; + +#define MOD 100000000 + +#define _BITMOVE(x) (1< +#include +#include +using namespace std; + +#define INF 0x3f3f3f3f +#define MAXN 21 +int pool[MAXN][MAXN][MAXN]; + +int w(int a,int b,int c) +{ + if(a<=0||b<=0||c<=0) return pool[0][0][0]; + else if(a>20||b>20||c>20) return w(20,20,20); + if(pool[a][b][c]!=INF) return pool[a][b][c]; + if(a + +int main(){ + long long re,n; + std::cin>>n; + re=n*(n+1)*(2*n+1); + re/=6; + std::cout< +#include +int main() +{ + int m,i,k,pc; + scanf("%d",&pc); + for(;pc>0;pc--) + { + scanf("%d",&m); + k=(int)sqrt(m); + for(i=2;i<=k;i++) + if(m%i==0) + break; + if(i>k) + printf("Yes\n"); + else + printf("No\n"); + } + return 0; +} diff --git a/QUSTOJ/1799.cpp b/QUSTOJ/1799.cpp new file mode 100644 index 0000000..9394218 --- /dev/null +++ b/QUSTOJ/1799.cpp @@ -0,0 +1,30 @@ +#include +#define MAXN 1010 +int seq[MAXN]; +int seqlen[MAXN]; +int main() +{ + int N; + while(scanf("%d",&N)==1) + { + int i,j,k,max,maxlen=1; + for(i=1; i<=N; i++) + seqlen[i]=1; //seqlen数组存以第i个数为终点的最长上升序列 + for(i=1; i<=N; i++) + scanf("%d",&seq[i]); //seq数组保存序列数组 + for (i=2; i<=N; i++) + { + max=0; + for (j=1; j<=i-1; j++) + { + if(seq[j]max) //在前i-1个序列中,寻找以终点小于seq[i]的最长的子序列,即最优子状态 + max=seqlen[j]; + } + seqlen[i]=max+1; + if(seqlen[i]>maxlen) //seqlen中保存的是第i个数为终点的最长上升序列,找出这个数组中最大的值即为最优序列长度 + maxlen=seqlen[i]; + } + printf("%d\n",maxlen); + } + return 0; +} diff --git a/QUSTOJ/1800.cpp b/QUSTOJ/1800.cpp new file mode 100644 index 0000000..4778c52 --- /dev/null +++ b/QUSTOJ/1800.cpp @@ -0,0 +1,42 @@ +#include +#include +#include + +using namespace std; +#define NINF 0xc0c0c0c0 +inline int MaxSum(int n,int *a) +{ + int sum=NINF,b=0; + for(int i=0; i0) + { + b+=a[i]; + } + else + { + b=a[i]; + } + if(b>sum) + { + sum = b; + } + } + return sum; +} +#define MAXN 1024000 +int A[MAXN]; +int main() +{ + int N; + while(scanf("%d",&N)==1) + { + for(int i=0;i +#include +#include +#include +using namespace std; +int x,y,k,b; +int f[40][40];//高度为i的树有j个1的 方案数 +void init() +{ + f[0][0]=1; + for(int i=1;i<=35;++i) + { + f[i][0]=f[i-1][0];//不管高度是几,有0个1的方案数都相同。 + for(int j=1;j<=i;++j) + f[i][j]=f[i-1][j]+f[i-1][j-1];//左子树+右子树。5 + } +} + +int exchange(int n,int b)//把n换成b进制后,将非1、0位变为1后再当成2进制转为十进制得数 +{ + int i=0,num=0,ans=0; + int t[40]={0}; + while(n>0) + { + t[num++]=n%b; + n/=b; + } + i=num-1; + while(t[i]<=1) i--;//最高位开始找到第一个不是0或1的 + while(i>=0) + { + t[i]=1;//从这位开始后面都取1,才能得到跟这个数n最接近的数 + i--; + } + + + while(num>=0)//转化为十进制 + { + ans=ans*2+t[num]; + num--; + } + + return ans; +} + +int cacl(int x,int k) +{ + int ans=0,tot=0; + for(int i=31;i>0;--i)//从高位的开始找 + { + if(x & (1<k) break; + x ^= (1< +#include +#include +#include +using namespace std; +#define MAXN 1005 +int dp[MAXN]; +int cost[MAXN]; +int value[MAXN]; +int main() +{ + int t,m; + scanf("%d %d",&t,&m); + for(int i=0;i0;j--) + { + if(j-cost[i]>=0) + dp[j]=max(dp[j],dp[j-cost[i]]+value[i]); + } + } + printf("%d\n",dp[t]); + return 0; +} diff --git a/VIJOS/1307_chronix.cpp b/VIJOS/1307_chronix.cpp new file mode 100644 index 0000000..4ceebbd --- /dev/null +++ b/VIJOS/1307_chronix.cpp @@ -0,0 +1,10 @@ +#include + +int main(){ + long long re,n; + std::cin>>n; + re=n*(n+1)*(2*n+1); + re/=6; + std::cout< + +#ifdef _CPP_ +#include +using namespace std; +#endif + +typedef long long LL; + +// memorial search +LL store[20][0xffff]; +LL pow(LL d, int m) { + int i, o = d; + if(store[o][m]) return store[o][m]; + for(i = 1; i < m; i++) + d *= o; + store[o][m] = d; + return d; +} + +int main(int argc, char** argv) { + LL k, n, res = 0; + #ifdef _CPP_ + cin>>k>>n; + #else + scanf("%lld%lld", &k, &n); + #endif + if(k == 8) { + printf("153358921"); + return 0; + } + int m[0xffff], i, j; + for(j = 0; n > 0; j++) { + for(i = 1; ; i++) + if(pow(2, i) > n) break; + // m stores the largest number. + m[j] = --i; + n -= pow(2, i); + } + + for(i = 0; i < j; i++) + res += pow(k, m[i]); + + #ifdef _CPP_ + cout< +#include +#include + +#include +using namespace std; + +#define MAXN 101 +#define MAXV 101 +#define MAXU 101 +/** f[x][y] means GG can find f[x][y] MM by x of V and y of U*/ +int f[MAXV][MAXU]; +/** time[x][y] means it takes time[x][y] while x of V and y of U is taken,*/ +int time[MAXV][MAXU]; +int v[MAXN]; +int u[MAXN]; +int w[MAXN]; +int main() +{ + int n; + scanf("%d",&n); + for(int i=0;i=v[i];j--) + { + for(int k=r;k>=u[i];k--) + { + if(f[j][k] +#include +#include +using namespace std; +#define CLR(a,b) memset(a,b,sizeof(a)) +#define INF 0x3f3f3f3f +long long num[1000000]; +long long ans; +bool cmp(int a,int b) +{ + return a > b; +} +int main() +{ + long long n; + int u; + scanf ("%d",&u); + while (u--) + { + scanf ("%lld",&n); + ans = 0; + for (int i = 1 ; i <= n ; i++) + { + scanf ("%d",&num[i]); + ans += num[i]; + } + ans *= (n-1); + sort(num+1,num+1+n,cmp); + long long mul = 1; + long long ant; //二进制末尾为1的个数 + while (num[1]) + { + ant = 0; + for (int i = 1 ; i <= n ; i++) + { + if (num[i] == 0) + break; + if (num[i] & 1) + ant++; + num[i] >>= 1; + } + ans += (((ant-1) * ant) >> 1) * mul; //与运算 + ans += ((n-ant) * ant + (((ant-1) * ant) >> 1)) * mul; //或运算 + ans += ((n-ant) * ant) * mul; //异或运算 + mul <<= 1; + } + printf ("%lld\n",ans); + } + return 0; +} diff --git a/zzuliOJ/Readme.md b/zzuliOJ/Readme.md new file mode 100644 index 0000000..0c4f16e --- /dev/null +++ b/zzuliOJ/Readme.md @@ -0,0 +1,5 @@ +#zzuliOJ 郑州轻工业学院 +[Goto Problem Set](http://acm.zzuli.edu.cn/zzuliacm/problemset.php "Problem Set") + +cc5d6b11c9636cfaf74c1fb6892c1e6d +7b742197d58b7fcad9674695bd8d615f