1.设置默认工作路径 一般来说MATLAB的默认工作路径是安装目录下的bin目录,但是,把这个作为自己的工作目录很不方便,以为里面已经有很多安装文件了,容易混淆: 每次打开再更改路径又太麻烦,所以最好的办
题目链接 忽略运算符逻辑导致奇怪的错误(代码中指明位置了) 输出没加0.5,WA。 还有,注意特殊情况k=0,所以scanf("%d%d", &n, &k)&n就够了, scanf("%d%d", &n, &am
地址 别人的代码,自己边界总是控制不好,还不知道哪里错了!思维!这种问题代码越简洁反而越不容易错吧。。 1 #include<stdio.h> 2 #include<algorithm> 3 typedef long long ll; 4 using namespace std; 5 ll n,m,L,a[100010]; 6 bool bi(ll x){ 7 ll i,cnt=0,now=0; 8 for(i=1;i<=n;i++){ 9 if(a[i]-a[now]<=x)cnt++; 10 else now=i; 11 } 12 if(L-a[now]<x)return 0; 13 return cnt<=m; 14 } 15 int main(){ 16 ll i,l,r,mi; 17 while(~scanf("%lld%lld%lld",&L,&n,&m)){ 18 l=0;r=L;
查看原题 边界,就是边界和思维,怎么有效的判断中间值是大了还是小了,以及准确的找到边界!一个<写成<=就前功尽弃,还特别难找到错误! 1 #include <cstdio> 2 #include <algorithm> 3 const int maxN = 100005; 4 int N, M; 5 int A[maxN]; 6 using namespace std; 7 int main(void) { 8 while
第一反应是BFS,比较直观,但是输出路径写的不是很熟练,此外,习惯不好,“==”写成了“=”,所以常量一定放前面! 1 #include <cstdio> 2 #include <queue> 3 #include <cstring> 4 using namespace std; 5 int N, K; 6 typedef struct node 7 { 8 int in, out; 9 int pos; 10 }Link; 11 const int maxn = 50005; 12 bool vis[maxn]; 13 Link
Aggressive cows 二分,关键是转化为二分! 1 #include <cstdio> 2 #include <algorithm> 3 const int maxn = 1000000005; 4 const int maxN = 100005; 5 6 int N, C; 7 int a[maxN]; 8 using namespace std; 9 bool judge(int x) { 10 int s = 0; 11 for (int i = 1; i < C;i++) { 12 int ctr = s+1; 13 while (ctr < N && (a[ctr]-a[s] < x)) { 14 ctr++; 15 } 16 if (ctr==N) { 17 return false; 18 } 19 s = ctr; 20 } 21 return
不同的枚举方法,效率完全不同。值得记录一下! 1 #include <cstdio> 2 #include <cstring> 3 int t, a, b, c, n, cas = 0, count = 0; 4 int cnt[30000000]; 5 void pre() { 6 count = 0; 7 memset(cnt, 0, sizeof(cnt)); 8 9 for (a = 1; a <= 30000000; a++) { 10 for (c = 1; c < a; c++) { 11 if (a%c == 0 && ((a-c)^a)==c) { 12 count++; 13 } 14 } 15 cnt[a-1] = count; 16 } 17 18 }
这种题目最重要的是思路了清晰 1 #include <cstdio> 2 #include <cstring> 3 const int maxn = 100005;//sqrt(n)+1 is enough 4 5 int fac[100][2]; 6 int fac_c[100]; 7 int a[maxn]; 8 void factor(int m) { 9 int& num = fac[0][0]; 10 num = 0; 11 for (int i = 2; i*i <= m; i++) { 12 if(m%i == 0) { 13 fac[++num][0] = i; 14 fac[num][1] = 0; 15 do { 16 fac[num][1]++; 17 m/= i; 18 } while(m%i == 0); 19 } 20 } 21 if (m > 1) { 22
1.除法(Division, UVa 725) #include <cstdio> #include <cstring> bool isOk(int a, int b){ char buff[20]; int visited[15]; memset(visited, 0, sizeof(visited)); sprintf(buff, "%05d%05d", a, b); for (int i =0; i < 10; i++){ int temp = buff[i] - '0'; if (0 == visited[temp]){ visited[temp]++; } else { return false; } } return true; } int main(void){ int N, cnt = 0; bool flag = false; for (;scanf("%d", &N) && N;){ if (cnt > 0){ printf("\n"); } cnt++; flag = false; for (int i = 1234; i<
一、简述 静态查找表又分为顺序表、有序表、静态树表和索引表。以下只是算法的简单实现及测试,不涉及性能分析。 二、头文件 1 /** 2 author:zhaoyu 3 date:2016-7-12 4 */ 5 #include "6_3_part1_for_chapter9.h" 6 typedef struct { 7 int key; 8 }SElemType; 9 //静态查找表的顺序