简单的贪心题.把节目的结束时间按升序排列,从第一个节目开始,寻找可以完全看完的节目. 这里用了结构体,所以要自己写排序方式. 总之,贪心的第一要义就是——排序! 本人新手,请体谅. #include<iostream> #include<algorithm> using namespace std; struct time//一个节目的开始和结束 { int s,e; }; bool com(struct time a,struct time b)//排序方式 { return a…
day1: 考微观经济学去了…… day2: 一开始就看了看一道题目最短的B题,拍了半小时交了上去wa了 感觉自己一定是自己想错了,于是去拍大家都过的A题,十分钟拍完交上去就A了 然后B题写了一发暴力对跑,感觉跑出来的数据都是对的,然后看看了题目,看是不是自己读题读错了 WTF!输出居然是Case %d,而我写的是Case #%d = =!,改了改输出格式,交上去就AC了,浪费了我好久时间 然后就去做J题了,J题傻逼题,结果卡全场,赛后一看,long long 改成 unsigned long…
快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------------------------------------------------------------------------------------------------------------------1 - string 与 字符串 find 搜寻失败会返回 string::npos 的值 st…
这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 输入格式: 只有一行,包含两个数N,K . 输出格式: 所得的方案数. 算法分析: 1.显然这又是一道状压的题 2.显然一样是用f数组表示方案数 But 这个f数组需要开三维 为什么呢 我们首先分析一下f的转移情况 f的状态与什么有关呢 首先我们很容易知道我们的dp是从上往下一点点递推实现的 而这个…
题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<=10000),表示有T组数据. 接下来T行每行两个正整数N,M. 输出格式 对于每组数据 第一行输出最大值. 第二行输出划分方案,将N按顺序分成M个数输出,两个数之间用空格格开. 算法分析: 第一问求dp值就是简单的dp 具体实现可参见 暑假集训day1 水题 乘法最大 1.做第一问的时候注意这个题给出的M并…
J - 今年暑假不AC Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了. 作为球迷,一定想看尽量…
这个题目,如果没找到方向,确实有点一头雾水.但是如果你找对方向了,AC是分分钟的事.答案就是看n和m是否有除1之外的公约数. 简单证明:设n和m最大公约数不是1,假设为p.n和m总可以化为一个数乘以k的形式吧,不妨令n=a*k,m=b*k(暂时不知道有什么用); 那么狼第一次遍历的洞口编号为0,m,2m......(假设这些洞的编号都在n-1以内),假设狼第i次进洞会超过n-1,则此时本应该是i*m,但是i*m>n-1,所以这次洞口的编号是(i*m)%n,但是,但是,但是(i*m)%n=i*b*…
题目链接:http://acm.hust.edu.cn/vjudge/contest/121192#problem/J 此题要求是计算能够看到最多的节目 ,贪心算法即可,首先对结束时间排序,然后在把开始的时间和前面的结束时间比较 如果开始时间大于前面的结束的时间就可以记一次,然后在慢慢累计 ac代码: #include <iostream> #include <algorithm> #include <cstring> using namespace std; int…
HDU 2222 题意:给n个模式串和一个字符串,求有多少个模式串在这个字符串中出现 思路:裸题,注意数组开的大小 #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <algorithm> #include <queue> using namespace std; typ…
题目大意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形. 这里我们可以这样看: 对于行:假如是m单位长度,则长度为1的矩形有m个,长度为2的矩形有m-1个......长度为m的只有1个,所以总共的矩形是1+2+...+m=(1+m)*m/2个 对于列:同行的规律. 所以,总的矩形数=行*列.得出通项公式N(m,n) =  (1+m)*(1+n)*m*n/4. #include<iostream> using namespace std; int t,n,m; int main…