Codeforces 460 D. Little Victor and Set
暴力+构造
If r - l ≤ 4 we can all subsets of size not greater than k.
Else, if k = 1, obviously that answer is l. If k = 2,
answer is 1, because xor of numbers 2x and 2x + 1 equls 1.
If k ≥ 4 answer is 0 because xor of
to pairs with xor 1 is 0.
If k = 3, we can choose numbers 2x and 2x + 1 with xor 1.
So we need to know, if we can get xor equals 0. Suppose that
there are 3 such numbers x, y and z (r ≥ x > y > z ≥ l)
with xor equals 0. Consider the most non-zero bit of numberx.
At the same bit of y it's also 1, because xor equls
0, and y > z. Consider the next bit of numbers. If z have 0 there,
we have to do next: set the previous bit of numbers x and y equals 0,
and set current bit equals 1. Obviously xor still equals
0, z hadn't changed and numbers x and y stood
closer to z, so they are still at [l, r].And x > y.Consider
the next bit of numbers. If z has zero here than we will change most bits of x и y at
the same way and so on. z > 0, so somewhen we will get to bit in which z has 1.
Since xorequals 0, the same bit of x would
be 1 because x > y, and y would
have 0 there. At the next bits we will change bit in x to 0,
and in numbers y and z to 1.Finally z would
be greater or equal than before, and x would be less or greater than before, and x > y > z would
be correct. So, we have the next: if such numbers x, y and z exist
than also exist numbers:
1100…000
1011…111
0111…111
with xor equals 0. There are not much such triples, so we
can check them.
1 second
256 megabytes
standard input
standard output
Little Victor adores the sets theory. Let us remind you that a set is a group of numbers where all numbers are pairwise distinct. Today Victor wants to find a set of integers S that
has the following properties:
- for all x
the
following inequality holds l ≤ x ≤ r; - 1 ≤ |S| ≤ k;
- lets denote the i-th element of the set S as si;
value
must
be as small as possible.
Help Victor find the described set.
The first line contains three space-separated integers l, r, k (1 ≤ l ≤ r ≤ 1012; 1 ≤ k ≤ min(106, r - l + 1)).
Print the minimum possible value of f(S). Then print the cardinality of set |S|.
Then print the elements of the set in any order.
If there are multiple optimal sets, you can print any of them.
8 15 3
1
2
10 11
8 30 7
0
5
14 9 28 11 16
Operation
represents
the operation of bitwise exclusive OR. In other words, it is the XOR operation.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; typedef long long int LL; LL L,R,K;
LL ans=0x3f3f3f3f3f3f3f3f; int main()
{
cin>>L>>R>>K;
if(R-L+1<=4)
{
LL m=R-L+1;
LL sig=0;
for(LL i=1;i<(1LL<<m);i++)
{
LL temp=0;
LL wei=0;
LL si=i;
while(si)
{
wei++;
si=si&(si-1);
}
if(wei>K) continue;
for(LL j=0;j<m;j++)
{
if(i&(1LL<<j))
{
temp^=L+j;
}
}
if(temp<ans)
{
ans=temp;
sig=i;
}
}
cout<<ans<<endl;
LL wei=0;
LL tsig=sig;
while(tsig)
{
wei++;
tsig=tsig&(tsig-1);
}
cout<<wei<<endl;
for(LL i=0;i<m;i++)
{
if(sig&(1<<i))
{
cout<<L+i<<" ";
}
}
cout<<endl;
}
else
{
if(K==1)
{
cout<<L<<endl;
cout<<1<<endl;
cout<<L<<endl;
}
else if(K==2)
{
if(L%2) L++;
cout<<1<<endl;
cout<<2<<endl;
cout<<L<<" "<<L+1<<endl;
}
else if(K==3)
{
bool flag=false; LL mx=3,mi=1;
while(mx<=R)
{
if(mi>=L)
{
flag=true;
cout<<0<<endl<<3<<endl;
cout<<mx<<" "<<mx-1<<" "<<mi<<endl;
break;
} mx<<=1LL;
mi<<=1LL; mi++;
} if(flag==false)
{
if(L%2) L++;
cout<<1<<endl;
cout<<2<<endl;
cout<<L<<" "<<L+1<<endl;
}
}
else
{
cout<<0<<endl;
cout<<4<<endl;
if(L%2) L++;
cout<<L<<" "<<L+1<<" "<<L+2<<" "<<L+3<<endl;
}
}
return 0;
}
Codeforces 460 D. Little Victor and Set的更多相关文章
- Codeforces 460 DE 两道题
D Little Victor and Set 题目链接 构造的好题.表示是看了题解才会做的. 假如[l,r]长度不超过4,直接暴力就行了. 假如[l,r]长度大于等于5,那么如果k = 1,显然答案 ...
- codeforces 460D:Little Victor and Set
Description Little Victor adores the sets theory. Let us remind you that a set is a group of numbers ...
- Codeforces 460D Little Victor and Set(看题解)
Little Victor and Set 其他都很好求, 只有k == 3的时候很难受.. 我们找到第一个不大于l的 t, 答案为 l, 3 * t, (3 * t) ^ l 感觉好像是对的, 感觉 ...
- Codeforces Round #483 (Div. 2) [Thanks, Botan Investments and Victor Shaburov!]
题目链接:http://codeforces.com/contest/984 A. Game time limit per test:2 seconds memory limit per test:5 ...
- Codeforces 460D. Little Victor and Set
D. Little Victor and Set time limit per test:1 second memory limit per test:256 megabytes input:stan ...
- Codeforces Round #460 (Div. 2) E. Congruence Equation (CRT+数论)
题目链接: http://codeforces.com/problemset/problem/919/E 题意: 让你求满足 \(na^n\equiv b \pmod p\) 的 \(n\) 的个数. ...
- Codeforces 460D Little Victor and Set --分类讨论+构造
题意:从区间[L,R]中选取不多于k个数,使这些数异或和尽量小,输出最小异或和以及选取的那些数. 解法:分类讨论. 设选取k个数. 1. k=4的时候如果区间长度>=4且L是偶数,那么可以构造四 ...
- codeforces 460D Little Victor and Set(构造、枚举)
最近的CF几乎都没打,感觉挺水的一个题,不过自己仿佛状态不在,看题解才知道做法. 输入l, r, k (1 ≤ l ≤ r ≤ 1012; 1 ≤ k ≤ min(106, r - l + 1)). ...
- Codeforces Round #460 D. Karen and Cards
Description Karen just got home from the supermarket, and is getting ready to go to sleep. After tak ...
随机推荐
- Spark(九) -- SparkSQL API编程
本文测试的Spark版本是1.3.1 Text文本文件测试 一个简单的person.txt文件内容为: JChubby,13 Looky,14 LL,15 分别是Name和Age 在Idea中新建Ob ...
- WIN7怎样把屏幕改为16位色
1 右击桌面,选择屏幕分辨率 2 选择高级设置 3 点击"监视器"选项卡,把颜色改为16位. 4 屏幕会暂时黑屏一段时间,随后主题将自动切换为基础版(失去Areo效果) ...
- C语言面向对象编程(五):单链表实现(转)
这里实现的单链表,可以存储任意数据类型,支持增.删.改.查找.插入等基本操作.(本文提供的是完整代码,可能有些长.) 下面是头文件: #ifndef SLIST_H #define SLIST_H # ...
- 详解Android首选项框架的使用
首选项这个名词对于熟悉Android的朋友们一定不会感到陌生,它经常用来设置软件的运行参数. Android提供了一种健壮并且灵活的框架来处理首选项.它提供了简单的API来隐藏首选项的读取和持久化,并 ...
- c与c++中的强制类型转换区别
强制类型转换的一般形式为: (类型名)(表达式) 如:(int)a.这是C语言使用的形式,C++把它保留了下来,以利于兼容. C++还增加了以下形式: 类型名(表达式) 如:int(a).这种形式类似 ...
- Linux /proc/pid目录下文件的含义 (转)
2013-01-16 16:10:36 分类: LINUX attr: 进程的属性 cmdline: 启动进程时执行的命令 cwd: 指向进程当前工作目录的软链 environ: 进程执行时使用的环境 ...
- 设计模式之迪米特原则(LoD)
迪米特原则也叫作最少知识原则,也就是:一个对象应该对其他对象有最少的了解.也就是说一个对象应该尽量的保证高内聚性,不应该对外有太多的public方法.
- C++语言基础(9)-继承
一.继承的基本语法 #include<iostream> using namespace std; //基类 Pelple class People{ public: void setna ...
- python SimpleHTTPServer源码学习
SimpleHTTPServer.SimpleHTTPRequestHandler继承了BaseHTTPServer.BaseHTTPRequestHandler. 源码中主要实现了BaseHTTPS ...
- 创建Spring Boot项目的几种方式总结
一.我们可以使用Spring Initializr来创建SpringBoot项目. Spring Initializr从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构.虽 ...