codeforces #275 div2题解
A题大意:
给你l,r,问你在l~r之间,是否存在 a和b互质 , b和c互质 ,但是 a,c不互质 的情况;其中l<=a<b<c<=r;如果存在,就输出a,b,c;不存在就输出-1;
其中(1 ≤ l ≤ r ≤ 1018; r - l ≤ 50).
- -r-l<=50,这么水我也是醉了,开个longlong , 枚举他们是否满足以上要求即可,顺便复习了一下辗转相除;
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
long long l,r;
int gcd(long long a,long long b){
if(b==0) return a;
else return gcd(b,a%b);
}
int main(){
cin>>l>>r;
for(long long i=l;i<=r;i++)
for(long long j=i+1;j<=r;j++)
for(long long k=j+1;k<=r;k++){
if(i!=j && i!=k && j!=k){
if(gcd(j,i)==1 && gcd(k,j)==1 && gcd(k,i)!=1){
cout<<i<<" "<<j<<" "<<k;
return 0;
}
}
}
cout<<"-1";
return 0;
}
B题大意:
你给第一个朋友cnt1个数,给第二个朋友cnt2个数,在给第一个朋友的数不可以被x整除,给第二个朋友的数不可以被y整除,如果某个数既不能被x整除也不能被y整除,那么它不能同时出现在两个朋友的数里
然后你得在1.2.3.....n中选出符合要求的cn1个数和cnt2个数,问你最小的n为多少?
感觉这套的B题好坑啊- -(其实是自己弱....)
刚开始以为枚举就好了,B题嘛反正,然后还是超时了;之后觉得那就优化一下暴力好了- -结果还是不行;
后面想到利用余数,例如 x个数里,可以有x-1不被x整除的数之类的,但是处理出来的答案还是会有偏差
然后实在没有办法了!就看了别人的代码!- - 妈蛋...自己都想到用余数了都,还不知道要二分答案!我个傻逼....
以上是我的傻逼的思考过程,- -说说这一题的正确思路,就是常规的二分答案;
如果验证是否可行呢?(方法有很多,这里说一下我的思路)
pp为二分的那个数:
__int64 qq = (pp - pp/x - pp/y + pp/(x*y));//符合要求的cnt1+cnt2,注意这里是+pp/(x*y),因为除以x和除以y,所以扣掉的个数有重复的地方;
int cont1 = max(0, (int)(a-(pp/y-pp/(x*y))));//
int cont2 = max(0, (int)(b-(pp/x-pp/(x*y))));
if(qq >= cont1+cont2)
return 1;
return 0;
附上代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int a, b, x, y;
int judge(long long pp){
__int64 qq = (pp - pp/x - pp/y + pp/(x*y));
int cont1 = max(0, (int)(a-(pp/y-pp/(x*y))));
int cont2 = max(0, (int)(b-(pp/x-pp/(x*y))));
if(qq >= cont1+cont2)
return 1;
return 0; }
long long solve(long long l, long long r){
__int64 res;
while(l <= r){
__int64 mid = (l+r) / 2;
if(judge(mid)){
res = mid;
r = mid - 1;
}
else
l = mid + 1;
}
return res;
}
int main(){
while(scanf("%d%d%d%d", &a, &b, &x, &y) == 4){
long long ans = solve(1, (a+b)*2+1);
printf("%I64d\n", ans);
}
return 0;
}
C题大意:
给你一个数列1.2.3...n,让你交换这个数列中的数,使得相邻两个数相减得出的数有k个是不同的,让你输出你交换后满足题意的数列;
- -感觉是见过最傻逼的C题,大概就是贪心的思想吧。
你从头尾开始枚举,交换枚举的之后,他们的差值肯定都不相同。之后乱搞一下就可以了,你可以交换枚举k-2次,然后按顺序输出;反正方法很多,乱搞搞就过了;
附上代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int main(){
int n,k,j=1;
cin>>n>>k;
int temp1=1,temp2=n;
for(int i=1;i<=n;i++){
if(j%2){
cout<<temp1<<" ";temp1++;
}
else {
cout<<temp2<<" ";temp2--;
}
if(j!=k) j++;
}
return 0;
}
D题线段树...不会,只剩几天了,觉得没有学习的必要
codeforces #275 div2题解的更多相关文章
- Codeforces ECR50 div2题解
A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...
- Codeforces 1323 div2题解ABC
A. Even Subset Sum Problem 签到题 #include <bits/stdc++.h> using namespace std; template <type ...
- Codeforces Round #707 Editorial Div2 题解
CF1501 Div2 题解 CF1501A 这道题其实是一道英语阅读题,然后样例解释又不清晰,所以我看了好久,首先它告诉了你每个站点的预期到达时间 \(a_i\) ,以及每个站点的预期出发时间 \( ...
- Codeforces #541 (Div2) - E. String Multiplication(动态规划)
Problem Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...
- Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)
Problem Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...
- Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)
Problem Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...
- Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
- Codeforces #180 div2 C Parity Game
// Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...
- Codeforces Round #556 题解
Codeforces Round #556 题解 Div.2 A Stock Arbitraging 傻逼题 Div.2 B Tiling Challenge 傻逼题 Div.1 A Prefix S ...
随机推荐
- PS多形式的部分之间复制“笨办法”
PS剪切页面,有时候你可能会遇到这样的情况:设计改进,但是,我们要具有相同的切片. 在此假设,可以直接用于切割片.我们可以节省大量的时间,又分为片. 但是,人们一般不会在你的上跨片设计PSD在变化,但 ...
- C++内存分配和拷贝构造函数写研究
昨晚参加笔试,开错题,有印象中的概念,但目前尚不清楚是怎么回事,什么原理,导致错误的话题.现在总结. 一.C++写内存分配研究 问题考察例如以下,请先不要看答案,看看你是否能做对,呵呵: waterm ...
- Ajax.BeginForm的异步提交数据 简介
Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步 ...
- Flex自定义组件开发之日周月日期选择日历控件
原文:Flex自定义组件开发之日周月日期选择日历控件 使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的 ...
- Net下无敌的ORM
Dapper ORM 用法—Net下无敌的ORM http://www.renfb.com/blog/2011/Article/335 假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你一定会喜欢上 ...
- Ubuntu14.04安装一个小问题,搜狗输入法
罕见的搜狗输入法支持ubuntu.尝试了决定性下载. 官方网站:http://pinyin.sogou.com/linux/ 官网教程:http://pinyin.sogou.com/linux/he ...
- Log4j2 简明教程
一.概述 log4j2官方文档内容非常多,要一次性了解全部是不可能的.正确的步骤应当是先了解最常见的配置,当发现原有知识无法解决问题,再重新查看文档看有没有合适的配置.下面将从文件结构入手,再到简单的 ...
- [LeetCode]N-Queens 八皇后问题扩展(经典深层搜索)
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...
- PHP和MySQL Web开发 原书第4版 高清文字版,有目录,附带源码
PHP和MySQL Web开发 原书第4版:http://yunpan.cn/QCWIS25zmYTAn 提取码 fd9b PHP和MySQL Web开发 原书第4版源码:http://yunp ...
- HBase文件格式演变之路
Apache HBase是Hadoop的分布式开源的存储管理工具,很适合随机实时的io操作. 我们知道,Hadoop的Sequence File是一个顺序读写,批量处理的系统.可是为什么HBase能做 ...