做codeforces以来题目最水的一次

A题:

Fox and Number Game

题意:就是用一堆数字来回减,直到减到最小值为止,再把所有最小值加,求这个值

sol: 简单数论题目,直接求所有数字的最大公约数即可

ps: 以前cf出过这道题目啊,出题人没救了 5分钟300人过

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cstring>
 4 using namespace std;
 5 const int MAX = ;
 6 int num[MAX];
 7 int gcd(int a,int b)
 8 {
 9     return b==? a : gcd(b,a%b);
 }
 int main()
 {
     int n;
     while(scanf("%d",&n)>)
     {
         for(int i=;i<n;i++) scanf("%d",&num[i]);
         int ans=num[];
         for(int i=;i<n;i++)
         {
             ans=gcd(ans,num[i]);
         }
         printf("%d\n",ans*n);
     }
     return ;    

25 }

B题

Fox and Cross

题意:求网格中的‘#’是不是全部恰好属于某一个红十字

sol:直接模拟即可

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cstring>
 4 using namespace std;
 5 const int MAX = ;
 6 char map[MAX][MAX];
 7 int vis[MAX][MAX];
 8 int main()
 9 {
     int n;
     while(scanf("%d",&n)>)
     {
         memset(vis,,sizeof(vis));
         for(int i=;i<n;i++)
         {
             getchar();
             for(int j=;j<n;j++)
             scanf("%c",&map[i][j]);
         }
         for(int i=;i<n-;i++)
         {
             for(int j=;j<n-;j++)
             {
                 if(map[i][j]=='#'&&!vis[i][j])
                 if(map[i-][j]=='#'&&!vis[i-][j])
                 if(map[i+][j]=='#'&&!vis[i+][j])
                 if(map[i][j-]=='#'&&!vis[i][j-])
                 if(map[i][j+]=='#'&&!vis[i][j+])
                 {
                     vis[i][j]=; vis[i-][j]=; vis[i+][j]=
                     vis[i][j+]=; vis[i][j-]=
                 }
             }
         }
         int flag=;
         for(int i=;i<n;i++)
         {
             for(int j=;j<n;j++)
             if(!vis[i][j]&&map[i][j]=='#')
             flag=;
         }
         if(flag) printf("YES\n");
         else printf("NO\n");
     }
     return ;    

46 }

C题:

Fox and Box Accumulation

给出一堆箱子,和每个箱子的power值(即每个箱子的上方最多能放的箱子) 经过叠放之后看最后最少剩下多少堆。

sol :很简单的贪心题目,wa了3次(怕死贪心了>_<) 很容易想到如果先从上向下叠放的话叠放一次重量加1只要找到能足以承担

该重量的即可,因此从小到大排个序然后顺着取就可以了。

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cstring>
 4 using namespace std;
 5 const int MAX =  +;
 6 const int inf = 0x3f3f3f3f;
 7 int num[MAX],use[MAX];
 8 int main()
 9 {
     int n,ans,ret;
     while(scanf("%d",&n)>)
     {
         ans=; int tot=;
         for(int i=;i<n;i++) scanf("%d",&num[i]);
         sort(num,num+n);
         memset(use,,sizeof(use));
         while(tot!=n)
         {
             int i;
             for(i=;i<n;i++) if(!use[i])
             {
                 use[i]=;
                 ans++;
                 tot++;
                 break;
             }
             ret=;
             for(int j=i+;j<n;j++)
             {
                 if(!use[j]&&num[j]>=ret&&num[j]>)
                 {
                     tot++;
                     use[j]=; ret++;
                 }
             }
         }
         printf("%d\n",ans);
     }
     return ;

40 }

D:

Fox and Minimal path

给出点1与点2之间最短路径的总数构建一个图的邻接矩阵。

sol: 开始想把路径都构成长为2的,再一看k真么大果断超时。之后想到了二分,之后就没然后了.

这题主要是利用二分和二进制思想(其实都差不多)主要看怎么构图。具体见代码(参考别人的呵呵)。

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 #define INF 100000000
 8 int k, dp[][], node;
 9 int main()
 {
     memset(dp,,sizeof(dp));
     scanf("%d", &k);
     dp[][]=dp[][]=dp[][]=;
     dp[][]=dp[][]=f[][]=;
     for (int i=; i<=; i++) 
     {
         if (i%!=) dp[i][i+]=dp[i][i+]=;
         else dp[i][i+]=dp[i][i+]=;
     }
     for (int i=; i<=; i++) 
     f[i][i+]=; 
     for (int i=; i>=; i--) 
     if (k&(<<i)) node=(i+)*,dp[node][+i]=;
     for (int i=; i<=; i++) 
     for (int j=; j<=; j++) if (dp[i][j]) dp[j][i]=;
     printf("%d\n",);
     for (int i=;i<=;i++)
     {
         for (int j=;j<=;j++)
         if (dp[i][j]) printf("Y");
         else printf("N");
         printf("\n");
     }

34 }

E题:

Fox and Card Game

