- 博客(24)
- 资源 (1)
- 收藏
- 关注
原创 【清澄OJ】查找整数
1、注意还有找不到的情况。#includeusing namespace std;int a[1010];int main(){ int n,num; scanf("%d",&n); for(int i=1;i scanf("%d",&a[i]); scanf("%d",&num); bool flag=false; fo
2013-12-08 00:15:53 371
原创 【清澄OJ】杨辉三角形
1、递推。。。学了DP之后觉得这个简直是小儿科。。。#include#includeusing namespace std;int a[40][40];int main(){ int n; scanf("%d",&n); memset(a,0,sizeof(a)); a[1][1]=1; for(int i=2;i for(i
2013-12-08 00:04:32 359
原创 SCU training contest 4 D、啊原来题目名字可以写这么长啊啊┑( ̄Д  ̄)┍
1、完全背包问题。。。刚开始因为把50000看成10000,WA了好多次。。。2、注意,对于每个基数,它的k次方都要枚举到超过50000,而且在dp前要先判断数组是否越界。。。#include#include#includeusing namespace std;int m,n;int dp[50010];const int INF=50010;void Com
2013-12-07 23:16:03 316
原创 SCU training contest 4 A、哇哈哈哈,有种来AC掉我啊,(╬▔皿▔)凸
1、完全背包,注意这里的w应该是cost而不是weight。2、我觉得背包真是我学过的性价比最高的知识点了。。。#include#includeusing namespace std;struct coin{ int p,w;}a[510];const int INF=5000010;int dp[50010];int E,F,n;void Co
2013-12-07 21:55:45 338
原创 SCU training contest 4 C 、 哇啊,我就算死也要让你WA掉的 o(╬ ̄皿 ̄)=○
1、正如本题的名称,我WA了将近10次,但是在看了《背包九讲》前四章后一次AC了~所以说,有时候不是智商的问题,而是懂得太少。2、注意初始化!注意数组不要越界!其他没什么了。 #include#include#includeusing namespace std;struct rice{ int p,h,c;}a[110];int dp[110],n,m
2013-12-07 20:45:42 669
原创 LA 6530 Football
1、刚开始题意理解出了问题,每组数据其实就是得分:失分,由于“胜一场加三分”这个优势较之“平局得一分”实在太明显了,用贪心法即可。#include#includeusing namespace std;int a[100010];int main(){ int n,g,s,r,cnt,score; while(scanf("%d%d",&n,&g)==2)
2013-12-07 20:07:21 393
原创 SCU training contest 4 B、 你是AC不掉我的,受死吧(`▽′)ψ
1、我都懒得吐槽这么搞笑的题目名字了~0-1背包问题。。。还是要再熟练一些~#include#include#includeusing namespace std;struct obj{ int val,vol;}a[1010];int dp[1010];int main(){ int n,v,T; scanf("%d",&T);
2013-12-06 23:56:15 372
原创 【清澄OJ】Huffman树
1、Huffman树的最大费用为所有结点的权值和,总费用要靠计算求得。#include#includeusing namespace std;int a[110];bool cmp(int x,int y){ return x>y;}int main(){ int n,cost=0; scanf("%d",&n); for(int i=0;
2013-12-05 00:22:59 257
原创 【清澄OJ】数列特征2
1、想复杂了。。。其实排序不就好了么。。。#include#includeusing namespace std;int a[110];int main(){ int n,temp,sum=0; scanf("%d",&n); for(int i=0;i scanf("%d",&temp); a[i]=temp; sum+
2013-12-04 23:38:30 291
原创 【清澄OJ】数列特征
1、我敢100%肯定蓝桥杯题库的题是从清澄上面弄下来的。。。#includeusing namespace std;int main(){ int n,temp,min,max,sum=0; scanf("%d",&n); min=10001;max=-10001; for(int i=0;i scanf("%d",&temp);
2013-12-04 23:32:22 307
原创 【清澄OJ】特殊的数字3
1、枚举啊枚举。。。我刚学的时候这个题至少要花半个小时吧,现在,3分钟就搞定了。。。#includeusing namespace std;int main(){ int a[10],sum,n; scanf("%d",&n); for(int i=10000;i int temp=i; sum=0; for(int i=0;
2013-12-04 23:22:27 376
原创 【清澄OJ】特殊的数字2
1、这题已经简单到我连编译都不用编译了。。。这就是刷水题的感觉么?以后我再也不敢说自己的博客是无水的了。。。#includeusing namespace std;int main(){ for(int i=1000;i int a,b,c,d,temp=i; a=temp%10;temp/=10; b=temp%10;temp/=10;
2013-12-04 23:10:26 283
原创 【清澄OJ】特殊的数字1
1、求水仙花数。。。这么简单的题贴出来真的好么。。。#includeusing namespace std;int main(){ int n,m,a,b,c,temp; for(int i=100;i temp=i; a=temp%10; temp/=10;
2013-12-04 23:04:55 333
原创 【清澄OJ】画长方形2
1、比上题难了一点点,但是思想没变,注意s大小至少为27(留一个给\0)。#includeusing namespace std;char s[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=0;i for(int j=0;j
2013-12-04 22:49:23 269
原创 【清澄OJ】画长方形1
1、可以看出同一斜线(主对角线方向)上字母相同,所以要计算横纵坐标之差的绝对值。#includeusing namespace std;char s[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";int main(){ int n,m; n=25;m=18; for(int i=0;i for(int j=0;j int te
2013-12-04 22:45:25 400
原创 【清澄OJ】01序列2
1、这次不能即时输出了,要先判断1的个数的奇偶性才行。每一次循环前都要清空队列。#include#includeusing namespace std;queue q;int main(){ for(int i=0;i int temp=32,cnt=0; while(!q.empty()) q.pop(); while(temp){
2013-12-04 22:32:01 385
原创 NOIp2008 ISBN
1、为什么要做普及组的题目?因为容易错。。。这道题交了N遍,主要是因为X这个字符的特殊处理容易错,还有就是两个if之后加了一个else,我的本意是else和第一个if匹配,但是编译器不这么想,所以该加括号还是要加括号。#include#includeusing namespace std;int main(){ char s1[100],s2[100]; scan
2013-12-04 00:12:54 283
原创 NOIp1996 挖地雷
1、这道题在DP的分类里,所以我首先考虑用DP做,但是由于是无向图,还有环,还不连通,所以用DP很困难(或者不可能),到群里问了才知道用搜索,但是我一直担心超时。虽然如此,也没有别的办法,抱着国内题目数据很水这个想法,写了回溯法+判重,果断AC~2、注意的就是图可能不连通,所以输出点不一定是n个,还有别忘了判重。用一个数组c记录最优路径,用数组b记录当前路径,cnt记录路径长度(小于等于n)。
2013-12-03 23:30:12 738
原创 NOIp1998 多位数连接
1、昨天刚做过类似的题,不过这次的数据范围大了点,一次AC~#include#include#includeusing namespace std;int n;string num[100010];bool cmp(const string &a,const string &b){ return a+b>b+a;}int main(){ i
2013-12-02 21:26:44 347
原创 NOIp2004 合唱队形
1、两次LIS问题,注意中间结点有重复,故要减去。2、悲催的是题目要求输出“最少几人出列”,我输出的是“最长序列是多少”,只得了20分。。。所以说要很仔细啊!#include#includeusing namespace std;const int INF=1000000000;int n;int a[110],d[110],e[110],g[110],h[110];
2013-12-02 21:09:20 286
原创 NOIp1999 拦截导弹
1、第一问求最长不上升子序列,第二问求最长上升子序列。为什么呢?假设两枚导弹a、b,a低b高,则要拦截两次,三枚导弹a,b,c,依次递增的话,则怎么样都得拦截三次,所以就是最长上升子序列。2、用了O(nlogn)的算法。注意lower_bound是返回大于等于给定元素的位置,upper_bound是返回大于给定元素的位置,如果要求小于的话,需要写cmp函数。#include#inclu
2013-12-02 17:19:02 514
原创 UVa OJ 10905
1、我要结束这种——看到题就想到暴力法,然后TLE,然后坐着发呆的悲催生活了!开始努力学算法中!2、学习了cmp函数的用法。3、题目的意思无非是,将给定几个数字排序,最后达到某种要求,我们需要设计的就是交换的条件。什么时候交换呢?当然是“换了比不换好“的时候交换。4、cmp函数就相当于定义了小于号。5、刚开始忘了判断n是否为0,WA了一次,以后再也不犯这种错误了。#includ
2013-12-01 19:16:04 256
原创 SCU Contest 1 div1 J、Tree Problem
1、刚开始理解错题意了,以为是要统计一个树比它大的子节点有多少个,毫无疑问要用线段树啊~结果是题目默认了所有子节点都比它大,要算的就是一个树有多少个子节点。。。晕死。。。2、不过做这个题也不是没有帮助的,至少学会了用vector来表示邻接表。。。想我以前不会STL的时候各种悲催啊,有10000个结点就只能开10000*10000的数组,直接RE,好多题都因此没法下手,现在倒是好了。#inc
2013-12-01 18:13:55 430 3
原创 SCU Contest 1 div1 D、Candy!
1、这道题是一道DP,可是比赛的时候我完全没想到是DP,究其原因,是因为没有深刻理解DP是“多阶段决策问题”这个事实。给每一个小朋友分糖果,就是一次决策。2、本来还是按老方法,用递归的形式(记忆化搜索)来写dp,发现总是超时,因为状态太多,记忆结果没有任何意义。就算这一层每个结果是O(1)的,但是要算出这个O(1)的结果还是要在前一层算O(m)次,再多几层的话时间复杂度就是指数级的。这样,引入
2013-12-01 15:33:27 318
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人