cf 168 k-Multiple Free Set bin_search

     一开始写的是逆序的,WA了,改成正序AC,想来没有道理,细看后才发现是改了当前值,让二分序列不再有序……o(╯□╰)o,正序只能是侥幸罢了

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define INF 1E9
using namespace std;
int q[100010];
int abs(int a){return a>0?a:-a;}
int bin(int l,int r,long long x)
{
    int mid;
    if(x>abs(q[r]))return -1;
    while(l<r)
    {
        mid=l+((r-l)>>1);
        if(abs(q[mid])<x)l=mid+1;
        else r=mid;
    }
    if(q[l]==x)return l;
    else return -1;
}

int main()
{
    int n,k;
    scanf("%d%d",&n,&k);
    int i;
    for(i=0;i<n;i++)
        scanf("%d",&q[i]);
    sort(q,q+n);
    int ans=0;
    for(i=n-1;i>=0;i--)
    {
        if(q[i]<0)continue;
        ans++;
        if(q[i]%k==0)
        {
            r=bin(0,i-1,q[i]/k);
            if(r!=-1) q[r]=-q[r];//一开始这是-1
        }
    }
    printf("%d\n",ans);
}
时间: 2024-11-08 23:16:47

cf 168 k-Multiple Free Set bin_search的相关文章

RHEL6 64位系统安装ORACLE 10g 64bit 数据库

    记得去年4月份的时候,为公司部署测试环境和UAT环境时,在红帽RHEL6 64位系统安装ORACLE 10g 64位数据库时遇到了许多小问题,当时匆匆忙忙也没记录一下这些问题,前几天在虚拟机安装ORACLE 64位 10g时,又有一些常见问题又遇到了,顺便整理一下这篇文章.也许在RHEL6 64版本上安装64位Oracle 10g 的问题是最多的,估计很多人都被这个虐过无数次(很多人都是Oracle虐我无数遍,我待Oracle如初恋).从网上搜索关于这方面的内容就可见一斑. 好,废话少说

PHP面试常用算法(推荐)_php实例

一.冒泡排序 基本思想: 对需要排序的数组从后往前(逆序)进行多遍的扫描,当发现相邻的两个数值的次序与排序要求的规则不一致时,就将这两个数值进行交换.这样比较小(大)的数值就将逐渐从后面向前面移动. //冒泡排序 <?php function mysort($arr) { for($i = 0; $i < count($arr); $i++) { $isSort = false; for ($j=0; $j< count($arr) - $i - 1; $j++) { if($arr[$

在CentOS系统上安装Java的openjdk的方法_java

CentOS 6.X 和 5.X 自带有OpenJDK runtime environment  (openjdk).它是一个在linux上实现开源的java 平台.CentOS  yum 命令 安装 Java SDK openjdk centos linux JAVA(openjdk)软件包名 1.java-1.7.0-openjdk - OpenJDK Runtime Environment 2.java-1.7.0-openjdk-devel - OpenJDK Development E

PHP版本常用的排序算法汇总_php实例

//1.冒泡排序 function bubble_sort($arr){ $n = count($arr); for($i=0;$i<$n-1;$i++){ for($j=$i+1;;$j<$n-$i;$j++){ if($arr[$j]<$arr[$i]){ $temp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $temp; } } } }  //2.归并排序 //merge函数将指定的两个有序数组(arr1arr2,)合并并且排序 //我

纯C语言:折半查找源码分享_C 语言

复制代码 代码如下: #include <stdio.h>       int bin_search(int key[],int low, int high,int k)      {        int mid;        if(low>high)    {       return -1;        }    else       {             mid = (low+high) / 2;             if(key[mid]==k)         

connecting docker containers on multiple hosts with open vswitch GRE

转一篇 通过GRE联通多台主机上运行的containers.  可以用于解决没有VLAN或者网络不归自己管理的环境, 用gre穿透. GRE概念 http://en.wikipedia.org/wiki/Generic_Routing_Encapsulation OpenVswitch相关 http://blog.163.com/digoal@126/blog/static/16387704020147194247869/ http://blog.163.com/digoal@126/blog/

cf 167.div2 D.Dima and Two Sequences

    今天的cf完全不在状态,A题10分钟才读懂题意.目测要掉rating了     这题题意很简单,就是按X升序排列会有多少种情况,一个排列组合的问题     设相同x的元素个数为Xi  ,完全相同为2K(易知若完全相同有且仅有2个,比赛的时候就没想到这一点)     ans= ∑Xi!/2^k    之所以能在阶乘中除2^k,是因为k最大为n/2,而n!中的2的因子至少为n/2 /* author:jxy lang:C/C++ university:China,Xidian Univers

emacs 24.2 远程 sftp 配置问题和访C-c C-f问题

问题描述 emacs 24.2 远程 sftp 配置问题和访C-c C-f问题 .emacs配置如下: (require 'tramp) (setq tramp-default-method "ssh") 远程 IP为 192.168.1.104 C-c C-f 如何写访问地址

CF穿越火线新版本 超级佣兵TD全新玩法登场

CF穿越火线新版本 超级佣兵TD全新玩法登场 近日,<穿越火线>更新了超级佣兵TD模式引发了游戏圈内高端玩家的热议,将佣兵附与高血量自带特殊技能酣战团队模式的全新玩法开辟了FPS游戏的又一特色玩法,同时新兵种战旗兵在战场带来的团队加成也是<穿越火线>对于FPS游戏的一大创新.此次新版本的上线还带来了新模式擒杀战以及多款全新的武器,另外韩国2PM偶像团成员也作为全新的游戏角色植入入游戏,火线玩家近日在游戏中享受到了新版本带来的乐趣. 全新模式的开创玩家畅享新玩法 此次新版本超级佣兵的