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只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- java 关键字transient
http://www.cnblogs.com/lanxuezaipiao/p/3369962.html 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口 ...
- Advanced Wlan Attacks (RADIUS)
1.查询连接到无线接入点的情况 使用命令 airodump-ng wlan0mon 可以看到 有用的信息.我们知道如果有一个客户端使用验证码成功连接到. 顺便查一下其中一个连接的设备的MAC地址的 ...
- kali linux DVWA config 问题解决方案
1.下载DVWA之后解压到 var/www/html目录下 unzip DVWA-master.zip -d /usr/www/html 2.配置 打开终端,执行以下命令: 将apache2停止:se ...
- C++ Primer 笔记——标准库类型string
1.如果使用等号初始化一个变量,实际上执行的是拷贝初始化,编译器吧等号右侧的初始值拷贝到新创建的对象中去:如果不使用等号则执行的是直接初始化. std::string str = "Test ...
- java 多线程中的锁的类别及使用
目前在Java中存在两种锁机制: synchronized Lock Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea. 数据同步需要依赖锁,那锁的同步又依赖谁? ...
- 滴水穿石-10GUI
GUI 图形用户界面 1 Frame 窗体 package d10; //第一导入包 import java.awt.Frame; import java.awt.event.WindowAdapte ...
- 一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)
1:经过几天的折腾,终于将oracle安装成功,创建用户,授权等等操作,接下来就安安心心学习oracle: 安装好PLSQL图形化界面和汉化以后(过程自己百度吧,百度more and more),登录 ...
- JSP中out.print()、out.println()以及out.write()的区别
out是JSP九大内置对象之一,是JspWriter的一个对象,JspWriter继承了java.io.Writer类. out.print()和out.write() print()和println ...
- IO流-file
1.1 IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把 ...
- poj3889
看题解之前并不知道怎么搞.. 分治是显然的 但是我不知道怎么判断4个块的位置 发现很简单... 注意14是23旋转得到的 而同时也等价于交换了横纵坐标 所以就可以做了