cf B George and Round

题意:输入n,m,下一行为n个数a1<a2<a3......<an;然后再输入m个数b1<=b2<=b3<.....<=bm; 每个ai都必须在b中找到相等的数,找不到可以让比ai的大的数转化为ai,问最少需要添加几个数,使得ai在b都能找到相等的数。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5
 6 int n,m;
 7 int a[3010],b[3010];
 8 int vis[3010000];
 9 bool vis1[3000100];
10
11 int main()
12 {
13     while(scanf("%d%d",&n,&m)!=EOF)
14     {
15         memset(a,0,sizeof(a));
16         memset(b,0,sizeof(b));
17         for(int i=0; i<n; i++)
18         {
19             scanf("%d",&a[i]);
20         }
21         for(int j=0; j<m; j++)
22         {
23             scanf("%d",&b[j]);
24             vis[b[j]]++;
25         }
26         int ans=0;
27         for(int i=0; i<n; i++)
28         {
29             if(vis[a[i]]) {vis[a[i]]--; vis1[a[i]]=true;}
30         }
31         for(int i=0; i<n; i++)
32         {
33            if(!vis[a[i]]&&!vis1[a[i]])
34            {
35                bool flag=false;
36                for(int j=0; j<m; j++)
37                {
38                    if(b[j]<a[i]) continue;
39                    if(vis[b[j]]==0) continue;
40                    vis[b[j]]--;
41                    flag=true;
42                    break;
43                }
44                if(!flag) ans++;
45            }
46         }
47         printf("%d\n",ans);
48     }
49     return 0;
50 }

时间: 2024-10-13 03:14:58

cf B George and Round的相关文章

贪心-Code forces -387B -George and Round

Code forces -387B -George and Round description George decided to prepare a Codesecrof round, so he has prepared m problems for the round. Let's number the problems with integers 1 through m. George estimates the i-th problem's complexity by integer 

CF 2B The least round way DP+Math

题意: 找出一条路, 使每个节点相乘,得到的数末尾 0 最少 每次移动只能向右或者向下, 找到后打印路径 ///按照题目要求,就是找出一条从左上角到右下角中每个数含2 or 5 最少的路 ///可以用Dp的思想, 然后把每个节点该走的方向记下来 ///再从终点回溯,把路径存入栈,再输出 ///数据会有0的情况, 这时候我们应该记录离终点最近的0 #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef

cf D George and Interesting Graph

题意:给你一个有趣图的定义:在这个图中有一个根,根与每个点都有边和回边,除了根之外,其他的点的出度和入度都为2,然后给你一个图让你经过几步操作可以使此图变为有趣图,操作为:删边或者加边. 思路:枚举根,然后删除与根有关的边,重新建图,用二分图求最大匹配,可以用匈牙利算法,加的边数:满足题中有关根的加边数+(点数-匹配数),删掉的边数:边数-满足题中有关根的使用的边数-匹配时使用的边数. 1 #include <cstdio> 2 #include <cstring> 3 #incl

CF #CROC 2016 - Elimination Round D. Robot Rapping Results Report 二分+拓扑排序

题目链接:http://codeforces.com/contest/655/problem/D 大意是给若干对偏序,问最少需要前多少对关系,可以确定所有的大小关系. 解法是二分答案,利用拓扑排序看是否所有关系被唯一确定.即任意一次只能有1个元素入度为0入队. 1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <string> 5 #include <

cf C. George and Number

http://codeforces.com/problemset/problem/387/C 题意:给你一个大数,让你求个集合,可以通过操作得到这个数,求集合中个数最大值,操作 :从集合中任意取两个数,大的数放在前面小的数放在后面组成一个数在重新放入集合中,经过重复的操作,集合中只剩一个数,这个数就是给你的数. 思路:要求个数最大,可以让这个大数的每一个数字为集合中的一个数,但是集合中不能有0,所以在连续的0前面要连着一个非零的数. 1 #include <cstdio> 2 #include

cf B George and Cards

题意:给你一个只有‘.’和'#'的n*n的格子,问所有的'#'是不是只属于一个十字叉,如果不是输出NO,否则输出YES. 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 int n; 7 char g[200][200]; 8 bool vis[200][200]; 9 10 int main() 11 { 12 scanf("

题解 CF387B 【George and Round】

题目大家都理解清楚了吧 其实就是尽量多用已有的题,就要求对自己的题按复杂度由低到高排序,从头到尾遍历,用贪心.排序为了便于比较.然后就是只要普通的遍历枚举就可以辣~ #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <cctype> #include <vector>

小结:暴力

概要: 所谓大力出奇迹. 技巧及注意: 技巧太多..否则为嘛出暴力题给你.. 在一次cf比赛中Codeforces Round #266 (Div. 2),A.B题都是暴力QAQ,表示我是蒟蒻..然后赛后膜拜了tourist的大腿,原来是暴力. 总结起来就是,在只有2种互相约束(或许更多?)的答案时,我们可以枚举其中一个,然后用和或者啥的得出另一个,然后更新即可. 还有就是可以以某种情况下根据约束直接推出其它状态,然后暴力枚举第一种情况即可,例如:[BZOJ]1647: [Usaco2007 O

Codeforces Round #267 (Div. 2) C. George and Job(DP)补题

Codeforces Round #267 (Div. 2) C. George and Job题目链接请点击~ The new ITone 6 has been released recently and George got really keen to buy it. Unfortunately, he didn't have enough money, so George was going to work as a programmer. Now he faced the follow