HDU 4028 The time of a day STL 模拟题

简介:

暴力出奇迹。。

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
#define ll __int64
#define N 42
ll n,m,ans;
ll Gcd(ll x,ll y){
	if(x>y)swap(x,y);
	while(x){
		y%=x;
		swap(x,y);
	}
	return y;
}
ll Lcp(ll x,ll y){return x*y/Gcd(x,y);}
map<ll,ll>mp[N];
map<ll,ll>::iterator p;
pair<ll,ll>tmp;
void work(ll x, ll cur){
	p = mp[cur].end();
	if(p==mp[cur].begin())return;
	p--;
	for(;;p--){
		tmp = *p;
		ll dou = Lcp(tmp.first,x);
		if(dou>=m){
			ans += tmp.second;
		}
		mp[cur][dou]+=tmp.second;
		if(p==mp[cur].begin())return;
	}
}
struct node{
	ll num, ans;
	bool operator<(const node&a)const{
		return a.num>num;
	}
};
set<node>myset[N];
int main(){
	ll i, j, Cas = 1, T;scanf("%I64d",&T);
	mp[0].clear();
	for(i=1;i<=40;i++)
	{
		mp[i] = mp[i-1];
		work(i,i);
		mp[i][i]++;
		node now = {0,0};
		myset[i].clear();
		for(p=mp[i].end(),p--;;p--){
			tmp = *p;
			now.num = tmp.first;
			now.ans += tmp.second;
			myset[i].insert(now);
			if(p==mp[i].begin())break;
		}
	}
	while(T--){
		scanf("%I64d %I64d",&n,&m);
		printf("Case #%I64d: ",Cas++);
		node dou = {m,-1};
		if(myset[n].lower_bound(dou)==myset[n].end())puts("0");
		else printf("%I64d\n",myset[n].lower_bound(dou)->ans);
	}
	return 0;
}








本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5088444.html,如需转载请自行联系原作者


相关文章
|
6月前
|
算法 定位技术 C语言
【刷题】初试 vector 解题
今天我们接触了vector的初步使用,下一篇文章带大家一起手搓vector。
35 0
【刷题】初试 vector 解题
|
5月前
|
SQL 算法 数据可视化
python 贪心算法 动态规划实现 跳跃游戏ll【力扣题45】
python 贪心算法 动态规划实现 跳跃游戏ll【力扣题45】
|
机器学习/深度学习
light oj 1005 - Rooks(组合数学)
组合数学解法 现在n行中选出m行,C(n,m),再在n列中选出m列随便放A(n,m),答案为C(n,m)*A(n,m)。
37 0
Light oj 1112 - Curious Robin Hood(树状数组)
有n个数,有m组操作,1 i表示将第i个数先输出,然后置0, 2 i v 表示给第i个数加上v, 3 i j 表示求i 到 j 的和,注意,这里数组是从0开始的,而我们构造的树状数组是从1 开始的,使用在程序中要进行一定的处理。
41 0
|
算法 C++ Python
queue队列算法模板-附LeetCode每日一题题解:1823. 找出游戏的获胜者-题解-python && C++源代码
queue队列算法模板-附LeetCode每日一题题解:1823. 找出游戏的获胜者-题解-python && C++源代码
queue队列算法模板-附LeetCode每日一题题解:1823. 找出游戏的获胜者-题解-python && C++源代码
|
C语言 C++ 容器
|
定位技术
HDOJ/HDU 1180 诡异的楼梯(经典BFS-详解)
HDOJ/HDU 1180 诡异的楼梯(经典BFS-详解)
130 0
HDOJ/HDU 1180 诡异的楼梯(经典BFS-详解)
|
人工智能 C++ 算法
几道STL题目(FJUT - OJ STL训练1)
这个OJ一直在做,一些专题题目都很好,从易至难,阶梯上升,很适合像我这样的蒟蒻 =7= 这篇是关于其中一个专题训练的题解思路及代码   http://120.78.128.11/Contest.jsp?cid=486 所有题面我就不贴了,各位自行去看,链接在上一行 =7=   一、求...
1463 0
|
Java BI 机器学习/深度学习