CodeForces - 1089G
3
2
0 1 0 0 0 0 0
100000000
1 0 0 0 1 0 1
1
1 0 0 0 0 0 0
8
233333332
1 本题的题意其实很简单,就是用一个长度为7的数组a[]表示,如果a[i]=1则说明星期i的时候,xx大学这一天为学生上课,否则如果为0,则学生这一天不上课(不上课也要待在学校!).
现在给你数组a,以及这个学生想要上课的天数k.
请问这个学生最少要在学校呆多少天(他可以在任意一天来),才能满足他上满k天的课的要求? 解法可以将其看作两部分!
1, 学生需要完整上完一个星期的天数
2, 学生可以选择上的天数 这里完整上的天数可以用 k/cnt表示,其中,k是学生期望的上课数, cnt是一周的课数。
于是,需要完整上的天数就是 : 7*x!
但是要考虑一个特殊情况,若k%cnt = 0。也就是刚刚好整除,这个时候需要我们 7*x-7因为有一个星期他不用完整上完。
具体步骤看我的AC代码解释吧
AC代码如下:
#include <iostream>
#include <cstdio> using namespace std;
const int MX = ;
int mp[]; int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int k;
int ans = ;
int cnt = ;
scanf("%d", &k);
for(int i = ; i <= ; ++i) scanf("%d", &mp[i]);
for(int i = ; i <= ; ++i)
if(mp[i] == ) cnt++;
int x = k/cnt; // 期望的课数除以每个星期有课数,可以得到需要上多少天(整的星期)
int n = k%cnt; // 余数可知除了整的个数外还期望上多少课
ans = *x; // 先求整的天数
if(n == ) // 若可以整除,则说明第一个星期不需要上完,这个时候需要判断
{
ans -= ; // 先把第一个星期减掉
n = cnt; // 还需要一个星期的课也就是cnt
}
int mn = ;
for(int i = ; i <= ; ++i)
{
int day = ;
cnt = ;
for(int j = i; ;j++) //从第i天开始计算可以上课的的值
{
day++; //循环一次多一天
if(mp[(j-)%+] == ) cnt++; // 这里(j-1)%7+1的意思是j大于7的时候相当于返回来从1开始
if(cnt == n)
{
mn = min(mn, day);
break;
}
}
}
ans += mn;
printf("%d\n", ans);
}
}
如有疑问,欢迎评论指出!
CodeForces - 1089G的更多相关文章
- 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的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- Django复习
django复习 django和其他框架的对比 django,集成很多功能的大型框架,为开发者提供了很多方便的组件:orm.form.ModelForm.auth.admin.contenttypes ...
- C++ Primer 笔记——迭代器
iostream迭代器 1.虽然iostream类不是容器,但是标准库定义了可以用于IO的迭代器.创建一个流迭代器的时候必须指定要读写的类型.我们可以对任何具有输入运算符(>>)的类型定义 ...
- windows客户端走代理上网
前提:在大型网络中,由于众多服务器及安全性考虑,内网服务器是不能上外网的,但是为了满足某些服务的需要,一定会搭建代理服务器的. 以下是windows客户端走代理服务器的操作: 两下确定就可 ...
- OpenCV-Python入门教程3-图像基本操作(访问像素点/ROI/通道分离)
一.获取和修改像素点的值 import cv2img = cv2.imread('lena.jpg') # 100, 90表示行列坐标 px = img[100, 90] print(px) # 获取 ...
- 使用python调用shell判断当前进程是否存在
使用subprocess模块判断当前进程是否存在 #! /usr/bin/env python import subprocess res = subprocess.Popen(r'ps -ef |g ...
- UPC 6616 Small Mulitple
D - Small Multiple 题目传送门 Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem Stateme ...
- Redis的并发竞争问题
问题描述:多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了.或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了. 一个key的值是1,本来按顺序 ...
- 源码编译安装net-snmp
https://blog.csdn.net/u013992330/article/details/79712405 https://wenku.baidu.com/view/24368a2257125 ...
- 'tensorflow' has no attribute 'sub'
在学习tensorflow的时候,照到官方的例子做,发现了一个 Traceback (most recent call last): File , in <module> sub = tf ...
- [转] 合理使用npm version与npm dist-tag详解
第一步:发布第一个稳定版本 npm publish//1.0.0 第二步:修改文件继续发布第二个版本 git add -A && git commit -m "c" ...