Codeforces 955 LR询问 多次幂处理
A
模拟题
- #include <bits/stdc++.h>
- #define PI acos(-1.0)
- #define mem(a,b) memset((a),b,sizeof(a))
- #define TS printf("!!!\n")
- #define pb push_back
- #define inf 1e9
- //std::ios::sync_with_stdio(false);
- using namespace std;
- //priority_queue<int,vector<int>,greater<int>> que; get min
- const double eps = 1.0e-10;
- const double EPS = 1.0e-4;
- typedef pair<int, int> pairint;
- typedef long long ll;
- typedef unsigned long long ull;
- //const int maxn = 3e5 + 10;
- const int maxn = ;
- const int turn[][] = {{, }, { -, }, {, }, {, -}};
- const int turn2[][] = {{, }, { -, }, {, }, {, -}, {, -}, { -, -}, {, }, { -, }};
- //priority_queue<int, vector<int>, less<int>> que;
- //next_permutation
- int main()
- {
- double h, m, C;
- cin >> h >> m;
- int H, D, N;
- cin >> H >> D >> C >> N;
- double ans = ;
- double duce = ;
- if (h < )
- {
- duce = 1.0 * ( - h) * - m;
- }
- else
- {
- C = 0.8 * C;
- }
- int need = H / N + ( - (H % N == ));
- double ans1 = 1.0 * need * C;
- if (duce != )
- {
- H += D * duce;
- C = 0.8 * C;
- need = H / N + ( - (H % N == ));
- ans = need * C;
- printf("%.4f\n", min(ans, ans1));
- }
- else
- {
- printf("%.4f\n", ans1);
- }
- }
B
阅读理解
- #include <bits/stdc++.h>
- #define PI acos(-1.0)
- #define mem(a,b) memset((a),b,sizeof(a))
- #define TS printf("!!!\n")
- #define pb push_back
- #define inf 1e9
- //std::ios::sync_with_stdio(false);
- using namespace std;
- //priority_queue<int,vector<int>,greater<int>> que; get min
- const double eps = 1.0e-10;
- const double EPS = 1.0e-4;
- typedef pair<int, int> pairint;
- typedef long long ll;
- typedef unsigned long long ull;
- //const int maxn = 3e5 + 10;
- const int turn[][] = {{, }, { -, }, {, }, {, -}};
- //priority_queue<int, vector<int>, less<int>> que;
- //next_permutation
- int ch[];
- int main()
- {
- int sum = ;
- string a;
- cin >> a;
- for (int i = ; i < a.size(); i++)
- {
- if (ch[a[i] - 'a'] == )
- {
- sum++;
- }
- ch[a[i] - 'a']++;
- }
- if (sum > )
- {
- cout << "No" << endl;
- return ;
- }
- if (sum == )
- {
- cout << "Yes" << endl;
- }
- else if (sum == )
- {
- for (int i = ; i <= ; i++)
- {
- if (ch[i] > )
- {
- cout << "Yes" << endl;
- return ;
- }
- }
- cout << "No" << endl;
- }
- else if (sum == )
- {
- for (int i = ; i <= ; i++)
- {
- if (ch[i] == )
- {
- cout << "No" << endl;
- return ;
- }
- }
- cout << "Yes" << endl;
- }
- else
- {
- cout << "No" << endl;
- }
- return ;
- }
C
给你Q(1~1e5)个询问 每个询问有L,R(1~1e18)
问你L~R之间有多少个"good number" “good number"是a^p的数 a>0 p>1
因为总共有1e18个数 所以当p固定时 就有10^(18/p)个数 当p为2的时候很大 特殊处理 二分枚举checkL和R的sqrt得到答案
再来处理3~60部分(因为2^60>1e18)的答案 因为最大的10^(18/3)只有1e6所以可以全部枚举出来再nlogn排序去重 预处理复杂度为nlogn
- #include <bits/stdc++.h>
- #define PI acos(-1.0)
- #define mem(a,b) memset((a),b,sizeof(a))
- #define TS printf("!!!\n")
- #define pb push_back
- #define inf 1e9
- //std::ios::sync_with_stdio(false);
- using namespace std;
- //priority_queue<int,vector<int>,greater<int>> que; get min
- const double eps = 1.0e-10;
- typedef pair<int, int> pairint;
- typedef long long ll;
- typedef unsigned long long ull;
- //const int maxn = 3e5 + 10;
- const int maxn = ;
- const int turn[][] = {{, }, { -, }, {, }, {, -}};
- const int turn2[][] = {{, }, { -, }, {, }, {, -}, {, -}, { -, -}, {, }, { -, }};
- //priority_queue<int, vector<int>, less<int>> que;
- //next_permutation
- ll nowmaxn = 1e18;
- ll anser1;
- ll anser2;
- ll num[];
- int pop = ;
- //ll qpow(ll a, ll b)
- //{
- // ll ans = 1, base = a;
- // while (b != 0)
- // {
- // if (b & 1 != 0)
- // {
- // ans *= base;
- // }
- // base *= base;
- // b >>= 1ll;
- //
- // }
- // return ans;
- //}
- bool judge(ll x)
- {
- ll s = sqrt(x);
- for (ll i = s; i <= s + ; i++)
- {
- if (1LL * i * i == x)
- {
- return true;
- }
- }
- return false;
- }
- void init()
- {
- ll now;
- ll limit;
- for (ll i = ; i <= ; i++)
- {
- limit = nowmaxn / i;
- now = 1LL * i * i;
- for (ll j = ;; j++)
- {
- now = 1LL * i * now;
- if (!judge(now))
- {
- num[pop++] = now;
- }
- if (now > limit)
- {
- break;
- }
- }
- }
- sort(num + , num + pop);
- pop = unique(num + , num + pop) - num;
- }
- ll gettwo(ll x)
- {
- ll ans;
- ll l = ;
- ll r = 2e9;
- while (l < r - )
- {
- ll mid = (l + r) >> ;
- if (mid * mid <= x)
- {
- l = mid;
- }
- else
- {
- r = mid;
- }
- }
- return l;
- }
- int main()
- {
- init();
- // for (int i = 1; i <= 10; i++)
- // {
- // cout << num[i] << " ";
- // }
- // cout << endl;
- ll L, R;
- int q;
- cin >> q;
- for (int i = ; i <= q; i++)
- {
- anser1 = anser2 = ;
- scanf("%lld %lld", &L, &R);
- if (L == )
- {
- anser1++;
- }
- anser1 = gettwo(R) - gettwo(L - );
- //cout << anser1 << endl;
- int L1 = lower_bound(num + , num + pop, L) - num;
- int R1 = lower_bound(num + , num + pop, R) - num;
- //cout << " " << L1 << " " << R1 << endl;
- if (L1 == R1)
- {
- if (num[L1] == R)
- {
- anser2++;
- }
- }
- else
- {
- anser2 = R1 - L1 + (num[R1] == R);
- }
- cout << anser1 + anser2 << endl;
- }
- }
Codeforces 955 LR询问 多次幂处理的更多相关文章
- codeforces magic five --快速幂模
题目链接:http://codeforces.com/contest/327/problem/C 首先先算出一个周期里面的值,保存在ans里面,就是平常的快速幂模m做法. 然后要计算一个公式,比如有k ...
- CodeForces - 691E Xor-sequences 【矩阵快速幂】
题目链接 http://codeforces.com/problemset/problem/691/E 题意 给出一个长度为n的序列,从其中选择k个数 组成长度为k的序列,因为(k 有可能 > ...
- Codeforces 963 A. Alternating Sum(快速幂,逆元)
Codeforces 963 A. Alternating Sum 题目大意:给出一组长度为n+1且元素为1或者-1的数组S(0~n),数组每k个元素为一周期,保证n+1可以被k整除.给a和b,求对1 ...
- Codeforces 691E题解 DP+矩阵快速幂
题面 传送门:http://codeforces.com/problemset/problem/691/E E. Xor-sequences time limit per test3 seconds ...
- 【codeforces 623E】dp+FFT+快速幂
题目大意:用$[1,2^k-1]$之间的证书构造一个长度为$n$的序列$a_i$,令$b_i=a_1\ or\ a_2\ or\ ...\ or a_i$,问使得b序列严格递增的方案数,答案对$10^ ...
- Codeforces 691E Xor-sequences(矩阵快速幂)
You are given n integers a1, a2, ..., an. A sequence of integers x1, x2, ..., xk is called a & ...
- codeforces 696C C. PLEASE(概率+快速幂)
题目链接: C. PLEASE time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- Codeforces 954 dijsktra 离散化矩阵快速幂DP 前缀和二分check
A B C D 给你一个联通图 给定S,T 要求你加一条边使得ST的最短距离不会减少 问你有多少种方法 因为N<=1000 所以N^2枚举边数 迪杰斯特拉两次 求出Sdis 和 Tdis 如果d ...
- [Luogu3242][HNOI2015]接水果
Luogu 我今天做两道整体二分结果全都是BZOJ权限题??? sol 我们抓住"盘子的路径是水果的路径的子路径"这个条件. 考虑每一个盘子路径\((u,v)\),讨论它可以作为哪 ...
随机推荐
- OOM和SOF代码
OutOfMemoryError大数组,例如图片加载. public class MockOutOfMemoryError { public static void main(String[] arg ...
- 错误 NETSDK1007 找不到“E:\Project\MyProject\MyProject.Common\MyProject.Utility.csproj”的项目信息。这可以指示缺少一个项目引用。 MyProject.Data C:\Program Files\dotnet\sdk\2.2.107\Sdks\Microsoft.NET.Sdk\targets\Microsof
因为对MyProject.Data引用的项目MyProject.Common进行了重命名为MyProject.Utility,导致这个错误 解决办法: 1.找到MyProject.Data中的E:\P ...
- HashMap,ConcurrentHashMap相关知识整理
1.HashMap的存储步骤: 1.传入key和value,判断key是否为null,如果为null,则调用putForNullKey,以null作为key存储到哈希表中: 2. 然后计算key的ha ...
- 安装mysql出现Couldn't find MySQL server (/usr/bin/mysqld_safe)
安装mysql出现Couldn't find MySQL server (/usr/bin/mysqld_safe)Starting MySQL ERROR! Couldn't find MySQL ...
- 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_1 回顾Mybatis的环境搭建-实现查询所有功能
先回顾Mybits的环境搭建,. 直接next 直接点击finish 创建好的项目. 所有东西都自己写不现实,约束文件的头部还是拷贝过来 导入依赖坐标,Mybits mysql的驱动 log4j 单元 ...
- Java ——异常处理
本节重点思维导图 详细戳——> 异常处理
- 8.FTP后门命令执行----Samba命令执行----VMware安装kali----多终端显示
FTP后门命令执行 再次声明,最近听闻不得教受工具使用等言论. 我敢打包票,网络空间安全一级学科的老师和学生是不会说这句话的.未知攻,焉知防. 有工具来检测自己和玩弄它,是幸运的. 犯罪者不会给你提供 ...
- git自动上传脚本及基本代码
git_auto.bat git add . git add -A git add -u git commit -m "text" git pull --rebase origin ...
- new 和 malloc 的区别 及使用
Malloc: 定义上:malloc memory allocation 动态内存分配 是c中的一个函数 使用方法: extern void *malloc(unsigned int num_byt ...
- 【监控笔记】【1.4】Pssdiag和Sqldiag管理器
--没有实操过,有点复杂,先写上以后有用到再深入研究 统计与诊断数据是任何 SQL故障修复工作的关键所在. 如果没有掌握这些数据,就无法确定数据性能问题的根源.数据表的瓶颈可能并不是由索引问题造成的: ...