UVALive 6763 / CSU 1446
今天比赛的时候拿到的第一道题,其实挺简单的,求两等差序列中相同元素的个数,我想了一下就觉得,只要找到了第一个相等的点,然后后面求最大公约数就可以直接得到结果了
网上叫什么拓展欧几里得,我反正是按照我们的思路来的
关键是如何找到第一个相等的点,因为首项和公差能达到 10^9,项数可以达到10^18,我觉得会不会第一个相等的点就直接爆了long long,不过在跟聪哥统一了一下意见之后,决定试一下,即先暴力找到第一个相等的点。。。
最后WA了。。。因为时间也不多了,而且我担心WA是不是因为我们相等的点已经爆了 unsighed long long 了。。。没想到是我代码写挫了,就是前期找第一个相等的点的时候写挫了。。次奥,这个题没在比赛的时候出了,全部责任在我。,。。。
我前期处理有点乱,其实就写个while(1)循环,唯一出口就是两个相等的时候,我还判断些什么取模是否相等,真是乱,哎
事实证明只要前期处理的好,就基本上没问题了
还有,其实觉得会爆的不如去做一做,最后其实结果可能就是你想的这样
#include <iostream>
#include <cstdio>
#include <cstring>
#define ll unsigned long long
using namespace std;
struct node
{
ll n,f,d;
}s[];
ll gcd(ll a,ll b)
{
if (a<b) swap(a,b);
return b==?a:gcd(b,a%b);
}
int main()
{
int t;
scanf("%d",&t);
while (t--){
scanf("%llu%llu%llu",&s[].n,&s[].f,&s[].d);
scanf("%llu%llu%llu",&s[].n,&s[].f,&s[].d);
ll sum=;
ll q1=s[].f,q2=s[].f;
while (){ //前期处理得到第一个相等的数
if (q1==q2){sum=q1;break;}
if (q1<q2){
ll tmp=(q2-q1)/s[].d;
if (tmp==) tmp=;
q1+=tmp*s[].d;
if (q1<q2) q1+=s[].d;
}
else{
ll tmp=(q1-q2)/s[].d;
if (tmp==) tmp=;
q2+=tmp*s[].d;
if (q2<q1) q2+=s[].d;
}
}
ll ans;
ll num=gcd(s[].d,s[].d); //后期比较得到最多的相同的元素,最后要用min比较而不是max是因为要找到满足两个序列都有的最多的元素,不是单独一个序列最多就可以的
ll dis=(sum-s[].f)/s[].d+;
dis=s[].n-dis;
ans=dis/(s[].d/num)+; dis=(sum-s[].f)/s[].d+;
dis=s[].n-dis;
ans=min(ans,(dis/(s[].d/num))+);
printf("%llu\n",ans);
}
return ;
}
UVALive 6763 / CSU 1446的更多相关文章
- CSU 1446 Modified LCS 扩展欧几里得
要死了,这个题竟然做了两天……各种奇葩的错误…… HNU的12831也是这个题. 题意: 给你两个等差数列,求这两个数列的公共元素的数量. 每个数列按照以下格式给出: N F D(分别表示每个数列的长 ...
- UVAlive 6763 Modified LCS
LCS stands for longest common subsequence, and it is a well known problem. A sequence in thisproblem ...
- coderforces Gym 100803A/Aizu 1345/CSU 1536/UVALive 6832 Bit String Reordering(贪心证明缺)
Portal: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1345 http://codeforces.com/gym/100 ...
- UVALive - 4108 SKYLINE[线段树]
UVALive - 4108 SKYLINE Time Limit: 3000MS 64bit IO Format: %lld & %llu Submit Status uDebug ...
- UVALive - 3942 Remember the Word[树状数组]
UVALive - 3942 Remember the Word A potentiometer, or potmeter for short, is an electronic device wit ...
- UVALive - 3942 Remember the Word[Trie DP]
UVALive - 3942 Remember the Word Neal is very curious about combinatorial problems, and now here com ...
- csu 1812: 三角形和矩形 凸包
传送门:csu 1812: 三角形和矩形 思路:首先,求出三角形的在矩形区域的顶点,矩形在三角形区域的顶点.然后求出所有的交点.这些点构成一个凸包,求凸包面积就OK了. /************** ...
- CSU 1503 点到圆弧的距离(2014湖南省程序设计竞赛A题)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 解题报告:分两种情况就可以了,第一种是那个点跟圆心的连线在那段扇形的圆弧范围内,这 ...
- CSU 1120 病毒(DP)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1120 解题报告:dp,用一个串去更新另一个串,递推方程是: if(b[i] > a ...
随机推荐
- poj2236 Wireless Network(并查集直接套模板
题目地址:http://poj.org/problem?id=2236 题目大意:n台电脑都坏了,只有距离小于d且被修好的电脑才可以互相联系,联系可传递.输入n和d,n个点的坐标x y.两个操作:O ...
- 什么叫github
git remote add origin https://github.com/huiwangui/git-demo.git:表示在本地仓库关联远程仓库(https://github.com/hui ...
- 十九 Listener
Listener 监听器 一 监听器内部原理:其实就是接口回调 需求:A在执行循环,当循环到5的时候,通知B 事先先把某一个对象传递给A ,当A执行到5的时候,通过这个对象来调用B中的方法 但是不是直 ...
- NPM概述及使用简介
什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP. npm是Node官方提供的包管理工具,他已经成了Node包的标准发布平台,用于Node ...
- liunx命令用到的
su:切换成root用户 sudo su:普通用户申请root权限 ping命令可以检查linux是否联网 ping www.baidu.com 如图就是联网了 结束ping包括其他linux的指令 ...
- Ubuntu操作系统编译安装zabbix报错汇总
Ubuntu操作系统编译安装zabbix报错汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.报错提示:"configure: error: MySQL libra ...
- ubnutu18.4 修改交换分区大小
ubuntu18.04默认的swap文件在根目录/下,名字是swapfile 1.查看交换分区大小 也可以使用系统监视器查看 free -m 2.创建一个swap文件 :大小为8g count= 3 ...
- Http与Https协议规范
HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...
- [CodeForces]1263A Sweet Problem
题目链接 题目描述 You have three piles of candies: red, green and blue candies: the first pile contains only ...
- Java小项目之:教你做个聊天系统!
Java小项目之:聊天系统 今天给大家带来的java练手小项目是一个简单的聊天室,界面简单,操作不难. 分为注册系统,登录系统和聊天系统三部分,很适合java小白练手. 完整的源码和素材请关注并私信我 ...