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的更多相关文章

  1. 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 ...

  2. 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 ...

  3. 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 ...

  4. 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 ...

  5. 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 ...

  6. 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 ...

  7. HDU 6143 - Killer Names | 2017 Multi-University Training Contest 8

    /* HDU 6143 - Killer Names [ DP ] | 2017 Multi-University Training Contest 8 题意: m个字母组成两个长为n的序列,两序列中 ...

  8. HDU 6074 - Phone Call | 2017 Multi-University Training Contest 4

    看标程的代码这么短,看我的.... 难道是静态LCA模板太长了? /* HDU 6074 - Phone Call [ LCA,并查集 ] | 2017 Multi-University Traini ...

  9. HDU 6068 - Classic Quotation | 2017 Multi-University Training Contest 4

    /* HDU 6068 - Classic Quotation [ KMP,DP ] | 2017 Multi-University Training Contest 4 题意: 给出两个字符串 S[ ...

随机推荐

  1. Qt中QWidget、QDialog和QMainWindow

    QWidget 类是所有用户界面对象的基类.只有一个"页面" QMainWindow 是一个"窗口".含有菜单栏.状态栏.工具栏.停靠窗口.中心窗口 QDial ...

  2. kubernetes学习Service之headless和statefulSet结合

    一.首先说headless Service和普通Service的区别 headless不分配clusterIP headless service可以通过解析service的DNS,返回所有Pod的地址 ...

  3. JS数据打印的几种方式

    /** * 在页面输出内容! */ document.write("This's Great!"); /** * 控制台打印: */ console.log("This ...

  4. Django框架(三)-- orm增删改查、Django生命周期

    一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...

  5. windows server 2012配置php环境教程

    买了windows系统的服务器(VPS)等之后我们需要一个php环境来搭建自己的项目,这里介绍手工在windows server 2012上面配置php环境的具体步骤,适合使用服务器和VPS等的新手. ...

  6. Linux的rpm管理

                            书山有路勤为径,学海无涯苦作舟 自学linux已经有几天了,感觉还可以.坚持下去,就会有收获. 每个系统都用相应的软件的管理,Linux也不例外.下面讲 ...

  7. Idea如何快速生成Junit测试类

    测试是保证代码必不可少的环节,自己构建测试方法太慢,并且命名也不规范,idea中提供了,一键构建测试结构的功能... 2.步骤 1.在需要做测试的类的当前窗口,直接按快捷键:按ctrl+shift+t ...

  8. python 基础笔记-函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段·. 好处为: 一可以把程序中相对独立的功能模块抽取出来,减少重读代码的编写: 二是将来可以以重复的使用这些功能模块    定义一个函数 ...

  9. JAVA web 框架集合

    “框架”犹如滔滔江水连绵不绝, 知道有它就好,先掌握自己工作和主流的框架: 在研究好用和新框架. 主流框架教程分享在Java帮帮-免费资源网 其他教程需要时间制作,会陆续分享!!! 152款框架,你还 ...

  10. MacOS更改启动台(launchpad)图标大小

    原文链接:https://www.jianshu.com/p/18224d191bd2作者:麦壳君 小麦有点强迫症,觉得 Mac 启动台(Launchpad)里面系统默认的应用程序图标太大,所以想让它 ...