URAL 1830 Help in the RNOS 思路,讀題 難度:1

http://acm.timus.ru/problem.aspx?space=1&num=1830

這道題需要理解題目操作的意思,

要更改第i位的狀態,第i-1位必須激活為1,0-i-2位必須為0,如果0-i-1位開始時全為0,那么從0位開始進行操作

一.首先考慮對于0-i-1位都是0,需要更改i位的情況,需要 1.更改i-1位,2.按一下打開下一頁

對于更改i-1位,需要1.更改i-2位,2.按一下打開下一頁,3.更改i-2位

可以得到一個式子,設f[i]為第0-i-1位均為0時,使得狀態成為第i位被更改,第0-i-1位仍為0的操作數,則f[i]=2*f[i-1]+1

二.因為從前往后更改會影響之前的狀態,所以我們從后往前更改,當最后一個不相同位置e已被上面的操作更改后,只有e-1位為1,其它都為0,滿足上面的條件,可以直接相加

三.對于更改最后一位e的操作,因為這個時候前面不一定全都為0,所以有:

假設第e位是第i個1,

對于第i-1個1,這個1是有用的,可以作為起點,如果它是第j位,它的操作數為f[j]+1,對于e來說,因為計算f[e]時認為2*f[j]+1,所以要減去f[j],

對于第i-2個1,這個1阻礙了第i-1個1,是無用的,如果它是第j位,它的操作數為3*f[j]+1(一次關閉操作),對于e來說,需要加上f[j]

對于第i-3個1,有用,

對于第i-4個1,無用........

依次類推,直接相加可得答案

四:注意long long

?

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
char org[100],aim[100];
ll f[50];
int main(){int n;ll ans=0;scanf("%d%s%s",&n,org,aim);f[0]=1;for(int i=1;i<n;i++){f[i]=2*f[i-1]+1;}for(int i=n-1;i>=0;i--){if(org[i]==aim[i])continue;ll sub=0;int fl=1;for(int j=i-1;j>=0;j--){if(org[j]=='1'){sub=sub+f[j]*fl;if(j!=i-1)org[j]='0';fl=-fl;}}if(i>0)org[i-1]='1';ans+=(i>0?f[i-1]:0)-sub+1;org[i]=aim[i];}printf("%I64d\n",ans);return 0;
}

  

轉載于:https://www.cnblogs.com/xuesu/p/4296895.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376198.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376198.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376198.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

openssh升級sftp_OpenSSH 8.2 發布 包括 sftp 客戶端和服務器支持

OpenSSH 8.2 發布了。OpenSSH 是 100% 完整的 SSH 協議 2.0 版本的實現&#xff0c;并且包括 sftp 客戶端和服務器支持。此版本變化不少&#xff0c;其中有兩個地方值得特別關注。一個是新特性&#xff0c;此版本增加了對 FIDO/U2F 硬件身份驗證器的支持。FIDO/U2F 是廉價硬件雙…

任務隊列摘自新鋒

在開發C程序時&#xff0c;一般在吞吐量、并發、實時性上有較高的要求。設計C程序時&#xff0c;總結起來可以從如下幾點提高效率&#xff1a; l 并發l 異步l 緩存下面將我平常工作中遇到一些問題例舉一二&#xff0c;其設計思想無非以上三點。 1任務隊列 1.1 以生產者-消…

C++容器遍歷時刪除元素

