1001 搬砖(dp)

题意:把N块砖每次分成两摞,每次消耗的体力是两摞砖的差值,直到每摞只剩下一块砖,求消耗的最少体力。
思路:一开始摸不到头脑,不明白题目的意思,后来和别人讨论,一来明白了和整除2有关,二来是清楚了用DP的思想,清楚了原理,就迎刃而解了。
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int dp[10000005];int main(){int t;cin>>t;memset(dp,0,sizeof(dp));dp[2]=0;dp[3]=1;for(int i=4;i<=10000005;i++){if(i%2==0)dp[i]=dp[i/2]+dp[i/2];elsedp[i]=dp[i/2]+dp[i/2+1]+1;}while(t--){long long n;cin>>n;cout<<dp[n]<<endl;}return 0;
} 
1002 洗衣服(水题)
题意:给定n天,和每天要洗的衣服数量,还给定三个标准a,b,c。当衣服数量小于a时继续积攒,当大于a时就立刻拿去洗,且不同数量的衣服需要支付不同的金额。求支付的金额数。
思路:是一道简单的模拟题,但是要注意的有两点,一是每次洗衣服都是把所有的衣服洗完,二是用scanf和printf,防止超时。

#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;int main(){int n,a,b,c;while(scanf("%d%d%d%d",&n,&a,&b,&c)!=EOF){int coin=0;int sum=0;for(int i=0;i<n;i++){int t;cin>>t;sum+=t;if(sum<a){continue;}else if(sum>=a&&sum<b){sum=0;coin+=2;}else if(sum>=b&&sum<c){sum=0;coin+=3;}else if(sum>=c){sum=0;coin+=4;}}printf("%d\n",coin);}return 0;
} 

1003 懒得写 暂空

