Problem - C - Codeforces

题目大意:有一个长度为n的全排列数组s,和一个由0,1组成的字符串ss,ss[i]=0代表s的子序列t里没有i,1代表有,每次操作可以任选一个不大于n的整数k,在s中删除k的最小倍数,费用为k,问如果要把s变成t最小花费是多少

1<=n<=1e6,1<=k<=n

思路:对于s中的每个数,我们从1倍开始遍历他的倍数j,如果ss[i*j]=0,就在答案中加上i,同时给i*j做上标记,避免重复记录答案,如果遇到ss[i*j]=1,就直接退出循环去遍历下一个数

#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
const int N = 1e6 + 5;
char tt[N];
bool cnt[N],cnts[N];
int main()
{int t;cin >> t;while (t--){int n;scanf("%d", &n);for (int i = 1; i <= n; i++){cnt[i] = 0;cnts[i] = 1;}getchar();//读入换行符for (int i = 1; i <= n; i++){scanf("%c", &tt[i]);if (tt[i] == '1'){cnt[i] = 1;//在t中出现cnts[i] = 0;//在s中不需要删除}}ll ans = 0;for (int i = 1; i <= n; i++){for (int j = 1; j * i <= n; j++){ll temp = i * j;//遍历i的所有倍数if (cnt[temp])//如果当前倍数在t中,就不能删了break;if (cnts[temp] == 0)//这个点被删过了或不需要删除continue;cnts[temp] = 0;//标记删过的点ans += i;}}printf("%lld\n", ans);}return 0;
}

C. Removing Smallest Multiples codeforces 1734C相关推荐

  1. Removing Smallest Multiples

    我以为会超时的,结果没有.现在想想应该也是O(n)的算法,因为在倍数判断时候也每个数只能进入判断一次. 思路就是先找出一个数,若小于他的数乘它自己仍未访问,则删去. #include<bits/ ...

  2. Codeforces Round #822 (Div. 2) 题解

    A. Select Three Sticks 题意为每一次可以选一个数加1或减1,问达到数组中有三个相等的数的最小步数 签到题,可能会有很多种解法 这里说其中一种 我们把整个数组排序,然后对于每一个三 ...

  3. Codeforces Round #656 (Div. 3) F. Removing Leaves 贪心 + 模拟

    传送门 文章目录 题意: 思路: 题意: 思路: 首先有一个贪心策略就是每次都找一个叶子节点最多的点,让后删掉他的kkk个叶子节点,现在我们就来考虑如何模拟这个过程. 我们整一个vector<s ...

  4. 暴力+构造 Codeforces Round #283 (Div. 2) C. Removing Columns

    题目传送门 1 /* 2 题意:删除若干行,使得n行字符串成递增排序 3 暴力+构造:从前往后枚举列,当之前的顺序已经正确时,之后就不用考虑了,这样删列最小 4 */ 5 /************* ...

  5. 【Codeforces - 632C】The Smallest String Concatenation (对string巧妙排序)

    题干: You're given a list of n strings a1, a2, ..., an. You'd like to concatenate them together in som ...

  6. Letters Removing CodeForces - 899F (线段树维护序列)

    大意: 给定字符串, 每次删除一段区间的某种字符, 最后输出序列. 类似于splay维护序列. 每次删除都会影响到后面字符的位置 可以通过转化为查询前缀和=k来查找下标. #include <i ...

  7. Codeforces Round #506 (Div. 3) - D. Concatenated Multiples(思维)

    题目链接 题意 给你N个数字和一个K,问一共有几种拼接数字的方式使得到的数字是K的倍数,拼接:"234"和"123"拼接得到"234123" ...

  8. Codeforces Round #701 (Div. 2) D. Multiples and Power Differences 思维构造

    传送门 题意: 给定一个矩阵aaa,让你构造一个矩阵bbb,要求矩阵bbb的每个元素是aaa对应位置元素的倍数,且矩阵bbb的每两个相邻元素相差为k4(k>=1)k^4(k>=1)k4(k ...

  9. Codeforces Round #666 (Div. 2)C - Multiples of Length(错位相减)

    problem 给出N个数,可以进行三次操作, 每次选中一个区间,区间里任意一个元素可以加上一个区间长度的倍数(并且加的数可以互相不同) 让所有数变成0 求方案 solution 好久没打CF了,签到 ...

  10. 【Codeforces】Round #375 (Div. 2)

    Position:http://codeforces.com/contest/723 我的情况 啊哈哈,这次raiting肯定要涨,接受过上次的教训,先用小号送肉,大号都是一发切,重回蓝咯 结果... ...

最新文章

  1. parse() got an unexpected keyword argument 'transport_encoding'
  2. boost之对象池使用实例
  3. 新一代球王!日本推AI篮球机器人,命中率接近100%!
  4. 【WEB API项目实战干货系列】- API访问客户端(WebApiClient适用于MVC/WebForms/WinForm)(四)
  5. python 管道 异步读取 select_python之异步select解析
  6. 解决git关联的的文件颜色、小图标
  7. Ant Design Landing 产品首页的设计神器
  8. 机器学习经典算法决策树原理详解(简单易懂)
  9. linux启动mqtt_MQTT--linux安装部署(CentOS)
  10. 完美运动框架封装函数startMove
  11. 阻止滑动事件_重温DOM事件流,捕获、冒泡、useCapture、passive
  12. WindowsXP_KB909667_x86_ENU
  13. FL Studio21.0中文版本FL水果娘发布更新
  14. select搜索功能实现
  15. 关于爆仓那些事,出现爆仓就是黑平台?
  16. 数据库迁移 软件Spoon Kettle环境搭配(本人踩过的坑)
  17. 云服务器代理平台安装教程
  18. python在windows中备份文件并压缩的解决办法
  19. 应用层——HTTP协议
  20. 70道关于JavaScript的常见面试题解答

热门文章

  1. arcgis生成等高线CAD无法识别高程
  2. 2020年4大安全会议及论文
  3. MATLAB 整数小数负数十进制转换为十六进制
  4. 《Robust Consistent Video Depth Estimation》论文笔记
  5. Matlab 可见光波段植被指数
  6. 关于3阶Volterra滤波器一些理解
  7. scikit-learn KNN实现糖尿病预测
  8. 数学建模学习之聚类算法
  9. 键盘钢琴html代码,键盘钢琴KeyboardPiano(源代码)
  10. html怎么解压缩文件,压缩包7z如何解压