2013.5.A
题1 高低位交换
【问题描述】
给出一个小于2^32的正整数。这个数可以用一个32位的二进制数表示(不足32位用0补足)。我们称这个二进制数的前16位为“高位”,后16位为“低位”。将它的高低位交换,我们可以得到一个新的数。试问这个新的数是多少(用十进制表示)。
例如,数1314520用二进制表示为0000 0000 0001 0100 0000 1110 1101 1000(添加了11个前导0补足为32位),其中前16位为高位,即0000 0000 0001 0100;后16位为低位,即0000 1110 1101 1000。将它的高低位进行交换,我们得到了一个新的二进制数0000 1110 1101 1000 0000 0000 0001 0100。它即是十进制的249036820。 【输入数据】
读入一个小于2^32的正整数。 【输出数据】
新的数。 【样例输入】
1314520 【样例输出】
249036820
T1:纯模拟
#include<cstdio>
#include<cstring>
using namespace std;
int f[33],n,a[33],i=1;
long long ans=1,sum=0;
void exchange(int x){
int r;
while(x>0){
r=x%2;
x/=2;
f[i]=r;
i++;
}
}
void change(){
for(int x=1;x<=32;x++){ if(a[x]==1) sum+=ans;ans*=2;
}
}
int main(){
freopen("swap.in","r",stdin);
freopen("swap.out","w",stdout);
memset(f,0,sizeof(f));
memset(a,0,sizeof(a));
scanf("%d",&n);
exchange(n);
for(int j=16;j>0;j--){
a[j]=f[j+16];
a[j+16]=f[j];
}
change();
printf("%lld",sum);
return 0;
}
T2:
题2数列排序
【问题描述】
给定一个数列{an},这个数列满足ai≠aj(i≠j),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换?
【输入格式】
第一行,正整数n (n<=100,000)。
以下若干行,一共n个数,用空格分隔开,表示数列{an},任意-231<ai<231。
【输出格式】
只有一行,包含一个数,表示最少的交换次数。
【输入样例】
8
8 23 4 16 77 -5 53 100
【输出样例】
5
写这一题收获还是不少的,首先依旧表示自己打的题太少了,这样类型的题目没有碰到过40都看不下去了....TAT..
这是一题图论题,要找环
就比如
4
3 7 6 1
你sort一下,排好正确的顺序
1 3 6 7
发现,原序列的3应该和7交换,而7应该和1交换,1应该和3交换;
那么就恭喜你找到了最少的交换次数,2次,这也就是说找环的次数就为最少交换的次数;
ps:这里说一下自己年轻的地方:
1.交换过得数记得mark
2.刚开始超级年轻的这样记录每一个数正确的位置:
d[a[i]]=i;
之后崩溃掉了,喜闻乐见。
一直忘了数组的序号是不能为负的,逗了....这里用自定义即可;
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[100010],d[100010],i;
bool f[100010];
long long ans=0,k=0;
struct node
{
int b,c;
bool operator <(const node & a)const{
return b<a.b;
}
} B[100001];
void find(int x){
int m=x;
if(B[i].b==a[x])
return;
else{
if(f[x]==true){
x=d[x];
f[m]=false;
ans++;
find(x);
}}
f[x]=false;
}
int main(){
freopen("seqsort.in","r",stdin);freopen("seqsort.out","w",stdout);
int n,t;
scanf("%d",&n);
memset(f,true,sizeof(f));
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
B[i].b=a[i];
B[i].c=i;
}
sort(B+1,B+n+1);
for(i=1;i<=n;i++){
d[B[i].c]=i;
}
for(i=1;i<=n;i++){
ans=0;
if(f[B[i].c]==true) find(i);
k+=ans;
}
printf("%d",k);
fclose(stdin);fclose(stdout);
return 0;
}
T3:
题3 路标设置
【问题描述】
B市和T市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最大距离定义为该公路的“空旷指数”。现在政府决定在公路上增设一些路标,使得公路的“空旷指数”最小。他们请求你设计一个程序计算能达到的最小值是多少。
请注意,公路的起点和终点保证已设有路标,公路的长度为整数,并且原有路标和新设路标都必须距起点整数个单位距离。
【输入格式】
第1行包括三个数L、N、K,分别表示公路的长度,原有路标的数量,以及最多可增设的路标数量。
第2行包括递增排列的N个整数,分别表示原有的N个路标的位置。路标的位置用距起点的距离表示,且一定位于区间[0,L]内。
【输出格式】
输出1行,包含一个整数,表示增设路标后能达到的最小“空旷指数”值。 【输入样例】road.in
101 2 1
0 101
【输出样例】road.out
51
【样例说明】
公路原来只在起点和终点处有两个路标,现在允许新增一个路标,应该把新路标设在距起点50或51个单位距离处,这样能达到最小的空旷指数51。 【数据规模与约定】
50%的数据中,2 ≤ N ≤100,0 ≤K ≤100
100%的数据中,2 ≤N ≤100000, 0 ≤K ≤100000
100%的数据中,0 < L ≤10000000
二分答案即可...
=-=还是很不熟练啊...
#include<cstdio>
#include<cstring>
using namespace std;
int a[100001],l,n,k,d=0;
int judge(int x){
int now=0;
for(int i=1;i<n;i++){
if(a[i]%x==0) now+=a[i]/x-1;
else now+=a[i]/x;
}
if(now<=k) return 1; else return 0;
}
int main(){
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
scanf("%d%d%d",&l,&n,&k);
scanf("%d",&a[1]);
for(int i=2;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<n;i++) a[i]=a[i+1]-a[i];
int ll=1,r=l,t,mid;
while(ll!=r){
mid=(r+ll)>>1;
if(judge(mid)) r=mid;
else ll=mid+1;
}
printf("%d",ll);
return 0;
}
T4树形DP,想之后单独附上
2013.5.A的更多相关文章
- 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...
- SharePoint 2013: A feature with ID has already been installed in this farm
使用Visual Studio 2013创建一个可视web 部件,当右击项目选择"部署"时报错: "Error occurred in deployment step ' ...
- Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目
默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...
- SharePoint 2013 create workflow by SharePoint Designer 2013
这篇文章主要基于上一篇http://www.cnblogs.com/qindy/p/6242714.html的基础上,create a sample workflow by SharePoint De ...
- Install and Configure SharePoint 2013 Workflow
这篇文章主要briefly introduce the Install and configure SharePoint 2013 Workflow. Microsoft 推出了新的Workflow ...
- SharePoint 2013 configure and publish infopth
This article will simply descript how to configure and publish a InfoPath step by step. Note: To con ...
- TFS 2013 培训视频
最近给某企业培训了完整的 TFS 2013 系列课程,一共四天. 下面是该课程的内容安排: 项目管理 建立项目 成员的维护 Backlog 定义 任务拆分 迭代 ...
- Visual Studio 2013 Ultimate因为CodeLens功能导致Microsoft.Alm.Shared.Remoting.RemoteContainer.dll高CPU占用率的折中解决方案
1.为什么Microsoft.Alm.Shared.Remoting.RemoteContainer.dll的CPU占用率以及内存使用率会那么高? 在Visual Studio 2013 Ultima ...
- 沙盒解决方案解决SharePoint 2013 以其他身份登陆的问题
众所周知,SharePoint 2013没有像SharePoint 2010那样有一个叫"以其他身份登录"的菜单项. 当然解决方案也很多,比如你可以直接修改Welcome.ascx ...
- 实现一个基于 SharePoint 2013 的 Timecard 应用(中)
门户视图 随着 Timecard 列表的增多,如何查找和管理这许多的 Timecard 也就成了问题.尤其对于团队经理而言,他除了自己填写的 Timecard,还要审核团队成员的 Timecard 任 ...
随机推荐
- MySQL进口.sql文件和常用命令
MySQL进口.sql文件和常用命令 在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次运行多条sql命令的.在mysql中运行sql文件的命令: mysql> so ...
- javascript之Style物
Background 属性 属性 描写叙述 background 在一行中设置全部的背景属性 ...
- Linux 解决文件删除,但并没有改变磁盘可用性
昨天收到zabbix警报邮件,有一个server的 /home 文件夹的使用达成90%以上.检查,发现MongoDB数据文件到这个文件夹.高.而这个MongoDB的数据如今又都不用了.于是就直接把它的 ...
- utf8 和 UTF-8 在使用中的差别
在使用中经常遇到utf-8和utf8,如今最终弄明确他们的使用不同之处了,如今来和大家分享一下,以下我们看一下utf8 和 UTF-8 有什么差别 "UTF-8"是标准写法,ph ...
- 圣魔大战3(Castle Fantisia)艾伦希亚战记改动器/秘籍——究极改动大法
艾伦西亚战记== 艾伦希亚战记,是一个游戏 武器:UltraEdit(金山游侠自带的文件改动器也能够,仅仅是这个专业) 目标: 存档文件(建议先备份) 知识:save00.dat-save19.da ...
- UITabBarControler解决旋转问题
在遇到开发项目中播放视频,播放视频回列表后,,列表 NavigationController 里边, NavigationController 在 UItabBarController 里边,不要旋转 ...
- Hadoop群集设置
Hadoop群集设置 近期特别看了Hadoop的资料.感觉特别好,整理一下发在自己的博客上,希望对想了解集群的网友有所帮助. 參考资料:http://hadoop.apache.org/docs/r1 ...
- JAVA进阶-注解
注解元数据分为4部分分别为Target,Documented,Inherited,Retention: Target>指定被注解的注解仅仅能使用在某个类型上;ElementType指定其类型:能 ...
- IplImage 封装释放
IplImage是openCV库中非常重要的一个结构体,库中的图像都是保存为这个结构体后再进行操作的,详细结构例如以下: </pre><pre> typedef struct ...
- 收集的VS2013的使用小技巧( 不断总结中)
对于经常使用vs的朋友,如果能用键盘直接做的事,还是键盘更便捷点,现在我就把自己遇到的一些给写下来. 1.对一个函数的说明 先写一个函数,以及参数,完成后,在函数上输入///,vs会自动补全说明的信息 ...