杭电多校 hdu6627 equation
http://acm.hdu.edu.cn/showproblem.php?pid=6627
题意:解绝对值方程并统计解的个数。
解法:签到题,直接模拟小学数学学的零点分段法即可。(数据多直接cin,cout会T,还以为是算法有问题...
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5+;
ll s1[maxn],s2[maxn]; struct node{
ll a,b;
double s;
}g[maxn]; bool cmp(node p,node q){
return p.s>q.s;
} struct note{
ll x,y;
double s;
}v[maxn]; bool cmp1(note p1,note q1){
return p1.s<q1.s;
} map<double,int> ma; int main(){
ios::sync_with_stdio();
cin.tie();
cout.tie();
int t;
cin>>t;
ll n,c;
while(t--){
int cnt = ;
ma.clear();
cin>>n>>c;
for(ll i=;i<=n;i++){
cin>>g[i].a>>g[i].b;
g[i].s = -1.0*g[i].b/g[i].a;
}
sort(g+,g+n+,cmp);
s1[] = ; s2[] = ;
for(ll i=;i<=n;i++){
s1[i] = s1[i-]+g[i].a;
s2[i] = s2[i-]+g[i].b;
}
int flag = ;
for(ll i=;i<=n;i++){
ll a1 = s1[n]-*s1[i];
ll a2 = s2[n]-*s2[i];
ll s = c-a2; //a1*x=s
if(a1==&&s==){
flag = ;
break;
}
else if(a1==){
continue;
}
else {
ll num1 = abs(s);
ll num2 = abs(a1);
ll gcd = __gcd(num1,num2);
double ss = (double)s/a1;
if((i==n||ss>g[i+].s)&&(i==||ss<=g[i].s)){
if(ma[ss]==){
ma[ss]++;
v[cnt].x = s/gcd;
v[cnt].y = a1/gcd;
v[cnt].s = ss;
cnt++;
}
}
}
}
if(flag==){
cout<<-<<endl;
}
else{
cout<<cnt;
sort(v,v+cnt,cmp1);
for(ll i=;i<cnt;i++){
if(v[i].x*v[i].y>){
cout<<' '<<abs(v[i].x)<<'/'<<abs(v[i].y);
}
else if(v[i].x*v[i].y==){
cout<<' '<<"0/1";
}
else {
cout<<" -"<<abs(v[i].x)<<'/'<<abs(v[i].y);
}
}
cout<<endl;
}
}
return ;
}
杭电多校 hdu6627 equation的更多相关文章
- 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)
以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...
- 2018 Multi-University Training Contest 1 杭电多校第一场
抱着可能杭电的多校1比牛客的多校1更恐怖的想法 看到三道签到题 幸福的都快哭出来了好吗 1001 Maximum Multiple(hdoj 6298) 链接:http://acm.hdu.edu. ...
- 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)
咕咕咕了太久 多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...
- 2018 Multi-University Training Contest 2 杭电多校第二场
开始逐渐习惯被多校虐orz 菜是原罪 1004 Game (hdoj 6312) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6312 虽然披着 ...
- 2019杭电多校&CCPC网络赛&大一总结
多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...
- HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第 ...
- HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 解题报告:输入一个序列,然后有q次操作,操作有两种,第一种是把区间 (l,r) 变成x,第二种是 ...
- HDU 5831 Rikka with Parenthesis II (贪心) -2016杭电多校联合第8场
题目:传送门. 题意:T组数据,每组给定一个长度n,随后给定一个长度为n的字符串,字符串只包含'('或')',随后交换其中两个位置,必须交换一次也只能交换一次,问能否构成一个合法的括号匹配,就是()( ...
- HDU 5821 Ball (贪心排序) -2016杭电多校联合第8场
题目:传送门. 题意:T组数据,每组给定一个n一个m,在给定两个长度为n的数组a和b,再给定m次操作,每次给定l和r,每次可以把[l,r]的数进行任意调换位置,问能否在转换后使得a数组变成b数组. 题 ...
随机推荐
- 整理github总结
之前记述过两篇关于git命令的随笔,那时候对git的理解还不太深(虽然现在理解的也不是很多...菜哭了),只会用那些命令,并没有形成自己的知识,今天下载完Git之后,规整了一下自己的github,在吃 ...
- 安装使用xen虚拟化工具
换了一家新公司,需要拿出一套虚拟化方案,就把业界的主流虚拟化技术划拉了一遍,给领导交了一份报告,具体的技术部分已经在之前的随笔里了,本篇文章主要介绍的是xen虚拟化工具的安装: Xen官方部署文档:h ...
- LinkedList源码分析(jdk1.8)
LinkedList概述 LinkedList 是 Java 集合框架中一个重要的实现,我们先简述一下LinkedList的一些特点: LinkedList底层采用的双向链表结构: LinkedL ...
- 使用jvisualvm.exe工具远程监视tomcat的线程运行状态
一.简述 在web项目中,常使用tomcat作为web容器.代码编写的时候,由于业务需要,也常会使用线程机制.在系统运行一段时间之后,若出现响应慢或线程之间出现死锁的情况,要查出问题所在,需要使用jd ...
- C#的委托事件总结
什么是委托?1.委托是C#中由用户自定义的一个类型.2.类表示的是数据和方法的集合,而委托实际上是一个能持有对某个或某些方法的引用的类.3.与其他的类不同,委托类能拥有一个签名,并且他只能持有与他的签 ...
- Python3基本数据类型之列表
1.初识列表 列表(List)是Python3中的"容器型"数据类型. 列表通过中括号把一堆数据括起来的方式形成,列表的长度不限. 列表里面的元素可以是不同的数据类型,但是一般是相 ...
- Node.js爬虫实战 - 爬你喜欢的
前言 今天没有什么前言,就是想分享些关于爬虫的技术,任性.来吧,各位客官,里边请... 开篇第一问:爬虫是什么嘞? 首先咱们说哈,爬虫不是"虫子",姑凉们不要害怕. 爬虫 - 一种 ...
- CMake入门-02-HelloWorld扩展
工作环境 系统:macOS Mojave 10.14.6 CMake: Version 3.15.0-rc4 Hello,World! 扩展-同一目录,多个源文件 (1) 新建 hello 目录,创建 ...
- 链表:如何实现LRU缓存淘汰算法?
缓存淘汰策略: FIFO:先入先出策略 LFU:最少使用策略 LRU:最近最少使用策略 链表的数据结构: 可以看到,数组需要连续的内存空间,当内存空间充足但不连续时,也会申请失败触发GC,链表则可 ...
- S3C2440 移植最新5.2linux内核
基于 移植uboot后. 1. 移植linux内核 1.1 下载源码 打开 https://www.kernel.org/ 直接肝最新的 5.2.8 下载完后,在ubuntu里解压备用. 1.2 搭建 ...