402A 直接暴力

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <sstream>
#include <string>
#include <cstring>
#include <algorithm>
#include <iostream>
#define maxn 2010
#define INF 0x7fffffff
#define inf 10000000
#define MOD 1000000007
#define ull unsigned long long
#define ll long long
using namespace std; int main()
{
int k, a, b, v;
scanf("%d%d%d%d", &k, &a, &b, &v);
int ans = 0;
while(a > 0)
{
ans ++;
if(b >= k-1)
{
a -= k*v;
b = b-k+1;
}
else
{
a -= (b+1)*v;
b = 0;
}
}
printf("%d\n", ans);
return 0;
}

402B

修改尽量少的数字使数列成为公差为k的等差数列 (但是不能有负数)

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <sstream>
#include <string>
#include <cstring>
#include <algorithm>
#include <iostream>
#define maxn 2010
#define INF 0x7fffffff
#define inf 10000000
#define MOD 1000000007
#define ull unsigned long long
#define ll long long
using namespace std; int num[1010], ans[1010], tem[1010];
int main()
{
int n, k;
memset(ans, 0, sizeof(ans));
scanf("%d%d", &n, &k);
for(int i = 0; i < n; ++ i)
{
scanf("%d", &num[i]);
tem[i] = num[i] - i*k;
}
sort(tem, tem+n);
int j = 0;
while(tem[j] <= 0) ++ j;
int now = tem[j], _max = 0, cnt = 0, cc = tem[j];
for(int i = j; i < n; ++ i)
{ if(now == tem[i]) ++ cnt;
else
{
if(cnt > _max)
{
_max = cnt;
cc = now;
}
now = tem[i];
cnt = 1;
}
}
if(cnt > _max)
{
_max = cnt;
cc = now;
}
printf("%d\n", n-_max);
for(int i = 0; i < n; ++ i)
{
if(cc+i*k > num[i]) printf("+ %d %d\n", i+1, cc+i*k-num[i]);
if(cc+i*k < num[i]) printf("- %d %d\n", i+1, num[i]-cc-i*k);
}
return 0;
}

402C 猜了一下 直接枚举一个最有可能的

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <sstream>
#include <string>
#include <cstring>
#include <algorithm>
#include <iostream>
#define maxn 2010
#define INF 0x7fffffff
#define inf 10000000
#define MOD 1000000007
#define ull unsigned long long
#define ll long long
using namespace std; int main()
{
int t, n, p;
scanf("%d", &t);
while(t --)
{
scanf("%d%d", &n, &p);
int now = 2*n+p, st = 1, k = 1;
while(now--)
{
printf("%d %d\n", st, (st+k)%n == 0 ? n : (st+k)%n);
++ st;
if(st == n+1)
{
st = 1;
++ k;
}
}
}
return 0;
}

402D

数学加贪心

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <sstream>
#include <string>
#include <cstring>
#include <algorithm>
#include <iostream>
#define maxn 2010
#define INF 0x7fffffff
#define inf 10000000
#define MOD 1000000007
#define ull unsigned long long
#define ll long long
using namespace std; int a[5010], cou[5010], pp[100000], m;
bool vis[100000];
struct node
{
int b[5050];
bool find(int x)
{
for(int i = 0; i < m; ++ i)
if(b[i] == x) return true;
return false;
}
};
node prime; int fi_pri()
{
int j = 0;
memset(vis, 1, sizeof(vis));
for(ll i = 2; i < 100000; ++ i)
if(vis[i])
{
pp[j++] = i;
for(ll j = i*i; j < 100000; j += i)
vis[j] = false;
}
return j;
} int gcd(int r, int l)
{
return l == 0 ? r : gcd(l, r%l);
} bool can(int i, int j)
{
int ans = 0;
for(int k = 0; k < j; ++ k)
if((i % pp[k] == 0) && (prime.find(pp[k])))
while(i % pp[k] == 0)
{
-- ans;
i /= pp[k];
}
else
while(i % pp[k] == 0)
{
++ ans;
i /= pp[k];
}
if(prime.find(i)) --ans;
if(ans < 0) return true;
return false;
} int f(int s, int j)
{
if(s == 1) return 0;
int i;
for(i = 0; i < j; ++ i)
if(s%pp[i] == 0)
break;
if(i != j && prime.find(pp[i]))
return f(s/pp[i], j) -1;
if(i != j)
return f(s/pp[i], j) +1;
if(prime.find(s))
return -1;
return 1;
} int main()
{
int asd = fi_pri(); int n, g;
scanf("%d%d", &n, &m);
scanf("%d", &a[0]);
g = cou[0] = a[0];
for(int i = 1; i < n; ++ i)
{
scanf("%d", &a[i]);
g = cou[i] = gcd(g, a[i]);
}
for(int i = 0; i < m; ++ i)
scanf("%d", &prime.b[i]);
for(int i = n-1; i >= 0; -- i)
if(can(cou[i], asd))
for(int j = 0; j <= i; ++ j)
{
a[j] /= cou[i];
cou[j] /= cou[i];
}
int ans = 0;
for(int i = 0; i < n; ++ i) ans += f(a[i], asd);
printf("%d\n", ans);
return 0;
}

