博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CF805C] Find Amir(贪心,构造,模拟)
阅读量:5009 次
发布时间:2019-06-12

本文共 1281 字,大约阅读时间需要 4 分钟。

题目链接:http://codeforces.com/contest/805/problem/C

题意:n个数,从i到j的花费为(i+j)%(n+1),问n个数都要走一遍,求最小花费。

希望尽可能地让i+j是n+1的倍数,所以构造:从1开始,那么下一个点必为n,因为(1+n)%(1+n)=0为最小花费,从n则可以到2,没办法,只能花费1。以此类推反复横跳。

1 #include 
2 using namespace std; 3 4 const int maxn = 100100; 5 int n, a[maxn]; 6 bool vis[maxn]; 7 8 int main() { 9 // freopen("in", "r", stdin);10 while(~scanf("%d", &n)) {11 memset(vis, 0, sizeof(vis));12 int mod = n + 1;13 int ret = 0, cnt = 1;14 int cur = 1;15 int lo = 2;16 vis[cur] = 1;17 while(cnt <= n) {18 if(!vis[mod-cur]) {19 vis[mod-cur] = 1;20 cur = mod - cur;21 }22 else {23 vis[lo] = 1;24 cur = lo;25 lo++;26 ret++;27 }28 cnt++;29 }30 printf("%d\n", ret-1);31 }32 return 0;33 }

 

???找规律发现,这答案直接输出(n-1)/2就行了。。

1 #include 
2 using namespace std; 3 4 const int maxn = 100100; 5 int n, a[maxn]; 6 bool vis[maxn]; 7 8 int main() { 9 // freopen("in", "r", stdin);10 while(~scanf("%d", &n)) {11 printf("%d\n", (n-1)/2);12 }13 return 0;14 }

 

转载于:https://www.cnblogs.com/kirai/p/6856790.html

你可能感兴趣的文章
Mac必备软件推荐
查看>>
Android Gson深入分析
查看>>
display:flow-root
查看>>
判读字符串是否为空的全局宏-分享
查看>>
iOS中Block的基础用法
查看>>
mac 终端 使用ftp命令
查看>>
22-reverseString-Leetcode
查看>>
Centos 开机自动联网
查看>>
cocos2dx使用lua和protobuf
查看>>
使用Spring配合Junit进行单元测试的总结
查看>>
HDOJ 5630 Rikka with Chess
查看>>
netcore2.1 在后台运行一个任务
查看>>
PostgreSQL pg_hba.conf 文件简析
查看>>
android o logcat read: unexpected EOF!
查看>>
[Scrum]2010/12/28 —— 第一天!
查看>>
ASP.NET MVC模式 温习(一)排除MVC模式误区
查看>>
Mysql的read_only 只读属性说明 (运维笔记)
查看>>
DOCKER 从入门到放弃(五)
查看>>
Python 多线程学习
查看>>
appcan官方ajax
查看>>