1004 质方数(模拟)
题意:给定一个数m,求一个质数n,使n*n最接近m,输出n*n。
思路:先打出质数表,然后对m开方,找到大于和小于m的第一个质数进行比较,看谁的平方最接近m。需要注意的是要处理特殊情况,如果开方之后恰好为质数,直接输出其本身。如果开方之后为1,则输出4。
#include <iostream>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
int isprime[10010];
int prime[10010];void is_Prime(){int cnt=0;isprime[0]=isprime[1]=1;for(int i=2;i<=10005;i++){if(isprime[i]==0)prime[cnt++]=i;for(int j=0;j<cnt&&prime[j]*i<=10005;j++){isprime[prime[j]*i]=1;if(i%prime[j]==0)break;}}
}int main(){is_Prime();int t;scanf("%d",&t);while(t--){int n;cin>>n;int m=sqrt(n);//cout<<m<<endl;if(!isprime[m]){cout<<m*m<<endl;}else if(m==1)cout<<4<<endl;else{int a=m;int b=m;while(isprime[a]){a++;}while(isprime[b]){b--;}int sum=abs(n-a*a)<abs(n-b*b)?a*a:b*b;cout<<sum<<endl;}}return 0;
} 
1005 ACM组队安排(dp)
题意:组队情况可以为1人1组,2人1组和3人1组,求给定n个人有几种分组方式。
思路:一开始上网搜到了集合划分算法,后来听阿洁哥讲了一下是和DP有关的,最后看了一下阿洁哥的代码,实在是佩服..如果已经求出n-1个人的分组方式,要求n个人的分组方式,则这第n个人可以1人1组,则分组方式为dp[n-1],如果第n个人和前面n-1个人中一个人分成2人组,则为dp[n-2]*(n-1),同理如果和前面n-2中两个人分成3人组,则为dp[n-3]*Cn-1 2。
#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
using namespace std;
long long dp[25];int main(){int n;dp[1]=1;dp[2]=2;dp[3]=5;for(int i=4;i<=20;i++)dp[i]=dp[i-1]+dp[i-2]*(i-1)+dp[i-3]*(i-1)*(i-2)/2;while(cin>>n&&n){cout<<dp[n]<<endl;}return 0;
} 

1006 懒得写 暂空

1007 油菜花王国(并查集)
题意:给定n个精灵和其能力值和m组关系,m组关系中给定两个数a,b,代表b精灵属于a精灵家族。如果家族中的精灵的能力值恰好为斐波那契数,则家族威望值+1。求最大的家族威望值。
思路:一上来就明确需要用到并查集+求斐波那契数。但是听信了别人的话选用了矩阵快速幂方法求斐波那契..其实根本用不到,因为第45项就已经超过题目要求的最大值了,所以直接递归求解就可以。坑爹在于提交了无数次都是WA...最后用阿洁哥的算法,即把威望在并查集的时候一起合并到父节点就AC了,也是醉...还要注意的是并查集最好返回的是f[x],如果返回x会超内存。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
#define ll long long
ll fibo[50];
int f[1050];
int fa[1050];
void init(){fibo[1] = 1;fibo[2] = 1;for(int i = 3; i <= 45; i++){fibo[i] = fibo[i-2] + fibo[i-1];}
}
int check(int n){for(int i = 1; i <= 45; i++){if(n == fibo[i])return 1;if(n < fibo[i])return 0;}
}
int find(int x)
{if(x != fa[x])fa[x] = find(fa[x]);return fa[x];
}
void merge(int x,int y)
{int a = find(x),b = find(y);if(a != b){fa[b] = a;f[a] += f[b];}
}
int main(){init();int n,m;while(~scanf("%d%d",&n,&m)){int u,v,t;memset(f,0,sizeof(f));memset(fa,0,sizeof(fa));for(int i = 1; i <=n; i++){fa[i] = i;scanf("%d",&t);f[i] = check(t);}for(int i = 0; i < m; i++){scanf("%d%d",&u,&v);merge(u,v);            }int ans = 0;for(int i = 1; i <= 1000; i++){if(f[i] > ans){ans = f[i];}}printf("%d\n", ans);}
}

1008 游乐园(贪心)

题意:小明有k元,游乐场有n个项目,给定每个项目需要花费钱数,求小明的钱最多可以用来玩多少项目。前提条件是小明的朋友推荐了m个项目,这m个项目是小明必须玩的,如果连玩这m个项目的钱都不够,则输出-1。
思路:一开始想用01背包,但是钱数的最大值太大,导致开数组的话会超内存。后来发现用简单的贪心就可以,注意的就是m个项目的钱要减去,且把这m个项目的钱数置0,或者用标记数组置1。然后将其余项目的花费排序,从小到大判断能否满足。
#include <iostream>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
int cost[10005];int main(){int t;scanf("%d",&t);while(t--){int n,m,k;int cnt=0;scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++){scanf("%d",&cost[i]);}long long sum=0;//用long long不然会爆 for(int i=1;i<=m;i++){int a;scanf("%d",&a);sum+=cost[a];cost[a]=0;}if(sum<k){k-=sum;cnt+=m;sort(cost+1,cost+n+1);int i=0;while(cost[i]==0)i++;for(;i<=n;i++){if(cost[i]<k){k-=cost[i];cnt++;}else if(cost[i]==k){cnt++;break;}elsebreak;}cout<<cnt<<endl;}else if(sum==k){cout<<m<<endl;}else{cout<<"-1"<<endl;}}return 0;
} 

计算机学院大学生程序设计竞赛(2015’11)相关推荐

  1. 计算机学院大学生程序设计竞赛(2015’11)1007 油菜花王国

    1007 油菜花王国 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Probl ...

  2. 杭电计算机学院大学生程序设计竞赛(2015’11)

    1003 玩骰子 暴力枚举抛的骰子的点数,算出获胜的方案数,然后在三个里面选择最大值. #include <bits/stdc++.h> using namespace std;int a ...

  3. hdu计算机学院大学生程序设计竞赛(2015’11)1003 玩骰子

    玩骰子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  4. 中国矿业大学计算机学院张铖,中国矿大在第41届ACM国际大学生程序设计竞赛中国区决赛中荣获银奖...

    12月10-11日,第41届ACM国际大学生程序设计竞赛中国区决赛(ACM-ICPC Asia China-Final Contest)在上海大学举办.中国矿业大学计算机学院由刘厚泉教授担任领队,由杨 ...

  5. 上海大学计算机学院卞韬,我校计算机工程与科学学院学生在CCPC中国大学生程序设计竞赛中喜获金奖...

    CCPC中国大学生程序设计竞赛(China Collegiate Programming Contest)是由中国大学生程序设计竞赛组委会组织的年度性赛事,旨在通过竞赛来提高并展示中国大学生程序设计创 ...

  6. 绥化学院信息工程学院计算机大赛,绥化学院大学生程序设计竞赛成功举行

    原标题:绥化学院大学生程序设计竞赛成功举行 为加快我校计算机技术与科学专业.软件工程专业教学创新与改革,提高学生自主创新意识和工程实践能力,促进科技创新能力,我校于2020年10月21日15时在信息工 ...

  7. 北邮计算机学院acm,计算机学院学生在2018年ACM-ICPC中国大学生程序设计竞赛中喜获佳绩...

    6月9日至6月10日,2018ACM-ICPC中国大学生程序设计竞赛在宁夏石嘴山市举行,本次大赛吸引了来自全国各大高校的132支参赛队伍,北京邮电大学共派出三支队伍参赛,均喜获佳绩. 经过五个小时的激 ...

  8. 计算机信息技术奥赛实践,我校计算机科学与信息技术学院学生在黑龙江省大学生程序设计竞赛中取得优异成绩...

    原标题:我校计算机科学与信息技术学院学生在黑龙江省大学生程序设计竞赛中取得优异成绩 5月12日,由黑龙江省计算机学会主办.哈尔滨工业大学承办的第十四届黑龙江省大学生程序设计竞赛在哈尔滨工业大学举行,来 ...

  9. 浙江大学计算机学院 英语竞赛 陈星,喜报 | 浙大代表队获得CCPC中国大学生程序设计竞赛冠军...

    浙江大学Wheatfield with Crows队在2019年10月20日下午2时结束的CCPC中国大学生程序设计竞赛厦门赛站中获得冠军,来自复旦大学和清华大学的队伍分获亚军和季军. 本次比赛于20 ...

最新文章

  1. 如何使VS2008 调试网站的根目录和IIS调试的一致?
  2. 安装elasticsearch-analysis-ik中文分词器
  3. 【HDU - 3499】 Flight (单源最短路+优惠问题)
  4. 微信小程序 Image 图片实现宽度100%,高度自适应
  5. “人,落魄时,千万别装可怜”你怎么看?
  6. 解决【npm ERR! Unexpected end of JSON input while parsing near '...sh_time:141072930277'】方案...
  7. java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
  8. 【人脸识别】基于matlab GUI LBP人脸识别【含Matlab源码 1282期】
  9. 利用图灵机器人为公众号添加智能问答,知识库功能
  10. 每次打开Word,Excel,弹出Office安装配置进度向导解决办法
  11. 系统分析与设计期末复习题目
  12. 论文翻译器:pdf 英文论文一键转换成中英文对照的文档
  13. python 实现combination和permutation
  14. android添加adb命令行,Android—adb命令
  15. 甘教课标版小学生计算机课,测评:《第6课 制作简单的表格教案》小学信息技术甘教课标版五年级上册教案4696(2)...
  16. 你会用Ping检测网络吗?
  17. 关于Chandrashekhar阿扎德概述
  18. 鴻海董事長郭台銘先生的話
  19. 北大计算机录取分数线2017,北大2017年高考在全国31省市录取分数线人数对比
  20. 异常收集 ----雨之殇

热门文章

  1. 赛马娘全自动刷初始脚本配置指南
  2. 自然语言之文本预处理
  3. Ubantu18.04系统安装迅雷等常用软件
  4. 陈宝林《最优化理论与算法》超详细学习笔记 (四)————第四章 对偶理论
  5. 超酷!这些事也可以用Google做
  6. 安静且高校一点就好7
  7. 互联网 linux 知乎,使用互联网协议替代方案 Gemini 简化你的 Web 体验 | Linux 中国...
  8. 怎样将图片的背景色换成透明的?怎么让白底图片变透明?
  9. C#读写MySQL中文乱码问题
  10. php文字验证码插件,PHP 验证码插件 captcha 使用实例