codeforces Round #320 (Div. 2) C. A Problem about Polyline(数学) D. Or Game(暴力,数学)

 

解题思路:就是求数 n 对应的二进制数中有多少个 1

#include <iostream>  
#include<cstdio>
using namespace std;  int main(){int n;cin>>n;int ans = 0;
//  while(n){//这也是一种好的方法
//      n = n&(n-1);
//      ++ans;
//  }while(n){if(n&1) ++ans;n>>=1;}cout<<ans<<endl;return 0;
} 

 

解题思路:对(strength, i, j)按照strength进行递减排序,从左到右进行遍历,用b[N]表示i和j有关系! 

如果发现b[i]或者b[j]有关系了,则跳过这个strength, 否则b[i] =j, b[j] = i;

#include <iostream>  
#include <algorithm>
#include<cstdio>
using namespace std;  struct node{int x;int i, j;
}a[320000];int b[1000];bool cmp(node a, node b){return a.x > b.x;
}int main(){int x, n;int c = 0;cin>>n;for(int k=2; k<=2*n; ++k){for(int kk=1; kk<k; ++kk){cin>>x;a[c].x = x;a[c].i = k;a[c++].j = kk;}}sort(a, a+c, cmp);int cnt = 0;for(int i=0; i<c; ++i){if(!b[a[i].i] && !b[a[i].j]){b[a[i].i] = a[i].j;b[a[i].j] = a[i].i;++cnt;}if(cnt == n) break;}for(int i=1; i<=2*n; ++i){if(i!=1) cout<<" ";cout<<b[i];}cout<<endl;return 0;
}

 

解题思路:

 

我们可以发现这样的一个规律:

(1)首先b一定要小于a,否则无论如何曲线也无法通过(a,b);

(2)设int k=a/b, 如果k为奇数,说明这个点在上图的绿色的线上, 没关系,我们让 k+=1;这样的话一定有(0,0), (a,b)这两点确定的直线的

斜率1/k介于(1/(k-1),  1/(k+1))之间,那么我们可以通过缩小(或者放大)X的值,使得第 k/2 个周期块 斜率为-1的那条边经过(a, b)。此时

的X值就是最小的!

(3)如果(a,b)在第 k/2 个周期块 斜率为-1的那条边上,那么这条边与X轴的交点就是(a+b, 0), 从(0, 0)到(a+b, 0)一共经过了 k/2个周期,

所以 X = (a+b)*1.0/(k/2 * 2)

(4)唉....想的这么明白,容易吗.....

#include <iostream>  
#include <algorithm>
#include<cstdio>
#include<cmath>
using namespace std;  int main(){int a, b;cin>>a>>b;if(b>a) {cout<<-1<<endl;} else {int k = a/b;if(k&1) ++k;printf("%.12lf\n", (a+b)*1.0/k);}return 0;
}

 

解题思路:如果某个数a[i]乘以x, 必定会导致a[i]的二进制的长度增大。

首先求出或运算的前缀和后缀,然后对每个a[i]操作如下: a[i]*=x^k(x的k次方); 最后找到a[i]|pref[i-1]|suff[i+1]的最大值!

其实可以优化一处,就是a[i]|pref[i-1]|suff[i+1]的最大值一定对应二进制长度最大的a[i]; 可通过log(a[i])+1求得二进制长度!

#include <iostream>  
#include <algorithm>
#include<cstdio>
#include<cmath>
#define N 200010
using namespace std;  __int64 a[N];
__int64 pref[N];
__int64 suff[N];int n, k, x;int main(){scanf("%d%d%d", &n, &k, &x);long long maxN = 0;for(int i=1; i<=n; ++i)scanf("%I64d", &a[i]);long long xk = (long long)(pow((double)x, (double)k) + 0.5);for(int i=1; i<=n; ++i){pref[i] = pref[i-1] | a[i];suff[n-i+1] = suff[n-i+2] | a[n-i+1];}for(int i=1; i<=n; ++i){long long num = a[i]*xk | pref[i-1] | suff[i+1];if(maxN < num)maxN = num;}printf("%I64d\n", maxN);return 0;
}

 

转载于:https://www.cnblogs.com/hujunzheng/p/4826981.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(五)Linux之设备驱动模型

目录&#xff08;一&#xff09;Linux内核驱动简介&#xff08;二&#xff09;杂项设备驱动模型&#xff08;1&#xff09;相关接口&#xff08;2&#xff09;杂项设备注册过程&#xff08;三&#xff09;早期经典字符设备驱动模型&#xff08;1&#xff09;相关接口&#xff0…

操作系统页面置换算法(opt,lru,fifo,clock)实现

选择调出页面的算法就称为页面置换算法。好的页面置换算法应有较低的页面更换频率&#xff0c;也就是说&#xff0c;应将以后不会再访问或者以后较长时间内不会再访问的页面先调出。 常见的置换算法有以下四种&#xff08;以下来自操作系统课本&#xff09;。 1. 最佳置换算法(…

(六)Linux之设备驱动模型(续)

前面我们学习了杂项设备驱动模型、早期经典字符设备驱动模型,这一小节来讲解Linux中的标准字符设备驱动。 目录&#xff08;一&#xff09;为什么引入标准字符设备驱动模型&#xff08;二&#xff09;相关接口&#xff08;三&#xff09;注册流程&#xff08;四&#xff09;程序…

N个数依次入栈,出栈顺序有多少种?

对于每一个数来说&#xff0c;必须进栈一次、出栈一次。我们把进栈设为状态‘1’&#xff0c;出栈设为状态‘0’。n个数的所有状态对应n个1和n个0组成的2n位二进制数。由于等待入栈的操作数按照1‥n的顺序排列、入栈的操作数b大于等于出栈的操作数a(a≤b)&#xff0c;因此输出序…