Codeforces 402A 402B 402C 402D的更多相关文章

  1. Codeforces 402D Upgrading Array:贪心 + 数学

    题目链接:http://codeforces.com/problemset/problem/402/D 题意: 给你一个长度为n的数列a[i],又给出了m个“坏质数”b[i]. 定义函数f(s),其中 ...

  2. Codeforces 402B --耻辱的一题

    这题昨天晚上花了我1个小时50多分钟来搞,都没有搞定..后来看别人代码,直接暴力枚举第一个数的值来做..最多1000*1000的复杂度.当时怎么就没想到呢?还有为啥我的方法不对呢.. 暴力方法代码: ...

  3. CodeForces 402D Upgrading Array (数学+DP)

    题意:给出一个数列,可以进行一种操作将某一个前缀除去他们的gcd,有一个函数f(x),f(1) = 0 , f(x) = f(x/p)+1,f(x) = f(x/p)-1(p是坏素数), 求 sum( ...

  4. CodeForces - 402B Trees in a Row (暴力)

    题意:给定n个数,要求修改其中最少的数,使得这n个数满足ai + 1 - ai = k. 分析: 暴力,1000*1000. 1.这n个数,就是一个首项为a1,公差为k的等差数列.k已知,如果确定了a ...

  5. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  6. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  7. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  8. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  9. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

随机推荐

  1. UI4_UITableViewEdit

    // // AppDelegate.m // UI4_UITableViewEdit // // Created by zhangxueming on 15/7/13. // Copyright (c ...

  2. 超赞值得一试的六款jQuery插件和CSS3应用

    1.jQuery图片横向滚动插件 这是一款利用jQuery实现的图片横向滚动插件,我们可以设置任意数量的图片,然后点击左右箭头按钮即可分组浏览这些图片.这款jQuery图片插件的优势有两点,其一是可以 ...

  3. gcc与g++的区别

    一:gcc与g++比较 编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确, ...

  4. python中文json串创建与解析

    下面代码,举例说明了json如何创建和解析含有中文的json串: #coding=gbk import os import sys reload(sys) sys.setdefaultencoding ...

  5. <postfix邮件服务下mysql的升级>

    本片服务的环境的红帽的企业版6.5 的,6.3的测试可能会略有不一样,不过方法大致是一样的. 当前系统的postfix的版本为 postfix-2.6.6-2.2.el6_1.x86_64 我们要向使 ...

  6. nginx安装总结

    对于nginx作为负载均衡服务器时的安装需要安装rewrite模块需要的pcre()库,gzip模块需要zlib库,ssl模块需要openssl库,对此依赖安装有很多种处理方式,以下简单总结: 通过源 ...

  7. Android开发面试题(一)

    1.String和StringBuffer有什么本质区别? 本质区别:String字符串不可变,每次修改字符串必须要重新赋值(生成新的对象)才能修改:StringBuffer字符串可变,可以直接对字符 ...

  8. C# Winform中DataGridView的DataGridViewCheckBoxColumn使用方法

    下面介绍Winform中DataGridView的DataGridViewCheckBoxColumn使用方法: DataGridViewCheckBoxColumn CheckBox是否选中 在判断 ...

  9. Python开发【第一篇】Python基础之正则表达式补充

    正则表达式 一简介:就其本质而言,正则表达式(或RE)是一种小型的.高度专业化的标称语言,(在Python中)它内嵌在Python中,并通过re模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...

  10. WPF的Application类

    本节主要介绍一下Application类的部分功能,我们首先来看一下如何使用Application类来加载一个窗口: 我们首先创建一个控制台程序,并引入相关的dll,然后修改Main()方法. [ST ...