UVALive 4953 Wormly--【提醒自己看题要仔细】
2014-05-02 21:55
253 查看
有一条虫要过桥,桥有断的木板和好的木板。虫有L条腿B个身体,桥长N。01串表示桥的好坏。输出最少操作次数。
一开始虫的身体在最左B桥上,腿在最左L桥上,最后要到达最右B以及最右L。。。
操作有2种:①所有身体前进一步②某一条腿前进任意步。。。。整个过程要保证每个身体下只能有一条腿。。。。还有就是任意一条腿不能overtake(追上、赶上)其他腿。。
输入保证起点终点的桥都是完好的。。。
鉴于中文水平跟英语水平都不高。。。题意请自行YY脑补。。。
看题不仔细。。。。再次坑队友。。。。大家好,我是坑神=。=真感谢 前度和现队友 对我的体谅。。。。。
一开始没留意到overtake是这个意思(英语渣),然后上线段树、优先队列。。。。复杂度其实也很高。。。
赛后看清题意后。。在自己的基础上,加了个sum数组,参考队花NX的。。。。sum[i]表示前i个桥好桥的个数。。。不知为啥比队花的要快。。。看不懂队花的做法。。
这个复杂度大概是O(n)吧。。。
View Code
一开始虫的身体在最左B桥上,腿在最左L桥上,最后要到达最右B以及最右L。。。
操作有2种:①所有身体前进一步②某一条腿前进任意步。。。。整个过程要保证每个身体下只能有一条腿。。。。还有就是任意一条腿不能overtake(追上、赶上)其他腿。。
输入保证起点终点的桥都是完好的。。。
鉴于中文水平跟英语水平都不高。。。题意请自行YY脑补。。。
看题不仔细。。。。再次坑队友。。。。大家好,我是坑神=。=真感谢 前度和现队友 对我的体谅。。。。。
一开始没留意到overtake是这个意思(英语渣),然后上线段树、优先队列。。。。复杂度其实也很高。。。
赛后看清题意后。。在自己的基础上,加了个sum数组,参考队花NX的。。。。sum[i]表示前i个桥好桥的个数。。。不知为啥比队花的要快。。。看不懂队花的做法。。
这个复杂度大概是O(n)吧。。。
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> #include <string> #include <vector> using namespace std; #define ll long long #define mod 1000000007 #define inf 0x3f3f3f3f #define eps 1e-8 #define maxn 1000010 char str[maxn]; int sum[maxn]; int main(){ int t; int leg,body,n; scanf("%d",&t); while(t--){ scanf("%d%d%d",&leg,&body,&n); scanf("%s",str+1); if(leg==body){ printf("%s\n",body==n?"0":"IMPOSSIBLE"); continue; } sum[0]=0; for(int i=1;i<=n;++i)sum[i]=sum[i-1]+(str[i]-'0'); bool can=true; for(int i=body;i<=n;++i)if(sum[i]-sum[i-body]<leg){can=false;break;} if(can==false){puts("IMPOSSIBLE");continue;} ll ans=0; int l=1; int bb=1,bb2=body; while(l!=n+1-leg){ if(bb<l&&bb2!=n){ int dx = min(l-bb,n-bb2);// bb2+dx<=n ans+=dx,bb+=dx,bb2+=dx; } if(sum[bb2]-sum[l]<leg){can=false;break;} while(sum[bb2]-sum[l]>=leg)++l; ans+=leg; } if(can)printf("%lld\n",ans); else puts("IMPOSSIBLE"); } return 0; }
View Code
相关文章推荐
- UVALive 3135--Argus+自己定义优先队列的优先规则
- UVALive 5103 Computer Virus on Planet Pandora Description 一些新兴需求模式的字符串 AC自己主动机
- java static的滥用(提醒下自己,还没来得及细看)
- UVAlive 6160 Countdown 解题报告
- E - Euclidean TSP UVALive - 6954
- UVALIVE 3645 Objective: Berlin
- UVALIVE 4329 Ping pong(树状数组)
- UVALive 7279 Sheldon Numbers(位运算、暴力、想法)
- The 2014 ACM-ICPC Asia Shanghai Regional Contest - I - Defeat the Enemy (贪心+multiset)UVALive - 7146
- UVaLive 2995 Image Is Everything 立方体成像
- UVALIVE 3644 X-Plosives
- UVALive 3027 Corporative Network
- UVA 10716 Evil Straw Warts Live(贪心)
- UVALive - 4015 Caves 树形DP
- UVALive - 3490 Generator 【数学】【高斯消元】
- UVALive 6657 GCD XOR
- UVALive 4361 Tobo or not Tobo
- UVALive 6847 Zeroes(规律)
- VS+Qt 然后自己编写.pro文件时,提醒不能打开 ui_*.h 文件解决防范
- UVALive 6947 Improvements(DP+树状数组)