
Learning
深蓝色的猫
一个努力成长为大牛的蒟蒻程序媛
展开
-
【清澄OJ】逆序对个数
1、连编译都不用了。我觉得这道题的意义就是告诉我们什么叫逆序对。#includeusing namespace std;int main(){ int n,cnt=0; int a[110]; scanf("%d",&n); for(int i=0;i scanf("%d",&a[i]); for(int i=0;i for原创 2014-01-21 14:50:23 · 334 阅读 · 0 评论 -
【蓝桥杯】矩阵翻转
1、这是CF round 190(DIV 1)的D题,需要用到数学知识和贪心法。2、感谢cgy4ever的解题报告,我是参考了它写出来的。3、本题时间复杂度是O(2^m*m*m),首先找到中线,用二进制枚举竖中线的上半部分(包括矩阵中心)的翻转情况,然后推出竖中线下半部分的情况。紧接着O(m)枚举横中线左半部分的情况,对于每一格,都有-1和1两种情况(-1代表翻转,1代表没有),顺便可以推原创 2014-03-29 17:36:20 · 1837 阅读 · 0 评论 -
【蓝桥杯】格子刷油漆
1、本题需要用到两个数组来实现递推,数组d,表示从一角出发,回到它对应的格子的方法数,数组a,表示从一角出发,遍历完所有格子(不一定回到对角)的方法数。2、得出这个结论并不困难,只要在纸上画一个2*2的格子,走一遍就知道了。3、先得出d的递推式子,再得出a的递推式子(见代码)。只要画出2*2的情况,写出这些递推式子不难。4、最终答案等于4个角+中间。中间的话,可以选上方或下方格子为起点原创 2014-03-29 20:56:26 · 986 阅读 · 0 评论 -
SCU 2014 Training Contest - warmup A、Compressed Words?
1、这个很类似于括号匹配问题,用栈来操作,活用string类的话会大大降低编程复杂度。 #include#include#include#includeusing namespace std;string a[1000010];char ch;int main(){ int cnt=0,cnum=0; while((ch=getchar())!=原创 2014-03-19 14:47:46 · 326 阅读 · 0 评论 -
SCU 2014 Training Contest - warmup G、Fractional Lotion
1、本题数据较多,枚举n和x,算出答案,打表输出即可。#include#includeusing namespace std;int a,b,c,m,n;int ans[10010]={1,2,2,3,2,5,2,4,3,5,2,8,2,5,5,5,2,8,2,8,5,5,2,11,3,5,4,8,2,14,2,6,5,5,5,13,2,5,5,11,2,14,2,8,8,原创 2014-03-19 14:52:52 · 346 阅读 · 0 评论 -
【蓝桥杯】核桃的数量
1、嘛。。。就是求三个数的lcm,可以先取任两个数求lcm,然后再与第三个数求lcm。#includeusing namespace std;int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int lcm(int a,int b){ return a*b/gcd(a,b);}int main(){原创 2014-03-19 15:02:48 · 362 阅读 · 0 评论 -
SCU 2014 Training Weekly 2 C、Room Painting
1、贪心法,看代码吧。注意油漆可以重复购买。#include#include#includeusing namespace std;long long a[100010],b[100010];int main(){ int n,m; long long ans; while(scanf("%d%d",&n,&m)==2){ ans=0;原创 2014-03-30 22:56:52 · 332 阅读 · 0 评论 -
CDOJ 794 Balloon Game
1、我们统计三个量:原来的气球颜色数、可变颜色的空格数、不可变颜色的空格数。2、首先,如果可变颜色的空格数为0,那么不管怎么放气球,都改变不了奇偶性,如果可变颜色的空格数为1,那么先手必胜,因为他可以任意改变奇偶性。如果可变颜色的空格数大于等于2,那么后手必胜,但是又一个问题,就是不可变颜色的空格数如果为奇数,是可以改变先后手的。也就是说,在可变颜色的空格数大于等于2的情况下,所有空格数如果是原创 2014-04-03 20:45:43 · 336 阅读 · 0 评论 -
【蓝桥杯】最短路
1、Codeblocks13.1#include #include #include #include #include #include using namespace std;const int maxn=20000,MAX=~0U>>1;int n,m,src;vector > g[maxn+10];int dist[maxn+10];bool原创 2014-04-04 23:29:57 · 264 阅读 · 0 评论 -
SCU 2014 Training Weekly 1 A、Egypt
1、纯粹考英文阅读理解的。。。判断是否为直角三角形。#include#includeusing namespace std;int main(){ int a[3]; while(scanf("%d%d%d",&a[0],&a[1],&a[2])==3){ if(a[0]==0) break; sort(a,a+3); if(a[0]*a[0原创 2014-03-26 00:01:04 · 293 阅读 · 0 评论 -
【清澄OJ】字符串对比
1、#include#include#include#include#includeusing namespace std;int main(){ string s,t; cin>>s>>t; if(s.length()!=t.length()){ printf("1\n"); }else if(s==t){ pr原创 2014-04-06 21:46:01 · 425 阅读 · 0 评论 -
SCU 2014 Training Weekly 1 D、Driving Range
1、先用Floyd算法判断图的任意两点是否存在路径,如果存在,则输出最大的边权。#include#include#includeusing namespace std;const int MAX=1000000000;const int MIN=-1000000000;int n,m;int main(){ while(scanf("%d%d",&n,&原创 2014-03-26 00:03:52 · 361 阅读 · 0 评论 -
【清澄OJ】字符统计
1、就是想试试#include,结果编译器无法识别。。。#include#include#includeusing namespace std;int main(){ string s; int num[30]; cin>>s; memset(num,0,sizeof(num)); for(int i=0;i num[s[i]-'a']++; fo原创 2014-04-13 20:32:34 · 353 阅读 · 0 评论 -
【清澄OJ】解线性方程组
1、实数范围内的高斯消元,除了多几个EPS外没什么特别的。#include#include#includeusing namespace std;double G[15][15],ans[15];bool l[15];const double EPS=1e-9;int Gauss(double a[][15],bool l[],double ans[],const原创 2014-02-05 23:38:12 · 414 阅读 · 0 评论 -
【清澄OJ】缩小的陆地
1、就是这么一道简单题,拖到现在才做。我是被自己吓住了。2、面积每年增长50,折算出半径,和点的距离比较,用一个循环语句即可。具体见代码。#include#includeusing namespace std;const double PI=acos(-1.0);int main(){ int T; double a,b,dist,sum,r; scan原创 2014-03-13 22:57:47 · 396 阅读 · 0 评论 -
【清澄OJ】枚举字串
#includeusing namespace std;char s[5]="ABCD",temp[5];void dfs(int num,int depth){ temp[depth]=s[num]; if(depth==3){ printf("%s\n",temp); return; } for(int i=0;i dfs(i,depth原创 2014-03-13 22:18:22 · 358 阅读 · 0 评论 -
【清澄OJ】计算价格
1、最近在学习Machine Learning,纯粹是出于兴趣。2、觉得这些有趣又好玩的程序确实在实践中应用较少,要说有什么用,那就是培养了代码的熟练度和自信吧。但我还是觉得参加ACM和其他编程比赛是很有意义的。3、或许只是因为我没学深?要知道,任何一个领域深入下去,都能发现它独特的乐趣。#includeusing namespace std;int a,b,c;int m原创 2014-03-14 22:39:19 · 308 阅读 · 0 评论 -
【清澄OJ】教室排课
1、这道题用回溯法。2、有两个地方易错,第一个就是递归出口可能会忘记return,第二个就是题目中说了输出-1的情况,做题太专注的话容易忘记。#include#includeusing namespace std;int a[8]={120,40,85,50,100,140,70,100};int b[4],c[4];bool vis[8],flag=false;v原创 2014-03-14 23:19:17 · 674 阅读 · 0 评论 -
SCU 2014 Training Weekly 1 E、Frosh Week
1、给出一个排列,需要求出使它单调递增的最小交换次数,规定只有相邻数字可以交换。2、实际上就是求逆序对,有多少对逆序对,就迟早要发生多少次交换。3、利用数组来保存有哪些数已经出现,利用树状数组来加速。4、从左到右访问原始数组,每次统计完当前的逆序对后,将“记录哪些数已经出现”的数组加一(在这里直接体现为树状数组上的add操作了)。注意每次get函数返回的是“顺序对”个数,因此需要用i-原创 2014-03-28 12:04:59 · 328 阅读 · 0 评论 -
SCU 2014 Training Weekly 3 B、mosquito
1、可千万别被题目吓住。。。很好写。 #includeusing namespace std;int M,P,L,E,R,S,N;int main(){ while(scanf("%d%d%d%d%d%d%d",&M,&P,&L,&E,&R,&S,&N)==7){ while(N--){ int temp=M; M=P/S;原创 2014-04-13 23:40:14 · 328 阅读 · 0 评论 -
SCU 2014 Training Weekly 3 E、encipher
1、很简单的密码学问题,见代码。 #include#include#includeusing namespace std;char s1[10010],s2[10010],s3[10010];int main(){ int n,len; while(scanf("%d",&n)==1){ memset(s1,'\0',sizeof(s1));原创 2014-04-13 23:42:32 · 315 阅读 · 0 评论 -
SCU 2014 Training Contest - warmup E、False Sense of Security
1、一个模拟题,背景是莫尔斯电码,仔细一点就行了。#include#include#include#include#includeusing namespace std;map a;map b;map c;char s[1010],s1[4040];int d[1010];int main(){ string A(".-"); a['A原创 2014-03-19 14:50:21 · 332 阅读 · 0 评论 -
【清澄OJ】碱基比例
1、要注意int相除#include#include#includeusing namespace std;int main(){ string s; cin>>s; int cnt=0; for(int i=0;i if(s[i]=='C'||s[i]=='G') cnt++; double temp=(double)cnt/s原创 2014-04-06 21:58:17 · 455 阅读 · 0 评论 -
【清澄OJ】求子串
1、STL,让编程如此简单~#include#include#include#includeusing namespace std;vector v;int main(){ string s; int n; cin>>s>>n; for(int i=0;i string t=s.substr(i,n); v.push_ba原创 2014-04-06 21:11:00 · 331 阅读 · 0 评论 -
SCU 2014 Training Weekly 3 A、grasshop
1、明显用bfs,第一次裸敲bfs,还是有诸多问题。。。 #include#include#include#includeusing namespace std;struct node{ int x,y,dist; node(int _x,int _y,int _dist):x(_x),y(_y),dist(_dist){}};queue q;原创 2014-04-13 23:38:26 · 317 阅读 · 0 评论 -
【清澄OJ】FJ的字符串
1、考察递归。。。简单到不用编译。。。#includeusing namespace std;void generate(int n){ if(n==1) {printf("A");return;} generate(n-1); printf("%c",'A'+n-1); generate(n-1);}int main(){ int n; scan原创 2014-01-29 20:06:30 · 493 阅读 · 0 评论 -
HDOJ 2010
1、这个分类就放学校集训队的作业吧,本题是求水仙花数。。。2、最近抽风开始用vim+gcc+gdb的组合来写程序,CodeBlocks用惯了,感觉各种不便。。。但是不这样怎么能显示我的水平高呢嘿嘿。。。#includeusing namespace std;int main(){ int n,m,a,b,c,temp; bool flag; while(sc原创 2013-11-15 14:29:24 · 396 阅读 · 0 评论 -
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 · 387 阅读 · 0 评论 -
SCU training contest 3 A、数字三角
1、本题的难度在于记录路径,由于规划是单向的,因此只要记录列号即可。 #include#include#includeusing namespace std;int a[105][105],d[105][105],ans[105][105];int n;int dp(int i,int j){ int &answer=d[i][j]; if(answ原创 2013-11-30 00:55:37 · 437 阅读 · 0 评论 -
SCU Contest 1 div1 E、Sort the list
1、用sort函数+运算符重载即可。#include#include#include#includeusing namespace std;struct student{ string name; string subject[2000]; int ss[2000]; int score; int num; bool operator原创 2013-11-30 21:29:02 · 377 阅读 · 0 评论 -
SCU Contest 1 div1 L、Sequence
1、还是模拟,仔细点就好啦~ #include#includeusing namespace std;int a[105],pos[105];int main(){ int T,n,m,op,x,y,kase=0; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); for(原创 2013-11-30 21:35:19 · 338 阅读 · 0 评论 -
SCU Contest 1 div1 B、Bugs
1、这道题错的原因是我直接跳过了一句题目中关键的,但是生词很多的句子= =2、英语阅读的时候,跳过复杂的句子,可以迅速抓住核心,避免纠缠细节,但是在题目中,会漏掉关键信息。(而且还是大写的NOT!)#includeusing namespace std;int a[15],f[15];int main(){ int T,n,kase=0; double rat原创 2013-11-30 21:21:06 · 313 阅读 · 0 评论 -
SCU Contest 1 div1 H、Password
1、我感觉可能是测试数据的问题,凭什么把for(int i=1;i#includeusing namespace std;int a[10],b[10];char c[10];int main(){ //freopen("a.txt","r",stdin); int T,kase=0; char ch; scanf("%d",&T);原创 2013-11-30 21:32:50 · 342 阅读 · 0 评论 -
【清澄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 · 389 阅读 · 0 评论 -
【清澄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 · 391 阅读 · 0 评论 -
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 · 366 阅读 · 0 评论 -
SCU training contest 3 B、Max Sum
1、最大连续子段和。。。注意这个子段和可以为负。。。2、用一个数组b来记录起始点,条件语句中等号的位置决定到底是取最早的点还是最晚的点。#include#include#include#includeusing namespace std;int a[100010],b[100010],d[100010];int dp(int n){ int &ans=原创 2013-11-30 00:07:45 · 486 阅读 · 0 评论 -
SCU training contest 3 C、Common Subsequence
1、LCS问题。。。注意刚一进入dp就要判断i,j是否非正,temp要清零。 #include#include#includeusing namespace std;char s1[2000],s2[2000];int d[2000][2000];int dp(int i,int j){ if(i int &ans=d[i-1][j-1]; in原创 2013-11-29 22:01:27 · 310 阅读 · 0 评论 -
HDOJ 2089
1、这题用gdb调试疯了,可是交到OJ上总是爆栈。。。交了快10次后,我才惊恐地发现,flag数组放在了main里面。。。要不要这么坑爹。。。#include#includeusing namespace std;int flag[1000000];int main(){ int a,b; bool judge; for(int i=0;i原创 2013-11-16 01:24:08 · 388 阅读 · 0 评论 -
HDOJ 2090
1、vim也比较熟练了。。。#includeusing namespace std;int main(){ char s[100]; double a,b,sum=0; while(scanf("%s%lf%lf",s,&a,&b)==3){ sum+=a*b; } printf("%.1lf\n",sum); ret原创 2013-11-15 21:48:10 · 574 阅读 · 0 评论