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 = ;
// while(n){//这也是一种好的方法
// n = n&(n-1);
// ++ans;
// } while(n){
if(n&) ++ans;
n>>=;
}
cout<<ans<<endl;
return ;
}
解题思路:对(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[]; int b[]; bool cmp(node a, node b){
return a.x > b.x;
} int main(){
int x, n;
int c = ;
cin>>n;
for(int k=; k<=*n; ++k){
for(int kk=; kk<k; ++kk){
cin>>x;
a[c].x = x;
a[c].i = k;
a[c++].j = kk;
}
}
sort(a, a+c, cmp);
int cnt = ;
for(int i=; 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=; i<=*n; ++i){
if(i!=) cout<<" ";
cout<<b[i];
}
cout<<endl;
return ;
}
解题思路:
我们可以发现这样的一个规律:
(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<<-<<endl;
} else {
int k = a/b;
if(k&) ++k;
printf("%.12lf\n", (a+b)*1.0/k);
}
return ;
}
解题思路:如果某个数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 = ;
for(int i=; i<=n; ++i)
scanf("%I64d", &a[i]);
long long xk = (long long)(pow((double)x, (double)k) + 0.5);
for(int i=; i<=n; ++i){
pref[i] = pref[i-] | a[i];
suff[n-i+] = suff[n-i+] | a[n-i+];
} for(int i=; i<=n; ++i){
long long num = a[i]*xk | pref[i-] | suff[i+];
if(maxN < num)
maxN = num;
}
printf("%I64d\n", maxN);
return ;
}
codeforces Round #320 (Div. 2) C. A Problem about Polyline(数学) D. "Or" Game(暴力,数学)的更多相关文章
- Codeforces Round #367 (Div. 2) C. Hard problem
题目链接:Codeforces Round #367 (Div. 2) C. Hard problem 题意: 给你一些字符串,字符串可以倒置,如果要倒置,就会消耗vi的能量,问你花最少的能量将这些字 ...
- Codeforces Round #603 (Div. 2) A. Sweet Problem(水.......没做出来)+C题
Codeforces Round #603 (Div. 2) A. Sweet Problem A. Sweet Problem time limit per test 1 second memory ...
- Codeforces Round #367 (Div. 2) C. Hard problem(DP)
Hard problem 题目链接: http://codeforces.com/contest/706/problem/C Description Vasiliy is fond of solvin ...
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] C C Problem about Polyline 数学
C. A Problem about Polyline ...
- [Codeforces] Round #320 (Div.2)
1.前言 虽然这次我依旧没有参加正式比赛,但是事后还是看了看题目的...一般不怎么刷Codeforces. A.Raising Bacteria You are a lover of bacteria ...
- codeforces 578a//A Problem about Polyline// Codeforces Round #320 (Div. 1)
题意:一个等腰直角三角形一样的周期函数(只有x+轴),经过给定的点(a,b),并且半周期为X,使X尽量大,问X最大为多少? 如果a=b,结果就为b 如果a<b无解. 否则,b/(2*k*x-a) ...
- Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] A A Problem about Polyline(数学)
题目中给出的函数具有周期性,总可以移动到第一个周期内,当然,a<b则无解. 假设移动后在上升的那段,则有a-2*x*n=b,注意限制条件x≥b,n是整数,则n≤(a-b)/(2*b).满足条件的 ...
- Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] C. Weakness and Poorness 三分 dp
C. Weakness and Poorness Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] B. "Or" Game 线段树贪心
B. "Or" Game Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/578 ...
随机推荐
- bzoj1927最小费用最大流
其实本来打算做最小费用最大流的题目前先来点模板题的,,,结果看到这道题二话不说(之前打太多了)敲了一个dinic,快写完了发现不对 我当时就这表情→ =_=你TM逗我 刚要删突然感觉dinic的模 ...
- JavaScript解惑记之Array.prototype.sort()
前言 看JS红宝书的5.2.5章节关于sort()方法,如何用一个compare函数,让数组顺序,倒序,有点云里雾里的.在网上度娘了一下,发现更迷糊了.走投无路的情况下,只能发动神技能,去 stack ...
- 遍历datatable的方法
+方法一:DataTable dt = dataSet.Tables[0];for(int i = 0 ; i < dt.Rows.Count ; i++){string strName = d ...
- python pickle和json的区别
pickle可以在python之间进行交互 json可以实现python与不同开发语言的交互 pickle可以序列化python中的任何数据类型 json只能序列化python中的常归数据类型(列表等 ...
- SSHE框架整合(增删改查)
1.前期准备:jar包(c3p0.jdbc ,各个框架) web.xml文件:spring的 转码的,和Struts2的过滤器 <?xml version="1.0" e ...
- unity3d中获得物体的size
以size的x方向为例 1:gameObject.renderer.bounds.size.x;//这个值的结果真实反应出有MeshRenderer这个组件的模型的尺寸.不需要再乘以localScal ...
- Hbuilder开发HTML5 APP之向导页制作
研究了下,向导页的制作还是比较简单的,主要使用的是mui控件中的”图片轮播“组件,组件的标签写法手册中有,中间发现个有趣的东西,如果要作全屏,可以加个样式mui-fullscreen 滑动图片时会自动 ...
- MySQL 注册码
最近开发是用MySQL数据库,之前安装后,每次打开Navicat Premium 都提示 “试用一个月”,“ 注册”,然后为了方便,就都选择了 试用的, 一个月后,就必须的输入注册码,(还有一个是 什 ...
- 微软借力.NET开源跨平台支持,布局物联网平台开发
今天科技类最大的新闻,莫过于微软宣布.NET开发框架开源计划..NET 开源,集成 Clang 和 LLVM 并且自带 Android 模拟器,这意味着 Visual Studio 这个当下最好没有之 ...
- PostgreSQL 杂志
pgmag 团队刚发布了头两期 PostgreSQL 杂志,还有中文版http://pgmag.org/download,推荐广大 PostgreSQL 数据库管理员及开发者阅读: Issue #01 ...