2019.4.3个人赛
A.POJ3253 思维题(网上说哈夫曼树?)
我真的觉得这题好难啊,很想不懂
题目:一块木头,要切成n块,分别长度为…,每锯一次的费用是木块的长度,
网上的思路是这样的:
要每次锯的费用最小,那就是每次锯最大的,这样就会得到最小的木块,反过来想,就是每次都加最小的两个木块,那就是用priority queue做。
我的wa思路是:排序后,每次就加上(当前和减去最小和),但是wa了,我其实不能证明我的思路是正确的,但是我也直观的找不到错,而当比赛中遇到这种情况,我就该换种思路,方向思路,每次锯最大的,得到的就是最小的,而最小的2个和就是每次锯的费用。
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
priority_queue<int,vector<int>,greater<int> >all;
int main(void)
{int n,a,b;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a);all.push(a);}long long int sum=0;while(all.size()!=1){a=all.top();all.pop();b=all.top();all.pop();a=a+b;all.push(a);sum+=a;}printf("%lld",sum);return 0;
}
C:POJ2488 一笔画题的变形
注意点:
1.A等大写表示的是列,1表示的是行
2.输出的要字符序最小的。
反思:为什么这题写不快,dfs的规范不够,没检查细节,题目没有读懂,没确定行和列,而改来改去
#include<cstdio>
#include<algorithm>
#include<string>
#include<iostream>
#include<cstring>
using namespace std;
int r,c;
int sty[]= {-2,-2,-1,-1, 1,1,2, 2};
int stx[]= {-1, 1,-2, 2,-2,2,-1,1};
int vi[100][100];
char now[900];
int suc;
void dfs(int a,int b,int th)
{if(th==(r*c)){suc=1;return;}for(int i=0; i<8; i++){int nx=a+stx[i];int ny=b+sty[i];if(vi[nx][ny]||nx<1||ny<1||nx>r||ny>c)continue;vi[nx][ny]=1;now[th*2+1]=nx+'0';now[th*2]=ny+'A'-1;dfs(nx,ny,th+1);if(suc)return;vi[nx][ny]=0;}}
int main(void)
{int cas;scanf("%d",&cas);for(int i=1; i<=cas; i++){printf("Scenario #%d:\n",i);scanf("%d %d",&r,&c);suc=0;for(int a=1; a<=r; a++){for(int b=1; b<=c; b++){memset(vi,0,sizeof(vi));vi[a][b]=1;now[0]=a+'A'-1;now[1]=b+'0';dfs(a,b,1);if(suc==1)break;}if(suc==1)break;}if(suc){for(int i=0; i<r*c*2; i++)printf("%c",now[i]);printf("\n\n");}elseprintf("impossible\n\n");}return 0;
}
D.HDU 1520 树形dp
这道题是第一道学习树形dp的模版题,所以条件非常的特殊。
由hierarchical知这个公司的人员体系是成系统的,树形的,也就是说必定有一个人是千人之上,他之上再没有别人,那就是一个根节点。而用dfs的思想做这题就是对每一个结点假设它有还是没有,再影响到它的儿子节点,这样就很像背包的思想,选择它否会影响到下一个,而背包的dp是一个平行的,只要用循环,而这里是一个体系,所以得用递归来代替内循环。
找到父节点后,递归一直找到它的儿子的儿子的dp最大值
#include<cstdio>
#include<vector>
using namespace std;
const int maxn=6200;
int fa[maxn],happ[maxn];
int dp[maxn][2];
vector<int>all[maxn];
void dfs(int cur)
{for(int i=0;i<all[cur].size();i++){int son=all[cur][i];dfs(son);dp[cur][0]+=max(dp[son][0],dp[son][1]);dp[cur][1]+=dp[son][0];// printf("%d %d %d\n",cur,dp[cur][0],dp[cur][1]);}
}
int main(void)
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&happ[i]);fa[i]=-1;dp[i][1]=happ[i];dp[i][0]=0;}int a,b;while(scanf("%d %d",&a,&b)&&a&&b){fa[a]=b;all[b].push_back(a);}int t=1;while(fa[t]!=-1)t=fa[t];dfs(t);printf("%d",t,max(dp[t][0],dp[t][1]));return 0;}
E.POJ 3641 快速幂
这题把题目读懂是真的很关键啊,5555~~,
1.它说伪素数,所以要先判断它是不是素数
2.是a的p次方对p取模会不会等a对p的取模。
这题我打快速幂,打错的原因是k*=k%mod;与k=k*k%mod 含义是不一样的。
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long int ll;
bool isprime(ll a)
{for(int i=2;i*i<=a;i++){if(a%i==0)return 0;}return 1;
}
ll mod_pow(ll a,ll b,ll c)
{if(b==0)return 1 ;ll k=mod_pow(a,b/2,c);k=k*k%c;if(b%2)k=k*a%c;return k;
}
int main(void)
{ll p,a;while(scanf("%lld %lld",&p,&a)&&p&&a){if(isprime(p)){printf("no\n");continue;}ll get=mod_pow(a,p,p);// printf("get=%lld \n",get);if(get==a%p)printf("yes\n");else printf("no\n");}
}
F.----HDU2047 递推公式
看到这个题的时候,知道很简单,就想用dfs,结果tle了,以后每次想到用dfs的,再想想能不能用动态规划,就是推出一个公式
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
long long int all[90][5];
int main(void)
{memset(all,0,sizeof(all));all[1][1]=1;
all[1][2]=1;
all[1][3]=1;for(int i=2;i<=41;i++){ long long int sum=all[i-1][1]+all[i-1][2]+all[i-1][3];all[i][1]=sum-all[i-1][1];all[i][2]=sum;all[i][3]=sum;}int n;while(scanf("%d",&n)!=EOF){printf("%lld\n",all[n][1]+all[n][2]+all[n][3]);}return 0;
}
2019.4.3个人赛相关推荐
- 2019美亚杯个人赛
2019美亚杯个人赛 © 版权声明 中国电子数据取证大赛(含之前用过的大赛名称)相关检材和试题等内容,其版权归属于本赛事组委会,使用者在使用或变相使用时,必须声明版权 拥有者是中国电子数据取证大赛组委 ...
- 2019美亚杯个人赛刷题
文章目录 写在前面 解题 1. 何源的个人计算机硬盘已成功被取证并制作成镜像(ForensicImage),下列哪个是镜像的SHA1哈希值? 2.在何源的个人计算机中,硬盘中包含哪个操作系统(Oper ...
- 2019.3.27个人赛
A.HDU2160----递推思考 c语言课的入门题目,想一想那个兔子问题?第一天兔子有1只,第2天有1只,第3天有2只,第4天有3只是怎么推导的,本质是第n天的兔子数目是前一天兔子的总数加上新增的兔 ...
- 如何轻松代理您的Android设备
If you're a mobile engineer, during both development and testing you probably use some of the most c ...
- 中国ai创业公司 排行榜_加入AI创业公司之前,您需要问6个问题
中国ai创业公司 排行榜 意见(Opinion) Clark Stanley, also known as the 'Rattlesnake King', was an (in)famous entr ...
- 【蓝桥杯】2019年第十届蓝桥杯(个人赛) 大赛介绍、注意事项及赛后总结
蓝桥杯介绍: 大赛分为个人赛.团队赛和艺术设计赛三个部分.本博客仅针对个人赛做一些简单介绍,应该注意的事项,以及我个人赛后的总结. 竞赛项目及面向的对象 1.JAVA软件开发 对象:具有正式全日制学籍 ...
- 2019美亚个人赛复盘
案件背景: 1. 何源是一名 25 岁的客服人员,在一间电讯公司工作.某日,何源在用 iPhone 手机在政府建筑物 中偷拍车牌期间被警员截停,盘问期间警员检查手机相册发现多张车牌图片,何源情绪紧张, ...
- 2019年美亚杯资格赛 个人赛 writeup
2019年美亚杯资格赛 文章目录 2019年美亚杯资格赛 win2 内存镜像 win2 内存镜像
- 2019.8.25HEU大一个人赛总结
0.0 今天真是自闭了 1.一开始乱编一个思维题的解法...wa了两发终于大彻大悟,又wa了一发才过, 虽然没拿到一血,但是拿到了罚时,挺好的 2.后来想去跟榜做个时区的弱智题 emm没错 我是弱智, ...
最新文章
- 消费者驱动的微服务契约测试套件Spring Cloud Contract
- linux入门 适合初学者_【推荐】适合初学者临摹的国画|国画基础入门教学视频教程!...
- 【java】简述CGLIB常用API
- [转]SQL事务回滚的问题及其解决的方法
- 2022年武汉市小微服务业企业进入规模服务业企业奖励申报条件以及申报流程汇总
- 银行卡号自动识别,包括银行名称、英文缩写代号、LOGO
- 最新大数据资料合集.pdf
- imagemagick gif制作
- 详解节省计划,一文了解最云原生的成本优化方式
- HashSet及LinkedHashSet源码分析(基于JDK1.6)
- onedrive 配置 教你如何获取5T windows资源存储空间和提高数据同步速度
- DIY 3D全景摄像机
- Android实用小代码
- Kubernetes ~ k8s 从入门到入坑。
- 语音相关的数据集-5个数据集
- FastAPI框架,数据库迁移生成及增删改查
- 赫赫有名的杰克·韦尔奇作为通用电气的CEO而享誉全球,他的管理特点就浓缩在这些言语之中,大家可以带着这些观点去读读他的自传和《赢》,吐血推荐哈。
- 1.21(0/1 Knapsack)
- 中国芯片封测行业规划研究及发展前景投资可行性分析报告2022-2028年版
- 如何手机网络连接电脑