HDU校赛 | 2019 Multi-University Training Contest 5
2019 Multi-University Training Contest 5
http://acm.hdu.edu.cn/contests/contest_show.php?cid=852
1004. Equation
把所有绝对值的零点排个序,然后解方程就好了。
#include<bits/stdc++.h>
using namespace std;
// #define int long long
void read(int &x) {
x=0;int f=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-f;
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';x*=f;
}
void print(int x) {
if(x<0) putchar('-'),x=-x;
if(!x) return ;print(x/10),putchar(x%10+48);
}
void write(int x) {if(!x) putchar('0');else print(x);putchar('\n');}
#define lf long double
#define pii pair<int,int >
#define vec vector<int >
#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define FOR(i,l,r) for(int i=l,i##_r=r;i<=i##_r;i++)
const int maxn = 1e6+10;
const int inf = 1e9;
const lf eps = 1e-10;
const int mod = 1e9+7;
struct data {int a,b;lf x;}a[maxn],sta[maxn];
int n,top;
int cmp(data a,data b) {return a.x<b.x;}
data make(int a,int b) {return (data){a,b,(lf)b/(lf)a};}
void solve() {
int c;
read(n),read(c);int suma=0,sumb=c;
for(int i=1;i<=n;i++) read(a[i].a),read(a[i].b),a[i].x=-(lf)a[i].b/a[i].a,suma-=a[i].a,sumb+=a[i].b;
sort(a+1,a+n+1,cmp);top=0;
if((lf)sumb/suma<a[1].x-eps) sta[++top]=make(suma,sumb);
a[n+1].x=2e9;
for(int i=1;i<=n;i++) {
suma+=a[i].a*2,sumb-=a[i].b*2;lf x;
if(suma==0) {
if(sumb==0) return puts("-1"),void();
continue;
}else x=(lf)sumb/suma;
if(a[i].x<=x&&x<=a[i+1].x) sta[++top]=make(suma,sumb);
}sort(sta+1,sta+top+1,cmp);
int ans=0;
for(int i=1;i<=top;i++) {
int &a=sta[i].a,&b=sta[i].b,f=1;
if(a<0) f=-f,a=-a;if(b<0) f=-f,b=-b;
if(b==0) {a=1;if(!(a==sta[i-1].a&&b==sta[i-1].b)) ans++;continue;}
int t=__gcd(a,b);a/=t,b/=t;
if(f==-1) b=-b;if(!(a==sta[i-1].a&&b==sta[i-1].b)) ans++;
}printf("%d%c",ans,ans?' ':'\n');
for(int i=1;i<=top;i++)
if(!(sta[i].a==sta[i-1].a&&sta[i].b==sta[i-1].b)) {
int a=sta[i].a,b=sta[i].b;
if(b==0) {printf("0/1%c",(--ans)?' ':'\n');continue;}
printf("%d/%d%c",b,a,(--ans)?' ':'\n');
}
}
signed main() {
int t;read(t);while(t--) solve();
return 0;
}
1007. Permutation 2
先考虑\(p_1=1,p_n=n\)怎么做,设\(f_n\)表示长度为\(n\)的方案数。
枚举最后几个数的放法,可以发现只有这么两种:
\(\cdots,n-1,n\)或者\(\cdots,n-3,n-1,n-2,n\),其他的要么不合法要么就可以归纳到这两种里面。
所以可以得到转移:\(f_n=f_{n-1}+f_{n-3}\)。
再考虑\(p_1=a,p_n=b\)怎么做,注意到\(1\sim a-1\)必然要遍历到,那么必然要先遍历这些,一开始的序列一定是形如:\(a,a-2,a-4\cdots 1,3 \cdots a-1,a+1\),后面同理。
所以可以看作是\(a+1\sim b-1\)随便填,其他的唯一确定。
中间的部分就是刚刚算出来的\(f\)。
#include<bits/stdc++.h>
using namespace std;
void read(int &x) {
x=0;int f=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-f;
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';x*=f;
}
void print(int x) {
if(x<0) putchar('-'),x=-x;
if(!x) return ;print(x/10),putchar(x%10+48);
}
void write(int x) {if(!x) putchar('0');else print(x);putchar('\n');}
#define lf double
#define pii pair<int,int >
#define vec vector<int >
#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define FOR(i,l,r) for(int i=l,i##_r=r;i<=i##_r;i++)
const int maxn = 1e6+10;
const int inf = 1e9;
const lf eps = 1e-8;
const int mod = 998244353;
int f[maxn];
void solve() {
int x,y,n,a,b;
read(n),read(x),read(y);
if(y-x==1&&x!=1&&y!=n) return puts("0"),void();
if(y-x<=2) return puts("1"),void();
if(x==1) a=1;else a=x+1;
if(y==n) b=n;else b=y-1;
write(f[b-a+1]);
}
int main() {
f[1]=1,f[2]=1,f[3]=1;
for(int i=4;i<maxn;i++) f[i]=(f[i-1]+f[i-3])%mod;
// for(int i=1;i<=20;i++) printf("%d %d\n",i,f[i]);;
int t;read(t);while(t--) solve();
return 0;
}
HDU校赛 | 2019 Multi-University Training Contest 5的更多相关文章
- HDU校赛 | 2019 Multi-University Training Contest 6
2019 Multi-University Training Contest 6 http://acm.hdu.edu.cn/contests/contest_show.php?cid=853 100 ...
- HDU校赛 | 2019 Multi-University Training Contest 4
2019 Multi-University Training Contest 4 http://acm.hdu.edu.cn/contests/contest_show.php?cid=851 100 ...
- HDU校赛 | 2019 Multi-University Training Contest 3
2019 Multi-University Training Contest 3 http://acm.hdu.edu.cn/contests/contest_show.php?cid=850 100 ...
- HDU校赛 | 2019 Multi-University Training Contest 2
2019 Multi-University Training Contest 2 http://acm.hdu.edu.cn/contests/contest_show.php?cid=849 100 ...
- HDU校赛 | 2019 Multi-University Training Contest 1
2019 Multi-University Training Contest 1 http://acm.hdu.edu.cn/contests/contest_show.php?cid=848 100 ...
- hdu 4930 Fighting the Landlords--2014 Multi-University Training Contest 6
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4930 Fighting the Landlords Time Limit: 2000/1000 MS ...
- HDU 6143 - Killer Names | 2017 Multi-University Training Contest 8
/* HDU 6143 - Killer Names [ DP ] | 2017 Multi-University Training Contest 8 题意: m个字母组成两个长为n的序列,两序列中 ...
- HDU 6074 - Phone Call | 2017 Multi-University Training Contest 4
看标程的代码这么短,看我的.... 难道是静态LCA模板太长了? /* HDU 6074 - Phone Call [ LCA,并查集 ] | 2017 Multi-University Traini ...
- HDU 6068 - Classic Quotation | 2017 Multi-University Training Contest 4
/* HDU 6068 - Classic Quotation [ KMP,DP ] | 2017 Multi-University Training Contest 4 题意: 给出两个字符串 S[ ...
随机推荐
- 选美?作秀?MES系统的选择更应该从实际出发
MES选型不是做秀,不是选美. 如今不少企业在信息化推广应用过程中面面求好.追求完美,用意没错,然而在MES开发过程中,软件商不可能将今后各种可能出现的问题考虑周全,不可能将系统做到十全十美.随着系统 ...
- 你家的APS系统有这些功能吗?排程系统功能盘点
随着企业规模不断扩大,在经营管理方面会面临各种各样的问题,为了帮助解决此类问题,很多公司都会引入APS高级排程系统帮助进行生产管理的优化. APS系统针对的管理目标是 改善库存控制,大幅降低原料与中间 ...
- nmap指令
-sP 主机发现 -p 端口扫描(可区域) -sV 端口(服务版本信息)-O 操作系统-iL 使用列表里的IP.(快捷方便)-iR 对公网上的随机n个IP.--excludeile ...
- js日期增加或减少一天
想自己写一个日期的加减方法,但是涉及到每个月天数的判断,如果是2月份的话,还要涉及到闰年的判断,有些复杂,其实只要调用Date对象的setDate()函数就可以了,具体方法如下: function a ...
- python抓取网站提示错误ssl.SSLCertVerificationError处理
python在抓取制定网站的错误提示:ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify ...
- 如何让ThinkPHP支持模糊搜索
最近ytkah在做一个ThinkPHP的项目时发现了一个问题,搜索的功能只能检索出以*为开头的内容,不能检索出中间的词.例如:搜索包含6775的产品,搜索结果为空,而搜索000-6775 就有两个结果 ...
- Kdevelop的C++断点调试设置
1. CMakeLists.txt 需要设置为 Debug 模式 示例 cmake_minimum_required(VERSION 2.8) Project (Eigen_test) include ...
- Python实现终端FTP文件传输
实现终端FTP文件传输 代码结构: .├── client.py├── readme.txt└── server.py 运行截图: readme.txt tftp文件服务器 项目功能: * 客户端有简 ...
- 【数位DP】【P2657】[SCOI2009]windy数
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为 \(2\) 的正整数被称为windy数. windy想知道, 在 \(A\) 和 \(B\) 之间,包括 ...
- 使用webpack.optimize.CommonsChunkPlugin提供公共代码
在webpack4里使用webpack.optimize.CommonsChunkPlugin时,报错,webpack4删除了常用的 CommonsChunkPlugin ,提示我们用config.o ...