A:A. Nuts

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

You have a nuts and lots of boxes. The boxes have a wonderful feature: if you put x (x ≥ 0)divisors (the spacial bars that can divide a box) to it, you get a box, divided into x + 1sections.

You are minimalist. Therefore, on the one hand, you are against dividing some box into more than k sections. On the other hand, you are against putting more than v nuts into some section of the box. What is the minimum number of boxes you have to use if you want to put all the nuts in boxes, and you have b divisors?

Please note that you need to minimize the number of used boxes, not sections. You do not have to minimize the number of used divisors.

Input

The first line contains four space-separated integers kabv (2 ≤ k ≤ 1000; 1 ≤ a, b, v ≤ 1000) — the maximum number of sections in the box, the number of nuts, the number of divisors and the capacity of each section of the box.

Output

Print a single integer — the answer to the problem.

Sample test(s)
input
3 10 3 3
output
2
input
3 10 1 3
output
3
input
100 100 1 1000
output
1
Note

In the first sample you can act like this:

  • Put two divisors to the first box. Now the first box has three sections and we can put three nuts into each section. Overall, the first box will have nine nuts.
  • Do not put any divisors into the second box. Thus, the second box has one section for the last nut.

In the end we've put all the ten nuts into boxes.

The second sample is different as we have exactly one divisor and we put it to the first box. The next two boxes will have one section each.

花了半个多小时去理清数据的关系,开始感觉无从下手。。。我的方法是:制造相应的盒子,能放多少就尽量放到前面的盒子里面,最后统计一下就可以

#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int aa[]; //盒子能放的个数
int main()
{
    int k,a,b,v;
    cin>>k>>a>>b>>v;
    int ans=;
    for (int i=;i<=;i++)
         aa[i]=v;               初始每个盒子开始只有一个SECTION
    for (int i=;i<=;i++)
     {
         if (b==) break;
         if (b+>=k) {aa[i]+=v*(k-);b-=(k-);}  有B则先用
         else
         {
             aa[i]+=b*v;
             break;
         }
     }
    int tem=,ll;
    for (int i=;i<=;i++)
    {
        tem+=aa[i];
        if (tem>=a) {ll=i;break;}
    }
    cout<<ll<<endl;
    return ;

}

B:题意很简单,构造等差数列,求改变的数的个数最小。。

从A[1]暴力枚举就可,不知为何我从A[N]枚举就挂,白WA5次 #include<iostream>

#include<algorithm>
#include<math.h>
using namespace std;
int a[],n,k;
int main()
{
    cin>>n>>k;
    for (int i=;i<=n;i++)
    cin>>a[i];
    int ans=;
    int kk;
    for (int i=;i<=;i++)
    {
        int o=;
        int tem=i;
        for (int j=;j<=n;j++)
        {
            if (a[j]!=tem)
            o++;
            tem+=k;
        }
        if (o<ans) {ans=o;kk=i;}
    }     cout<<ans<<endl;
    if (ans==) return ;
    for (int i=;i<=n;i++)
    {
        if (a[i]>kk) {cout<<"- "<<i<<" "<<a[i]-kk<<endl;}
        else if (a[i]<kk) {cout<<"+ "<<i<<" "<<kk-a[i]<<endl;}
        kk+=k;
    }
    return ;
} C题,我是瞎搞,我的理解是使点连接的边相对稀少,先这样加边:1-->2,2-->3,3-->4,n-1-->n;先见N-1条边,然后:1-->3,2-->4,3-->5,依次;然后是:1--4,2-->5,....感觉这样相对不密集。。#include<iostream>#include<algorithm>
#include<math.h>
#include<string.h>
using namespace std;
int n,p;
int mp[][];
int main()
{
  int t;
  cin>>t;
  while (t--)
  {
      int m=*n+p;
      memset(mp,,sizeof(mp));
      cin>>n>>p;
      for (int i=;i<n;i++)
        mp[i][i+]=;
        m=*n+p;
        m=m-(n-);
            for (int i=;i<n;i++)
            {
             if (m==) break;
             for (int j=;j+i<=n;j++)
             {
                mp[j][j+i]=;
                m--;
                if (m==) break;
              }
            }
    for (int i=;i<=n;i++)
        for (int j=;j<=n;j++)
        if (mp[i][j])
        cout<<i<<" "<<j<<endl;
  }
    return ;}还有不得不吐槽自己的码代码能力,太坑了 

codeforces #236 div2 简洁题解的更多相关文章

  1. Codeforces Round div2 #541 题解

    codeforces Round #541 abstract: I构造题可能代码简单证明很难 II拓扑排序 III并查集 启发式排序,带链表 IV dp 处理字符串递推问题 V 数据结构巧用:于二叉树 ...

  2. codeforces 576 div2 A-D题解

    A题 Description 题目链接: https://codeforces.com/contest/1199/problem/A 题意: 给定长度为n(1≤n≤100000)的一个序列a,以及两个 ...

  3. Codeforces #541 (Div2) - E. String Multiplication(动态规划)

    Problem   Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...

  4. Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)

    Problem   Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...

  5. Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)

    Problem   Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...

  6. Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)

    Problem   Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...

  7. Codeforces #180 div2 C Parity Game

    // Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...

  8. Codeforces Round #543 Div1题解(并不全)

    Codeforces Round #543 Div1题解 Codeforces A. Diana and Liana 给定一个长度为\(m\)的序列,你可以从中删去不超过\(m-n*k\)个元素,剩下 ...

  9. Codeforces Round #545 Div1 题解

    Codeforces Round #545 Div1 题解 来写题解啦QwQ 本来想上红的,结果没做出D.... A. Skyscrapers CF1137A 题意 给定一个\(n*m\)的网格,每个 ...

随机推荐

  1. xtrabackup之Innobackupex全备恢复

    一.当前环境 [mysql@hadoop1 ~]$ mysql --defaults-/my.cnf -uroot -p123456 -P3306 mysql> show variables l ...

  2. Learning Scrapy笔记(一)- Scrapy简单介绍

    Scrapy简述 Scrapy十一个健壮的,用来从互联网上抓取数据的web框架,Scrapy只需要一个配置文件就能组合各种组件和配置选项,并且Scrapy是基于事件(event-based)的架构,使 ...

  3. Python学习教程(learning Python)--2.3.2 Python函数实参详解

    本节主要讨论函数调用时参数的实参问题. 1. 实参赋值顺序和型参定义顺序一一对应 Python在调用哪个子函数时,如果型参为多个,一般实参的排布顺序和型参顺序保持一致,即一一对应.我们以下面的代码为例 ...

  4. 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)

    利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)   作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...

  5. shell-IF判断

    #!/bin/bash echo "-----------------strat---------------" read -p "Enter a number:&quo ...

  6. ios中怎么样点击背景退出键盘

    //退出键盘 只需一句,药到病除 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self.view endEdi ...

  7. OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法

    字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 ...

  8. [转]Ubuntu 12.04开机自动挂载Windows分区

    [转]Ubuntu 12.04开机自动挂载Windows分区 http://www.cnblogs.com/A-Song/archive/2013/02/27/2935255.html 系统版本:Ub ...

  9. jQuery 获取 select 值和文本

    jQuery("#select1").val();是取得选中的值, jQuery("#select1").text();就是取得的文本.

  10. 微软职位内部推荐-Software Engineer II-Web app

    微软近期Open的职位: The Office App Services team is working on the powerful Office Web Apps including Word ...