双城记 A Tale of Two Cities

2024-04-10 04:08
文章标签 two cities tale 双城记

本文主要是介绍双城记 A Tale of Two Cities,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                       双城记 A Tale of Two Cities

帮助Tom和Jerry解决了问题后,它们愉快的带着crazygirl来到了双城。
双城虽说是叫双城,但是其实只是一座被一条河流分成东西两半的城市。
双城的户籍系统很神奇。每一个人都有一个不重复编号。每出生一个人,这个人的标号就会变为原先的最大标号加一。每过世一个人,如果生前他的标号不是最大的,当前标号最大的人的标号就会变为逝者的标号。这样,双城所有居民的标号就始终恰好为1-n。另外双城城主不需要户籍,因此没有标号。
住在河流之上的悬浮花园的双城城主很喜欢2这个数字。于是下令,所有住在东边的居民,如果标号为自己2倍再加2的人没有住在西边或者是干脆不存在,那么他必须搬出去;所有住在西边的居民,如果没有任何一个住在东边的居民标号乘2再加2等于他的标号,他也必须搬出城。
这个命令一下,所有的居民顿时叫苦不迭。他们听说crazygirl刚刚解决了Tom和Jerry的他们都不会的问题,于是乎请求crazygirl帮忙重新安排他们的住宿方案,使得能够住在城里的人尽量多。

输入格式:

一行一个整数n

输出格式:

一行一个整数表示居住在城内的最大人数

样例输入:

10

样例输出:

6

数据范围:

对于10%的数据 1 <= n <= 10
对于30%的数据 1 <= n <= 1000
对于80%的数据 1 <= n <= 10^18
对于90%的数据 1 <= n <= 10^1000
对于100%的数据 1 <= n <= 10^10000

时间限制:

1s

空间限制:

256M

提示:

remove!!!

我们对于这些数处理成一条条链,然后每次计算除去最后一个点(最后一条边)的剩余链上边数,然后显然一个取,一个不取,所以就容斥一下,就可以过了。加个高精

我们知道前面见后面为该层边的边数,所以并非容斥原理就可以A

#include<bits/stdc++.h>
using  namespace  std;
long  long  n,ans,p;
int  main()
{
     cin>>n;
     p=-1;
     while (n=(n-2)/2)
     {
         if (n<0)  break ;
         p=-p;
         ans+=p*n;
     }
     cout<<ans*2;
}

这篇关于双城记 A Tale of Two Cities的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/890028

相关文章

Java多线程编程模式实战指南:Two-phase Termination模式

文章来源: http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-two-phase-termination?utm_source=infoq&utm_campaign=user_page&utm_medium=link 文章代码地址: https://github.com/Visce

[LeetCode] 583. Delete Operation for Two Strings

题:https://leetcode.com/problems/delete-operation-for-two-strings/description/ 题目 Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in

【Codeforces】449B Jzzhu and Cities 最短路

传送门:【Codeforces】449B Jzzhu and Cities 题目大意:一个n个节点的无向图,节点编号1~n(其中1为起点),其中有m条普通普通,还有k条从起点出发的特殊边,问最多去掉多少的特殊边使得从起点到其他所有点的最短路径的距离不变。 题目分析:这题的意图很明显啊,就是要我们去求最短路啊。那么怎么求会比较好呢?其实我们可以很容易的发现如果从起点通过边权为c的特殊

CodeForces 425C Sereja and Two Sequences

题意: 两组数字a和b  如果a[i]等于b[j]  则可将a[i]和b[j]前所有数字删掉  这种操作花费e体力  得到1元钱  或者一次删掉所有数字  这种操作花费等于曾经删除的所有数字个数  做完后得到所有钱  问 一共s体力 可以得到多少钱 思路: dp+二分 由数据可知最多拿到300元钱  因此可以定义  dp[i][j]表示有i元钱时  b串删除到了j处时  a串删到的位

poj 1849 Two(树形dp求直径)

树的直径:一棵树中两个点间的最长距离。 Description The city consists of intersections and streets that connect them.  Heavy snow covered the city so the mayor Milan gave to the winter-service a list of streets that ha

Longest Substring with At Most Two Distinct Characters

Given a string, find the length of the longest substring T that contains at most 2 distinct characters. For example,Given s = “eceba”, T is "ece" which its length is 3. 思路:同向双指针,跟Longest Substrin

Two to One——C语言提高题【7 kyu】

一、原题 链接:Training on Two to One | Codewars Take 2 strings s1 and s2 including only letters from a to z. Return a new sorted string (alphabetical ascending), the longest possible, containing distinct

LeetCode --- Median of Two Sorted Arrays

第一次在csdn上写备忘录,以前一直是在笔记本上写,主要是笔记本上可以随意写,只要自己能看懂,在网页上多少都受些限制,另外一方面也是想锻炼下写作能力,为以后的论文做基础吧!最近偶尔上leetcode练些题目,所以也就以这个为主题写一篇试试看,因为能力不足,理解或言辞上会有错误,还望访者不吝赐教,我定当万分感激。 好了,废话也说完了,现在进入正题: 题目: There are two sor

2pc_two phase commit详情

文章目录 1. two phase commit protocol1.假设前提2. 算法概述3. 缺点4. 详情1. coordinator 端来看2. cohorts端 5. 正确性分析6. 简单总结 看2pc和3pc看的晕晕乎乎的,看了很多博客,感觉说的都不够细致,看起来也容易犯晕,找到了两篇英文文档(不算原文),看起来好像是清楚一些,有些时候这些协议类的东西研读,如果不是

1013. Battle Over Cities (25) DFs

1013. Battle Over Cities (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It is vitally important to have all the cities connected by highways in a