2017/11/3模拟赛
块(block)
【问题描述】
拼图达人小 C 手里有 n 个 1*1 的正方形方块, 他希望把这些方
块拼在一起, 使得拼出的图形周长最小, 要求方块不能重叠。 擅长拼
图的小 C 一下就求出了这个周长, 顺便他想考考你会不会求。
【输入格式】
多组数据, 第一行一个正整数 T, 表示数据组数。
接下来 T 行, 每行一个正整数 n, 表示方块数。
【输出格式】
输出 T 行, 每行一个正整数, 表示答案。
【样例输入】
3 4 1
1
22
【样例输出】
8
14
20
【数据范围】
对于 20%的数据, n<=20;
对于 40%的数据, n<=1000;
对于 60%的数据, n<=10^6;
对于 80%的数据, n<=10^10;
对于 100%的数据, n<=10^12, T<=10。
题解:二分答案即可。
代码如下:
1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 long long n,l,r,mid,ans; 5 bool check(long long x){ 6 x>>=1; 7 if(x&1){ 8 long long t1=x>>1,t2=(x>>1)+1; 9 return t1*t2>=n; 10 } 11 return (x>>1)*(x>>1)>=n; 12 } 13 int main() 14 { 15 freopen("block.in","r",stdin); 16 freopen("block.out","w",stdout); 17 int T; scanf("%d",&T); 18 while(T--){ 19 scanf("%lld",&n); 20 l=1; r=1e9; 21 while(l<=r){ 22 mid=l+r>>1; 23 if(check(mid)) r=mid-1,ans=mid; 24 else l=mid+1; 25 } 26 printf("%lld\n",ans); 27 }return 0; 28 }
树(tree)
【问题描述】
今天 F 大爷看到了一张 n 个点的无向完全图, 每条边有边权。 F
大爷一开心就花 0.03 飞秒(即3*10-17 秒) 求了一下这张图的最小生
成树以及最小生成树的个数。 F 大爷惊喜地发现这张图只有一个最小
生成树, 他现在更开心了, 于是他把这个最小生成树告诉了你, 要你
求出原来的完全图中边权和最小是多少。
【输入格式】
多组数据, 第一行一个正整数 T, 表示数据组数。
每组数据的第一行一个正整数 n, 表示点数。
接下来 n-1 行, 每行三个正整数 xi,yi,wi, 表示最小生成树上 xi
和 yi 之间有一条权值为 wi 的边。
【输出格式】
输出 T 行, 每行一个整数, 表示答案。
【样例输入】
2 3 1
2 4
2 3 7
4 1
2 1
1 3 1
1 4 2
【样例输出】
19
12
【数据范围】
对于 20%的数据, T,n,wi<=5;
对于另外 30%的数据, n<=1000, 给的树是一条链;
对于 100%的数据, T<=10, n<=20000, wi<=10000。
题解:首先把边从小到大排序,然后按顺序合并,假设2个完全图合并,那么答案就+=2个完全图点数之积*(边权+1)-1。
代码如下:
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #define MN 20005 5 using namespace std; 6 long long ans; 7 int n,fa[MN],siz[MN]; 8 struct node{int u,v,w;}e[MN]; 9 bool cmp(node a,node b){return a.w<b.w;} 10 int ff(int u){return fa[u]==u?u:fa[u]=ff(fa[u]);} 11 void unite(int u,int v,int w){ 12 u=ff(u); v=ff(v); 13 ans+=1LL*siz[u]*siz[v]*(w+1)-1; 14 fa[u]=v; siz[v]+=siz[u]; 15 } 16 int main() 17 { 18 freopen("tree.in","r",stdin); 19 freopen("tree.out","w",stdout); 20 int T; scanf("%d",&T); 21 while(T--){ 22 scanf("%d",&n); ans=0; 23 for(int i=1;i<=n;i++) fa[i]=i,siz[i]=1; 24 for(int i=1;i<n;i++) 25 scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); 26 sort(e+1,e+n,cmp); 27 for(int i=1;i<n;i++) 28 unite(e[i].u,e[i].v,e[i].w); 29 printf("%lld\n",ans); 30 } 31 }
球(ball)
【问题描述】
有 n 个不同颜色的球排成一排, 其中 n 为偶数。 小 D 打算把这
些球按照某种玄妙的顺序放入一个球筒中。每次他会选择一个不是当
前第一个的球, 先把这个球放入球筒, 接着把这个球的前一个也放入
球筒, 重复这个操作直到所有球都进入球筒。 小 D 希望最后球筒中
从顶到底的颜色序列字典序最小, 但他不会做, 所以请你帮帮他。
【输入格式】
第一行一个正整数 n, 表示球的个数。
第二行 n 个正整数 ai, 分别表示每个球的颜色。
【输出格式】
输出一行 n 个正整数, 表示球筒字典序最小的颜色序列。
【样例输入 1】
4 3
2 4 1
【样例输出 1】
3 1 2 4
【样例输入 2】
8 4
6 3 2 8 5 7 1
【样例输出 2】
3 1 2 7 4 6 8 5
【数据范围】
对于 30%的数据, n<=10;
对于 60%的数据, n<=1000;
对于 100%的数据, n<=200000, 1<=ai<=n, ai 互不相同。
代码如下:60分
1 #include<cstdio> 2 #include<iostream> 3 #define MN 200005 4 int a[MN],n; 5 bool b[MN]; 6 int main() 7 { 8 freopen("ball.in","r",stdin); 9 freopen("ball.out","w",stdout); 10 scanf("%d",&n); 11 for(int i=1;i<=n;i++) scanf("%d",&a[i]); 12 a[0]=0x7fffffff; 13 for(int i=1;i<=n/2;i++){ 14 int t1=0,t2=0; 15 bool f=false; 16 for(int j=1;j<=n;j++) 17 if(!b[j]){ 18 f=f?0:1; 19 if(f&&a[j]<a[t1]) t1=j; 20 } 21 b[t1]=true; f=false; 22 for(int j=t1+1;j<=n;j++) 23 if(!b[j]){ 24 f=f?0:1; 25 if(f&&a[j]<a[t2]) t2=j; 26 } 27 else break; 28 b[t2]=true; 29 printf("%d %d ",a[t1],a[t2]); 30 } 31 return 0; 32 }
转载于:https://www.cnblogs.com/Beginner-/p/7792687.html
2017/11/3模拟赛相关推荐
- 2017.6.11 校内模拟赛
题面及数据及std(有本人的也有原来的) :2017.6.11 校内模拟赛 T1 自己在纸上模拟一下后就会发现 可以用栈来搞一搞事情 受了上次zsq 讲的双栈排序的启发.. 具体就是将原盘子大小cop ...
- 9.11 myl模拟赛
9.11 myl 模拟赛 100 + 100 + 0 第一题耗费了太多的时间,导致最后一题没有时间想,直接去写了暴力,而且出题人没有给暴力分.... Problem 1. superman [题目描述 ...
- 2017.10.26模拟赛day1
-- T1为爱追寻 问题描述 历经了半年的停课之后,紫萱学姐回到了陌生又熟悉的班里,她想找到学长的位置.于是她决定采用一种高效率的寻找方法:瞎找法. 我们将学姐的班级视为一个二维平面,每个整数坐标对应 ...
- 【11/11】模拟赛
官方的链接:http://www.byvoid.com/blog/byvoid-wow-stage-3/ 本博客不再给出题目. 第一题 彩色穿孔卡片 用的O(N^2)的算法.类似USACO的浮水法. ...
- [2020.11.27NOIP模拟赛]中位数之中位数【二分,树状数组】
正题 题目链接:https://www.luogu.com.cn/problem/U142585?contestId=37855 题目大意 nnn个数,求所有区间中位数的中位数. 解题思路 二分一个答 ...
- [2020.11.26NOIP模拟赛]勇者的后缀【SA,RMQ,主席树,二分】
正题 题目链接:https://www.luogu.com.cn/problem/U142356?contestId=37784 题目大意 一个字符串,询问给出(x,l,r)(x,l,r)(x,l,r ...
- [2020.11.25NOIP模拟赛]出租车【dp】
正题 题面链接:https://www.luogu.com.cn/problem/U142298?contestId=37766 题目大意 nnn个人有起点和终点,按顺序上车,但下车可以任意顺序,车最 ...
- NOIP2022.11.23模拟赛
T1 IP地址 输入文件:ip.in 输出文件:ip.out 题目描述 I P IP IP 地址是由四个不含前导零的自然数 ( ≤ 255 \leq255 ≤255),和三个作为分割符的 " ...
- 11.16模拟赛总结
打的平平无奇了属于是 又没休息好,不过今天注意力还算集中 时间安排 8.30-8.50 看一遍题 感觉T1是个签到 8.50-10.00 考虑了一下T1的实现 发现set不可后再线段树动态开点和vec ...
最新文章
- 【OpenCV】OpenCV中积分图函数与应用
- 解压缩工具 WinRAR 5.71 + x64 Final 中文汉化版
- [刘阳Java]_Web前端入门级练习_迅雷官宣网设计
- python 命令-Django 基本命令
- Asterisk权威指南/第一章 一场电话革命
- ajax获取qq音乐源码,ajax请求QQ音乐
- element UI框架Fr Cover主题插画下载模板V2.0
- 计算机组装实践第一课,计算机组装实践研究 毕业论文.doc
- 动态规划——最小找钱问题
- Mac Apache php 配置域名
- Linux OTA升级
- Python编程:节省内存的办法(持续更新ing...)
- 做了个护盾出来 哈哈
- 正确进入Iphone DFU模式
- linux rar和zip工具
- 考研数学汤家凤笔记第一章:极限与连续
- 博思得打印机如何打印序列号标签
- 区块链是什么?区块链投资靠谱吗?
- C# NPIO导出Excel设置宽度背景色
- 常用方法(图片逆光度、傅里叶变换、寻找波峰波谷、计算俯仰/侧脸)
热门文章
- MATLAB 成绩排序
- ROS系统 C++或Python实现订阅者Subscriber
- 结果集耗尽时,检查是否关闭结果集时常用sql
- FJUT Home_W的拆分序列(DP)题解
- Verilog_Day2
- Python的可视化包 – Matplotlib 2D图表(点图和线图,.柱状或饼状类型的图),3D图表(曲面图,散点图和柱状图)...
- Redis配置主从数据,实现主从库之间数据同步
- IE6/IE7下:inline-block解决方案
- Delphi绘制Alpha图像的函数
- 江南山区腊味香 年味浓