Codeforces 402A 402B 402C 402D
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的更多相关文章
- Codeforces 402D Upgrading Array:贪心 + 数学
题目链接:http://codeforces.com/problemset/problem/402/D 题意: 给你一个长度为n的数列a[i],又给出了m个“坏质数”b[i]. 定义函数f(s),其中 ...
- Codeforces 402B --耻辱的一题
这题昨天晚上花了我1个小时50多分钟来搞,都没有搞定..后来看别人代码,直接暴力枚举第一个数的值来做..最多1000*1000的复杂度.当时怎么就没想到呢?还有为啥我的方法不对呢.. 暴力方法代码: ...
- 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( ...
- CodeForces - 402B Trees in a Row (暴力)
题意:给定n个数,要求修改其中最少的数,使得这n个数满足ai + 1 - ai = k. 分析: 暴力,1000*1000. 1.这n个数,就是一个首项为a1,公差为k的等差数列.k已知,如果确定了a ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
随机推荐
- dateset是不是在缓存中
C#开发erp系统的时候有一个多表数据的查询展示到页面,采用了存储过程的方式,但是存储过程中没有加入分页(菜比).刚开始测试数据几百条没有问题,当数据量提升至十万级后页面加载速度就很卡了,一般是使用分 ...
- 以OpenGL方式运行Unity
Unity在Windows上默认以DirextX的方式运行,在MacOS和Linux上默认以OpenGl的方式运行, 如果希望在Windows上以OpenGL的方式运行可以在命令行中输入 -force ...
- UI1_UITableViewHomeWork
// // AppDelegate.m // UI1_UITableViewHomeWork // // Created by zhangxueming on 15/7/14. // Copyrigh ...
- QThread多线程编程经典案例分析
传统的图形界面应用程序都只有一个线程执行,并且一次执行一个操作.如果用户调用一个比较耗时的操作,就会冻结界面响应. 一个解决方法是按照事件处理的思路: 调用 Void QApplication::pr ...
- Java并发编程概要
线程开的越多,则性能越好吗? 未必,影响多线程性能的因素有:上下文切换,竞争/死锁,资源限制等.对于这些因素要均衡考量,才能获得较好的性能. 并发控制/线程间的通信方式 基本的并发控制原语有 vola ...
- Spark RDD整理
参考资料: Spark和RDD模型研究:http://itindex.net/detail/51871-spark-rdd-模型 理解Spark的核心RDD:http://www.infoq.com/ ...
- wordpress使用video.js与七牛云存储实现无广告视频分享应用
video.js是一款极受欢迎的基于HTML5的开源WEB视频播放器,其充分利用了HTML5的视频支持特性,可以实现全平台的无视频插件播放功能,对于现在流行的手机.PAD等移动智能终端有极佳的应用体验 ...
- 【Qt】Qt之自定义界面(实现无边框、可移动)【转】
简述 UI设计是指对软件的人机交互.操作逻辑.界面美观的整体设计.好的UI设计不仅是让软件变得有个性.有品位,还要让软件的操作变得舒适简单.自由,充分体现软件的定位和特点. 爱美之心人皆有之.其实软件 ...
- php生成圆形图片
http://files.cnblogs.com/files/adtuu/circle_image.zip
- CentOS 普通用户设置sudo权限
1.先切换到root用户下,输入命令 su 2.添加sudo文件的写权限,命令是: chmod u+w /etc/sudoers 3.编辑sudoers文件 vi /etc/sudoers 找到 ro ...