又是一个贪心题目。就是给好几堆排然后第一个人取上层的,第二个人取底层的求两个人都采取最优策略能得到分数的最大值

还以为是个dp题目,但是维数太高果断贪心,但是怎么维护最大值又成了卡人的地方,原来这个题只要对半取就可以了,因为可以这么想

假设某堆牌的中上层有一个数大那么第一个人一定会想尽办法先拿到它,同理如果在中下层那么第二个人又会想办法先拿到它,总之:只要是在中上层的第一个人一定能拿到

所以只要对半分就可以了,只要稍微处理下排数为奇数的即可

34 }

Codeforces Round #228 (Div. 2)的更多相关文章

  1. Codeforces Round #228 (Div. 2) C. Fox and Box Accumulation(贪心)

    题目:http://codeforces.com/contest/389/problem/C 题意:给n个箱子,给n个箱子所能承受的重量,每个箱子的重量为1: 很简单的贪心,比赛的时候没想出来.... ...

  2. Codeforces Round #228 (Div. 1)

    今天学长给我们挂了一套Div.1的题,难受,好难啊. Problem A: 题目大意:给你n个数字,让你叠成n堆,每个数字上面的数的个数不能超过这个数,如 3 上面最多放三个数字 问你,最少能放几堆. ...

  3. Codeforces Round #228 (Div. 1) C. Fox and Card Game 博弈

    C. Fox and Card Game 题目连接: http://codeforces.com/contest/388/problem/C Description Fox Ciel is playi ...

  4. Codeforces Round #228 (Div. 1) B. Fox and Minimal path 构造

    B. Fox and Minimal path 题目连接: http://codeforces.com/contest/388/problem/B Description Fox Ciel wants ...

  5. Codeforces Round #228 (Div. 1) A. Fox and Box Accumulation 贪心

    A. Fox and Box Accumulation 题目连接: http://codeforces.com/contest/388/problem/A Description Fox Ciel h ...

  6. Codeforces Round #228 (Div. 1) 388B Fox and Minimal path

    链接:http://codeforces.com/problemset/problem/388/B [题意] 给出一个整数K,构造出刚好含有K条从1到2的最短路的图. [分析] 由于是要自己构造图,当 ...

  7. Codeforces Round #228 (Div. 2) B. Fox and Cross

    #include <iostream> #include <string> #include <vector> #include <algorithm> ...

  8. Codeforces Round #228 (Div. 2) A. Fox and Number Game

    #include <iostream> #include <algorithm> #include <vector> #include <numeric> ...

  9. Codeforces Round #228 (Div. 1) B

    B. Fox and Minimal path time limit per test 1 second memory limit per test 256 megabytes input stand ...

随机推荐

  1. bzoj 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机【bfs】

    直接bfs即可,注意开double,还有驱动和终点的齿轮都在序列里,要把它们找出来= = #include<iostream> #include<cstdio> #includ ...

  2. bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序【置换群】

    至今都不知道置换群是个什么东西--题解说什么就是什么.jpg 以下来自hzwer:http://hzwer.com/3905.html #include<iostream> #includ ...

  3. P3256 [JLOI2013]赛车

    传送门 如果把速度看成斜率,起始位置看成截距,这就是一个水平可见直线了-- 不过这题里我实现方法借鉴了CQzhangyu大佬的,先按速度排序,然后维护一个单调栈,如果当前的人速度比栈顶大距离又比它远直 ...

  4. robotframework - create dictionary 操作

    1.创建字典 2.从字典中获取的项 -- 打印出 item 3.获取字典的key -- 打印出 key 4.获取字典的value -- 打印出 value 5.获取字典key,value 6.打印出字 ...

  5. Akka源码分析-Cluster-Metrics

    一个应用软件维护的后期一定是要做监控,akka也不例外,它提供了集群模式下的度量扩展插件. 其实如果读者读过前面的系列文章的话,应该是能够自己写一个这样的监控工具的.简单来说就是创建一个actor,它 ...

  6. JS数组、outerHtml、className

    //对象转换为数组function obj(){for(var i=0;i<arguments.length;i++){ this[i]=arguments[i]; }} var o2=new ...

  7. [转]Paging, Searching and Sorting in ASP.Net MVC 5

    本文转自:http://www.c-sharpcorner.com/UploadFile/4b0136/perform-paging-searching-sorting-in-Asp-Net-mvc- ...

  8. 类函数:string、math

    类:系统内置的处理字符串类型的函数方法类. string是String的快捷方式.所包含的内容都是一样的. Int i=x.length;//获取一个字符串长度 字符串中,索引号从0开始 String ...

  9. Activity随笔

    Activity的生命周期 1.正常情况下的生命周期 onCreate:  Activity正在被创建,生命周期中的第一个方法,常在此方法中做一些初始化工作,比如调用setContentView方法, ...

  10. Ps 快捷键全解

    一.工具箱(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取)矩形.椭圆选框工具 [M]移动工具 [V]套索.多边形套索.磁性套索 [L]魔棒工具 [W]裁剪工具 [C]切片工具.切片选择 ...