vector 錯誤做法 這樣做會在遍歷過程中越界導致程序崩潰 std::vector<int> vecInt({ 1, 3, 2, 1, 4, 1 });for (auto i vecInt.begin(); i ! vecInt.end() ; i) {if (*i 1) {vecInt.erase(i);}}正確做法 std::vector<int> vecInt({ 1, 3, 2, 1, 4, 1 });for (a…

按鈕圖片拉伸_圖片墻有多香?高手都在用的PPT封面制作技巧!

大家好&#xff0c;我是李導~這次&#xff0c;冬天是真的來了&#xff0c;不知道大家有沒有感覺&#xff0c;每次冷空氣真正襲來之前我們都會以為今年是個暖冬&#xff0c;結果突然有一天氣溫從20度直降到個位數&#xff0c;我們都會認為今年比以往的冬天都冷。但是&#xff0c…

POJ 1745 Divisibility【DP】

題意&#xff1a;給出n,k,n個數&#xff0c;在這n個數之間任意放置,-號&#xff0c;稱得到的等式的值能夠整除k則為可劃分的&#xff0c;否則為不可劃分的。 自己想的是枚舉&#xff0c;將所有得到的等式的和算出來&#xff0c;再判斷它是否能夠整除k&#xff0c;可是有10000個…

三種root的修補方式

三種root的修補方式 system/core/adb/abd.c adbd漏洞&#xff0c;請看abd.c的第917行/* then switch user and group to "shell" */ if (setgid(AID_SHELL) ! 0) { exit(1); } if (setuid(AID_SHELL) ! 0) { exit(1); …

數據挖掘十大經典算法

國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 2006年12月評選出了數據挖掘領域的十大經典算法&#xff1a;C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART. 不不過選中的十大算法&#xff0c;事實上參加評選…

windows dmp文件為0kb

列出一些遇到的情況提供參考&#xff1a; 1、棧溢出&#xff0c;多次調用T2A函數會出現程序崩潰但是dmp為0kb的問題。

dynamic與var

dynamic與var示例 var是一種語法省略寫法&#xff0c;編譯器會根據上下文推斷出正確的類型。 int[] scores new int[] { 1, 2, 7, 9, 8, 4, 6, 5 };foreach (var item in scores){Console.WriteLine(item);} 在大多數情況下&#xff0c;dynamic 類型與 object 類型的行…

線程間的消息(或數據)傳遞

使用“事件”可以實現線程間“消息/數據”的傳遞&#xff0c;非常棒的一種方法。轉載于:https://www.cnblogs.com/changbaishan/p/3471113.html

gt9xx linux 移植_GT9XX驅動移植說明書_for_Android_2014011401.pdf

GT9XXforAndroid驅動移植說明書一、驅動基本信息支持芯片型號 GT911 GT9110 GT9110P GT913 GT915 GT918 GT927 GT928 GT960GT968 GT910 GT912 GT960F GT950 GT968F GT9158 GT967 GT9150GT963GT9271GT917DI2C設備地址(7位) 0x5d、0x14I2C寄存器地址 16位APK工具/ADB工具 支持自動…

spring-session之一:簡介、使用及實現原理

一、背景 http session&#xff08;企業&#xff09;一直都是我們做集群時需要解決的一個難題&#xff0c;我們知道HttpSession是通過Servlet容器創建和管理的&#xff0c;像Tomcat/Jetty都是保存在內存中的。而如果我們把web服務器搭建成分布式的集群&#xff0c;然后利用LVS或…

How to check bad fix

最近做了一個backport的票&#xff0c;backport就是別人以前修復了這個bug&#xff0c;我只需要將fix移植到客戶的系統中。這是一 個沒有技術含量的票&#xff0c;遇到簡單的票&#xff0c;三下五除二就解決了。但是遇到目標版本與master差別大時&#xff0c;也許backport后不好…

cad2017怎么改變選擇方式_家用胎心儀怎么使用?建議孕媽媽選擇數胎動的方式...

一般胎心儀都有說明書&#xff0c;孕媽媽可以根據說明書上的方法去做。 下面介紹比較通用的方法。時間&#xff1a;早中晚餐后的30-60分鐘內 環境&#xff1a;周圍沒有電磁或輻射等干擾 輔助&#xff1a;耦合劑 步驟&#xff1a; 1、平躺&#xff0c;尋找適合胎心位置 在聽胎心…

c#endread怎么打印出來_打印機打印出來是白板是怎么回事

引起針式打印紙空白的原因大多是由于色帶油墨干涸、色帶拉斷、打印頭損壞等&#xff0c;應及時更換色帶或維修打印頭。故障現象:針式打印機有打印聲但打印空白。維修方法:具體解決方法如下:1) 檢查打印機色帶盒是否正確安裝&#xff0c;如果安裝不正確&#xff0c;重新安裝色帶…

使用dnspod遭遇的奇特問題以及背后的原因與臨時解決方法

由于園子里有不少用戶在使用dnspod&#xff0c;我們覺得有必要將這兩天blogjava.net域名在dsnpod遇到的奇特問題分享一下&#xff0c;以免再有人踩著這個坑。 12月11日&#xff0c;我們登錄到dnspod的后臺時&#xff0c;大吃一驚&#xff0c;blogjava.net這個域名竟然消失了。 …

lgg6可以root的版本_Kali Linux 2020.1版本變更內容

kali2020.1于2020年1月28日發布&#xff0c;為2020年的第一個版本&#xff0c;由于此版本相較以前有較大變化&#xff0c;故專篇記錄一下。根據官方說明&#xff0c;主要改變如下&#xff1a;默認用戶改為非root用戶針對不同需求出了單獨的鏡像文件nethunter改為非root用戶改進…

隨機生成六位不重復數值

在《Core JAVA》中有個隨機生成六位不重復數值的算法&#xff0c;大二用過一次&#xff0c;今天在寫《Algorithms》的練習題遇到類似的問題&#xff0c;特貼出&#xff01; 1 // 隨機生成六位不重復的數字2 private static int generate6BitInt() {3 int[] arr {0, 1, 2, …

.net 代理類(WebService代理類的詳解 )

http://hi.baidu.com/654085966/item/53ee8c0f108ad78202ce1b1d -----------轉自 客戶端調用Web Service的方式我現在知道的有三種,分別為Http_Get,Http_Post和通過代理類來調用 直接通過HTTP-GET和直接通過HTTP-POST來請求訪問Web服務是非常底層的且麻煩,(詳細用法請查看C#分…

icem密度盒怎么設置_怎么做好火災自動報警系統施工安裝?

關于火災自動報警系統施工安裝GB50166-2019 《火災自動報警系統施工及驗收標準》 中有明確規定&#xff1a;3.1 一般規定3.1.1 系統部件的設置應符合設計文件和現行國家標準《火災自動報警系統設計規范》GB50116的規定。3.1.2 有爆炸危險性的場所&#xff0c;系統的布線和部件的…