(七)linux函数接口的使用

前面我们讲解了字符设备的驱动模型&#xff0c;有了前面的基础后&#xff0c;今天学习函数接口就比较容易了 目录&#xff08;一&#xff09;open函数接口&#xff08;二&#xff09;read函数接口&#xff08;三&#xff09;lseek函数接口&#xff08;四&#xff09;用户空间和…

(八)linux驱动之ioctl的使用

这篇文章给大家讲解一下ioctl的简单使用&#xff0c;关于ioctl更详细的教程后面有机会单独写出来 &#xff08;一&#xff09;什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理&#xff0c;就是对设备的一些特性进行控制&#xff0c;例…

(九)linux中断编程

目录&#xff08;一&#xff09;linux中断的介绍&#xff08;二&#xff09;内核中断的操作过程&#xff08;三&#xff09;实例代码&#xff08;一&#xff09;linux中断的介绍 linux内核中的中断通过中断子系统来管理。linux系统中有专门的中断子系统&#xff0c;原理很复杂…

网络爬虫(1)

参考&#xff1a;http://www.cnblogs.com/dongkuo/p/4851735.html算法分析我们现在从需求中提取关键词来逐步分析问题。 首先是“种子节点”。它就是一个或多个在爬虫程序运行前手动给出的URL&#xff08;网址&#xff09;&#xff0c;爬虫正是下载并解析这些种子URL指向的页面…

(十)Linux之等待队列

&#xff08;一&#xff09;阻塞和非阻塞 阻塞&#xff1a;执行设备操作时&#xff0c;若不能获得资源&#xff0c;则挂起进程进入休眠直到满足可操作的条件后再操作。 非阻塞&#xff1a;进程在不能进行设备操作时&#xff0c;并不挂起&#xff0c;它要么放弃&#xff0c;要么…

(十一)linux之poll轮询

目录&#xff08;一&#xff09;poll轮询的作用&#xff08;二&#xff09;poll轮询相关的接口&#xff08;三&#xff09;poll使用流程&#xff08;四&#xff09;实例代码&#xff08;一&#xff09;poll轮询的作用 以阻塞的方式打开文件&#xff0c;那么对多个文件读写时&a…

校验码(海明校验,CRC冗余校验,奇偶校验)

循环冗余校验码 CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为nkr所以又称 (n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中. CRC理论非常复杂,一般书就给个例题,讲讲方法.现在简单介绍下它的原理: 在k位信息码后接r位校验码,对于一个给定的(n,k…

(十二)linux内核定时器

目录&#xff08;一&#xff09;内核定时器介绍&#xff08;二&#xff09;内核定时器相关接口&#xff08;三&#xff09;使用步骤&#xff08;四&#xff09;实例代码&#xff08;一&#xff09;内核定时器介绍 内核定时器并不是用来简单的定时操作&#xff0c;而是在定时时…

java Proxy(代理机制)

我们知道Spring主要有两大思想&#xff0c;一个是IoC&#xff0c;另一个就是AOP&#xff0c;对于IoC&#xff0c;依赖注入就不用多说了&#xff0c;而对于Spring的核心AOP来说&#xff0c;我们不但要知道怎么通过AOP来满足的我们的功能&#xff0c;我们更需要学习的是其底层是怎…

(十三)linux中断底半部分处理机制

这篇文章介绍一下linux中断的底半部分的tasklet和workquene两种处理机制&#xff0c;其中tasklet中不能有延时函数&#xff0c;workquene的处理函数可以加入延时操作 目录&#xff08;一&#xff09;tasklet小任务处理机制&#xff08;1&#xff09;tasklet相关函数接口&#x…

Codeforces Round #326 (Div. 2) B. Pasha and Phone C. Duff and Weight Lifting

B. Pasha and PhonePasha has recently bought a new phone jPager and started adding his friends phone numbers there. Each phone number consists of exactly n digits. Also Pasha has a number k and two sequences of length n / k (n is divisible by k) a1, a2, …

vmware中装的ubuntu上不了网

本文章针对桥接方式进行讲解&#xff0c;如果需要另外两种连接方式请参考文末给出的链接 &#xff08;一&#xff09;问题 主机和虚拟机可以相互ping通&#xff0c;但是却不能ping网址 &#xff08;二&#xff09;解决办法 vmware为我们提供了三种网络工作模式&#xff0c;…

document.getElementById()与 $()区别

document.getElementById()返回的是DOM对象&#xff0c;而$()返回的是jQuery对象 什么是jQuery对象&#xff1f; ---就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的&#xff0c;其可以使用jQuery里的方法。 比如&#xff1a; $("#test").html() 意…

关于gedit的编码问题

今天由于gedit的编码格式导致LCD显示屏的问题&#xff0c;开始没有想到后来才发现&#xff0c;在这记录一下 #include <stdio.h> #include <unistd.h> #include <stdio.h> #include <fcntl.h> #include <linux/fb.h> #include <sys/mman.h>…

c语言表白程序代码

双十一要到了&#xff0c;好激动啊&#xff01;&#xff01;&#xff01; 是时候准备出手了&#xff01; 花了一天的时间写的表白代码。 表示自己弱弱的..... 看了网上好多都是js写的&#xff0c;感觉碉堡了&#xff01;js用的不熟&#xff0c;前端不好&#xff0c;java&#x…

tiny4412移植tslib库

1、将tslib-1.4.tar.gz拷贝到虚拟机某个路径进行解压 2、进入解压路径tslib 3、执行#./autogen.sh 如果提示&#xff1a;./autogen.sh: 4: ./autogen.sh: autoreconf: not found 原因&#xff1a;没有安装automake工具, 解决办法:需要安装此工具&#xff1a; apt-get instal…