
刷题ING
文章平均质量分 61
山西-王志强
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
3979 分数加减法
11888556NUCwangzhiqiang3979Accepted172K16MSC++698B2013-07-31 10:16:43水题,模拟。题意:如题。解题思路:分子分母都只有一位,简单模拟即可,注意结果是整数的情况。原创 2013-07-31 10:19:40 · 571 阅读 · 0 评论 -
1019 Number Sequence 数论
#include #include #define N 31269unsigned a[N+1]; //a[i] 表示前i组数字序列的长度void init(){ a[1]=1; for (int i=2; i<N; i++) a[i]=a[i-1]+(int)log10((double)i)+1; //log10(i)+1 表示第i组数字列的长度 比 第原创 2013-07-25 20:06:28 · 688 阅读 · 0 评论 -
1020 Anniversary Cake DFS
本题的难点不在于怎样去DFS,而是每放入一个蛋糕后,怎样去标记盒子已经放有蛋糕的位置?#include #include int boxsize,n,sizenum[11],col[41]; //col[i]记录第i列被填充了的格子数bool DFS(int fillnum){ if (fillnum==n) return true; int min=原创 2013-07-25 20:08:45 · 658 阅读 · 0 评论 -
1035 Spell checker 暴力模拟
基本思路就是逐个比较 待查单词 与 字典单词 的长度,当且仅当两者长度之差的绝对值#include #include bool change(char* word, char* dict) //检查字符串word能否通过变换得到dict{ int dif=0; while (*word && *dict) if(*(word++)!=*(dict++))原创 2013-07-25 20:10:35 · 837 阅读 · 0 评论 -
2586 Y2K Accounting Bug 贪心 枚举
根据经验,贪心选择往往都在极端处(临界点)选择。(其实这题不用贪心,单纯枚举也可以AC,) 不难证明,每连续5个月中,在保证这5个月经营之和为亏损的情况下,亏损的月数肯定应尽量往后选,盈利的月数应尽量往前选。先处理处理完1~5月后,剩下的月份可以根据“连续5个月经营之和为亏损”这个条件进行确定亏损还是盈利。本题的贪心选择每次仅仅选取其中一种情况(1~5月),因为之后月份无需再选原创 2013-07-25 20:22:28 · 739 阅读 · 0 评论 -
3468 A Simple Problem with Integers 线段树
#include struct node{ int L,R; __int64 sum,inc;};node tree[500000];void build(int k,int left, int right){ tree[k].L=left; tree[k].R=right; tree[k].sum=0; tree[k].inc=0; if (left==ri原创 2013-07-26 08:34:27 · 802 阅读 · 0 评论 -
3264 Balanced Lineup 线段树
#include #include #include using namespace std;#define MY_MIN 99999999#define MY_MAX -99999999struct CNode{ int L,R; int nMin,nMax; CNode * pLeft, * pRight;};int nMax, nMin;CNode Tree[1原创 2013-07-26 08:34:40 · 499 阅读 · 0 评论 -
1018 Communication System 枚举+剪枝
#include #include #include using namespace std;struct node{ int b,p,id; //带宽,价格,设备号码};node a[10001];bool cmp(node x, node y) { return x.b<y.b || (x.b==y.b && x.p<y.p) || (x.b==y.b && x.p==原创 2013-07-29 15:56:04 · 666 阅读 · 0 评论 -
1050 To the Max DP
求最大子矩阵和。#include int main(){ int sum[101][101],n,ans=0,tmp; scanf("%d",&n); for (int i=1; i<=n; i++) { sum[i][0]=0; for (int j=1; j<=n; j++) { scan原创 2013-07-29 16:32:04 · 616 阅读 · 0 评论 -
1083 Moving Tables DP
#include #include int main(){ //freopen("input.txt","r",stdin); int T; scanf("%d",&T); while (T--) { int f[402],n,x,y; memset(f,0,sizeof(f)); scanf("%d",原创 2013-07-29 17:06:42 · 628 阅读 · 0 评论 -
1017 Packets 贪心
#include int main(){ while(true) { int a[7],t=0; for (int i=1; i<=6; i++) { scanf("%d",&a[i]); t+=a[i]; } if (t==0) break;原创 2013-07-25 20:05:26 · 590 阅读 · 0 评论 -
1016 Numbers That Count 模拟
#include #include using namespace std;/*压缩数字串n,存放到t*/void R(char* n,char* t){ int i,j; int time[10]={0}; //记录n中各个数字出现的次数 for (int i=0;n[i];i++) time[ n[i]-'0' ]+原创 2013-07-25 20:04:43 · 646 阅读 · 0 评论 -
1001 Exponentiation
#include #include #define MAX 200void mul(int ans[], int a[], int len2){ int b[MAX],len1; memset (b,0,sizeof(b)); for (len1=MAX-1; len1>=0; len1--) if (ans[len1]!=0) break;原创 2013-07-25 17:19:26 · 604 阅读 · 0 评论 -
1006 Biorhythms
水题。#include int main(){ int t=1,p,e,i,d; while(scanf("%d%d%d%d",&p,&e,&i,&d) && p!=-1 && e!=-1 && i!=-1 && d!=-1) { p%=23; e%=28; i%=33; for (int j=0; ; j++)原创 2013-07-25 19:57:14 · 567 阅读 · 0 评论 -
1014 Dividing 多重背包
#include #include using namespace std;int n[7]; //价值为i的物品的个数int v; //背包容量int SumValue; //物品总价值bool flag; //标记是否能平分SumValueint dp[100000]; //状态数组int max(int a,int b){ return a>b?a原创 2013-07-25 20:04:06 · 543 阅读 · 0 评论 -
1061 青蛙的约会 数论 扩展GCD
#include __int64 extGCD(__int64 a, __int64 b, __int64 &x, __int64 &y){ if (!b) {x=1; y=0; return a; } int d=extGCD(b,a%b,x,y); int t=x; x=y; y=t-a/b*y; return d;}int main(){原创 2013-07-25 20:11:22 · 758 阅读 · 0 评论 -
1328 Radar Installation 贪心
把每个点的放置雷达的区间求出,然后按照区间排序。排好序后,从左至右看,当发现下一个区间的起始点大于前面所有区间的最小结束点的时候,答案加一。忽视前面走过的所有点后,对后面进行相同的操作(从左至右看,当发现下一个区间的起始点大于左边未被忽视的所有区间的最小结束点的时候,答案加一)。直到结束.#include #include #include using namespace原创 2013-07-25 20:13:31 · 617 阅读 · 0 评论 -
2109 Power of Cryptography 数学
一般思路:二分+高精度算法 但是本题还有一个更加巧妙的办法去处理:首先需要明确:double类型虽然能表示10^(-307)~10^308,(远大于题意的1前16位,因此必须慎用!那么为了避免double对输入的数在运算过程中进行精确,那么我们必须让double的运算第一步就得到一个int(即小数点尾数全为0),这个不难理解。然后根据题意,是求指数k,一般人自然想到利用对数l原创 2013-07-25 20:15:36 · 598 阅读 · 0 评论 -
1002 487-3279
字符串处理#include const int ch[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9,0};int a[10000001],max=0;void work(char s[]){ int k=0; for (int i=0; s[i]!='\0'; i++) if (s[i]>='原创 2013-07-25 19:56:08 · 727 阅读 · 0 评论 -
1011 Sticks
经典搜索#include #include #include using namespace std;#define N 100int used[N],len[N],sum,n,Min;bool find(int p, int rest, int trest){ if (trest==Min) return true; for (int i=p; i!=n; i+原创 2013-07-25 19:58:26 · 673 阅读 · 0 评论 -
1012 约瑟夫变形
#include int main(){ int k,joseph[15]={0}; while (scanf("%d",&k) && k) { if (joseph[k]!=0) { printf("%d\n",joseph[k]); continue; }原创 2013-07-25 20:02:01 · 706 阅读 · 0 评论 -
HDU1166 敌兵布阵 非递归线段树 & 递归线段树 & 树状数组
参考文献:http://wenku.baidu.com/link?url=e5vw-nZ5JdwcoaQbkc4ygNSRKZg0GxPgFKttADPFf2J5zaTpx0g8a2EMu7Y94nhm75pxBSiDES8lCN4e-Xb1Xu3W5TeT5OBv5rKPJmZnimC原创 2014-07-05 19:33:36 · 659 阅读 · 0 评论