EOJ Mouthly 2018.4

阅读: 评论:0

EOJ Mouthly 2018.4

EOJ Mouthly 2018.4

A. ultmaster 的小迷妹们

Time limit per test: 2.0 seconds

Memory limit: 256 megabytes

ultmaster 男神和他的小迷妹们准备躺在图书馆前大草坪享受惬意的午后。

有强迫症的 ultmaster 想要使得自己和小迷妹们正好躺成一块完整的正方形,ultmaster 想知道能否挑出一些小迷妹(至少一个)实现他的愿望。

已知 ultmaster 的形状 n×n 的正方形,小迷妹的形状为 x×y 的长方形(可以横着或者竖着躺)。若能够则输出Yes 否则输出 No

P.S. ultmaster 是正方形因为他比较肥。

Input

第一行三个整数 n,x,y (1≤n,x,y≤109) 分别表示描述中的 n,x,y。

Output

输出一行字符串,Yes 或 No 表示 ultmaster 能否实现他的愿望。

Examples

input
1 1 2
output
Yes
input
1 2 2
output
No

Note

样例一:可以构成 3×3 的正方形。


题解:

对于这个题解怎么理解呢:给出题解

考虑小正方形所在列,一定不能被gcd整除,小正方形所不在列,一定能被gcd整除,所以一定不能拼成大正方形。
如果能被gcd整除,则由扩展欧几里得一定存在ax−by=n,因此可以构成n×n在中间,四个ax×by在周围的正方形

代码就很简单了

#include<bits/stdc++.h>
using namespace std;int main()
{int n,x,y;while(~scanf("%d%d%d",&n,&x,&y)){int gcd = __gcd(x,y);if(n % gcd == 0) printf("Yesn");else printf("Non");}return 0;
}
B. 代码查重

Time limit per test: 2.0 seconds

Memory limit: 256 megabytes

一场 EOJ 月赛中在小迷妹们的合作之下她们 AC 了所有题目。

拥有 EOJ 管理员权限的 ultmaster 男神理所当然地抄袭了小迷妹们的代码,并修改了部分代码。ultmaster 男神想知道他的代码是否会被查重,若会被查重则输出 Yes 否则输出 No。由于 EOJ 查重系统比较弱智,所以两份代码会被查重的充要条件是,每行代码对应的哈希值都完全同义。

注:同义关系满足自反性,对称性,但不满足传递性。

  • 自反性:对于任意 x 同义于 x。
  • 对称性:对于任意 x,y,如果 x 同义于 y,则 y 同义于 x。
  • 传递性:对于任意 x,y,z,如果 x 同义于 y,y 同义于 z,则 x 同义于 z。

Input

第一行三个整数 n,m,k (1≤n,m,k≤105) 分别表示小迷妹们的代码行数,ultmaster 代码长度,EOJ 查重系统默认的同义关系个数。

第二行 n 个整数 a1,a2,…,an (1≤ai≤109),表示小迷妹们代码每行的哈希值。

第三行 m 个整数 b1,b2,…,bm (1≤bi≤109),表示 ultmaster 代码每行的哈希值。

接下去 k 行,每行两个整数 x,y (1≤x,y≤109),表示哈希值为 x 和 哈希值为 y 同义。同一对 x,y 可能重复出现。

Output

输出一行字符串,Yes 或 No 表示 ultmaster 男神的代码是否会被查重。

Examples

input
1 1 2
1
3
1 2
2 3
output
No
input
2 2 1
1 1
2 2
1 2
output
Yes
题解:

直接用set存储加判断就好

注意两个坑点:1.长度可能不同(因为题意被坑的深感歉意)。2.自反性意味着两个完全相同的同义。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
map<int,int> ID;
vector<int> store;
int ult[maxn],mim[maxn];
int getID(int str) {if(ID.find(str) == ID.end()){store.push_back(str);ID[str] = store.size() - 1;}return ID[str];
}
void init() {ID.clear();store.clear();
}
set<int> way[maxn];
int main()
{int n,m,k;while(~scanf("%d%d%d",&n,&m,&k)){for(int i=0;i<maxn;i++) way[i].clear();init();for(int i=0;i<n;i++) {scanf("%d",&ult[i]);getID(ult[i]);}for(int i=0;i<m;i++) {scanf("%d",&mim[i]);getID(mim[i]);}for(int i=0,u,v;i<k;i++) {scanf("%d%d",&u,&v);int x = getID(u),y = getID(v);way[x].insert(y);way[y].insert(x);}bool flag = true;for(int i=0;i<n&&i<m;i++) {int x = getID(ult[i]),y = getID(mim[i]);if( way[x].count(y) == 0 && x != y  && way[y].count(x) == 0) {flag = false;break;}}if(n != m) flag = false;if(flag) printf("Yesn");else printf("Non");}return 0;
}
E. 小迷妹在哪儿

Time limit per test: 2.0 seconds

Memory limit: 256 megabytes

ultmaster 男神和小迷妹们玩起了捉迷藏的游戏。

小迷妹们都希望自己被 ultmaster 男神发现,因此她们都把自己位置告诉了 ultmaster 男神,因此 ultmaster 男神知道了自己去找每个小迷妹所要花的时间。

已知发现第 i 小迷妹得到的分数为 ai⋅tr(tr 为游戏剩余时间)。ultmaster 想知道他最多能拿多少分。

Input

第一行两个整数 n,T (1≤n≤105,1≤T≤300) 分别表示小迷妹数量,游戏总时间。

接下去 n 行,每行两个整数 ai,ti (1≤ai≤100,1≤ti≤300) 分别表示发现小迷妹的分数以及 ultmaster 男神发现小迷妹所需时间。

Output

一个整数,表示 ultmaster 在游戏中最多拿多少分。

Examples

input
2 10
2 5
1 6
output
10
input
3 5
5 4
1 1
10 6
output
5

Note

样例一:找到小迷妹一,找到后得分 2×(10−5)=10 分。
样例二:找到小迷妹一,找到后得分 5×(5−4)=5 分,之后再找到小迷妹二得分也是 0,所以最高得分 5 分。


题解:表示这题山东省赛有出过类似的...貌似还更难:有兴趣可以看看 地址

尽可能先找到性价比高的小迷妹,所以按性价比排个序,然后就是个裸的背包。
证明:交换任意两个小迷妹的顺序可以列不等式证明性价比高的先找更优。

ps:原来想研究cf赛制应该先做难题还是简单题。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
struct Mim {int a,t;
}mim[maxn];
bool cmp(const Mim &aa,const Mim &bb) {return aa.a * bb.t > aa.t * bb.a;
}
int dp[maxn];
int main()
{int n,T;while(~scanf("%d%d",&n,&T)){for(int i=1;i<=n;i++)scanf("%d%d",&mim[i].a,&mim[i].t);sort(mim+1,mim+1+n,cmp);dp[0] = 0;int ans = 0;for(int i=1;i<=n;i++) {for(int j=0;j<=T;j++)if(j >= mim[i].t) {dp[j - mim[i].t] = max(dp[j-mim[i].t],dp[j] + mim[i].a * (j-mim[i].t));ans = max(ans,dp[j-mim[i].t]);}}printf("%dn",ans);}return 0;
}

本文发布于:2024-02-04 00:13:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170698322352009.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:EOJ   Mouthly
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23