Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only)
http://codeforces.com/contest/96
A
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,mid,rt<<1 4 #define rson mid+1,r,rt<<1|1 5 #define sqr(x) ((x)*(x)) 6 #define pb push_back 7 #define eb emplace_back 8 #define maxn 13000005 9 #define eps 1e-8 10 #define pi acos(-1.0) 11 #define rep(k,i,j) for(int k=i;k<j;k++) 12 typedef long long ll; 13 typedef pair<int,int> pii; 14 typedef pair<char,int> pci; 15 typedef pair<pair<int,string>,pii> ppp; 16 typedef unsigned long long ull; 17 const long long MOD=1e9+7; 18 /*#ifndef ONLINE_JUDGE 19 freopen("1.txt","r",stdin); 20 #endif */ 21 22 23 24 int main(){ 25 #ifndef ONLINE_JUDGE 26 // freopen("1.txt","r",stdin); 27 #endif 28 std::ios::sync_with_stdio(false); 29 string str; 30 cin>>str; 31 int co=1; 32 vector<int>ve; 33 for(int i=1;i<str.length();i++){ 34 if(str[i]!=str[i-1]){ 35 ve.pb(co); 36 co=1; 37 } 38 else{ 39 co++; 40 } 41 } 42 ve.pb(co); 43 for(int i=0;i<ve.size();i++){ 44 if(ve[i]>=7) {cout<<"YES"<<endl;return 0;} 45 } 46 cout<<"NO"<<endl; 47 }
B
dfs+二分
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,mid,rt<<1 4 #define rson mid+1,r,rt<<1|1 5 #define sqr(x) ((x)*(x)) 6 #define pb push_back 7 #define eb emplace_back 8 #define maxn 13000005 9 #define eps 1e-8 10 #define pi acos(-1.0) 11 #define rep(k,i,j) for(int k=i;k<j;k++) 12 typedef long long ll; 13 typedef pair<int,int> pii; 14 typedef pair<char,int> pci; 15 typedef pair<pair<int,string>,pii> ppp; 16 typedef unsigned long long ull; 17 const long long MOD=1e9+7; 18 /*#ifndef ONLINE_JUDGE 19 freopen("1.txt","r",stdin); 20 #endif */ 21 22 ll n; 23 24 set<ll>se; 25 map<ll,int>mp; 26 27 void Check(ll num){ 28 ll tmp=num; 29 int qi=0,si=0; 30 while(num){ 31 if(num%10==4){ 32 si++; 33 } 34 else if(num%10==7){ 35 qi++; 36 } 37 num/=10; 38 } 39 if(si==qi&&si>0){ 40 se.insert(tmp); 41 } 42 } 43 44 void dfs(ll num){ 45 if(num>n*100000||mp[num]) return; 46 mp[num]=1; 47 Check(num); 48 dfs(num*10+4); 49 dfs(num*10+7); 50 } 51 52 53 int main(){ 54 #ifndef ONLINE_JUDGE 55 // freopen("1.txt","r",stdin); 56 #endif 57 std::ios::sync_with_stdio(false); 58 cin>>n; 59 dfs(0); 60 set<ll>::iterator it; 61 it=lower_bound(se.begin(),se.end(),n); 62 cout<<*it<<endl; 63 }
C
模拟
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,mid,rt<<1 4 #define rson mid+1,r,rt<<1|1 5 #define sqr(x) ((x)*(x)) 6 #define pb push_back 7 #define eb emplace_back 8 #define maxn 13000005 9 #define eps 1e-8 10 #define pi acos(-1.0) 11 #define rep(k,i,j) for(int k=i;k<j;k++) 12 typedef long long ll; 13 typedef pair<int,int> pii; 14 typedef pair<char,int> pci; 15 typedef pair<pair<int,string>,pii> ppp; 16 typedef unsigned long long ull; 17 const long long MOD=1e9+7; 18 /*#ifndef ONLINE_JUDGE 19 freopen("1.txt","r",stdin); 20 #endif */ 21 const int N = 105; 22 string s[N], ss[N], w, ww; 23 bool vis[N]; 24 char str; 25 string change(string x) { 26 for(int i = 0; i < x.length(); i ++) { 27 if(x[i] >= 'A' && x[i] <= 'Z') x[i] += 32; 28 } 29 return x; 30 } 31 32 int main(){ 33 #ifndef ONLINE_JUDGE 34 // freopen("1.txt","r",stdin); 35 #endif 36 std::ios::sync_with_stdio(false); 37 int n; 38 cin >> n; 39 for(int i = 0; i < n; i ++) { 40 cin >> s[i]; 41 ss[i] = change(s[i]); 42 } 43 cin >> w >> str; 44 ww = change(w); 45 if(str >= 'A' && str <= 'Z') str += 32; 46 47 int l = ww.length(); 48 for(int i = 0; i < l; i ++) { 49 for(int k = 0; k < n; k ++) { 50 if(l-s[k].length() + 1 >= i && ww.substr(i, ss[k].length()) == ss[k]) { 51 for(int j = i; j < i + ss[k].length(); j ++) vis[j] = 1; 52 } 53 } 54 } 55 56 57 for(int i = 0; i < l; i ++) { 58 if(vis[i]) { 59 if(ww[i] == str) { 60 char tmp = 'a'; 61 if(ww[i] == 'a') tmp = 'b'; 62 63 if(w[i] >= 'A' && w[i] <= 'Z') w[i] = tmp - 32; 64 else w[i] = tmp; 65 } else { 66 if(w[i] >= 'A' && w[i] <= 'Z') w[i] = str - 32; 67 else w[i] = str; 68 } 69 } 70 } 71 cout << w << endl; 72 }
D
最短路 两次Dijstra 第一次构建以花费为权值的图,第二次跑最短路
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,mid,rt<<1 4 #define rson mid+1,r,rt<<1|1 5 #define sqr(x) ((x)*(x)) 6 #define pb push_back 7 #define eb emplace_back 8 #define maxn 13000005 9 #define eps 1e-8 10 #define pi acos(-1.0) 11 #define rep(k,i,j) for(int k=i;k<j;k++) 12 typedef long long ll; 13 typedef pair<int,int> pii; 14 typedef pair<long long,int>pli; 15 typedef pair<char,int> pci; 16 typedef pair<pair<int,string>,pii> ppp; 17 typedef unsigned long long ull; 18 const long long MOD=1e9+7; 19 /*#ifndef ONLINE_JUDGE 20 freopen("1.txt","r",stdin); 21 #endif */ 22 23 int n,m,s,t; 24 25 vector<pli>G[1005],ve[1005]; 26 vector<pli>a; 27 28 long long dis[1005],vis[1005]; 29 30 void dijstra1(int x){ 31 for(int i=0;i<=n;i++) dis[i]=0x3f3f3f3f3f3f3f3f,vis[i]=0; 32 dis[x]=0; 33 priority_queue<pli,vector<pli>,greater<pli>>Q; 34 Q.push({0,x}); 35 while(!Q.empty()){ 36 pli p=Q.top(); 37 Q.pop(); 38 int v=p.second; 39 if(!vis[v]){ 40 vis[v]=1; 41 for(int i=0;i<G[v].size();i++){ 42 int vv=G[v][i].second; 43 long long dist=G[v][i].first+dis[v]; 44 if(!vis[vv]&&dist<dis[vv]){ 45 dis[vv]=dist; 46 Q.push({dis[vv],vv}); 47 } 48 } 49 } 50 } 51 for(int i=1;i<a.size();i++){ 52 if(i!=x&&a[x].second>=dis[i]){ 53 ve[x].pb({a[x].first,i}); 54 } 55 } 56 } 57 58 void dijstra2(int x,int t){ 59 for(int i=0;i<=n;i++) dis[i]=0x3f3f3f3f3f3f3f3f,vis[i]=0; 60 dis[x]=0; 61 priority_queue<pli,vector<pli>,greater<pli>>Q; 62 Q.push({0,x}); 63 while(!Q.empty()){ 64 pli p=Q.top(); 65 Q.pop(); 66 int v=p.second; 67 if(!vis[v]){ 68 vis[v]=1; 69 for(int i=0;i<ve[v].size();i++){ 70 int vv=ve[v][i].second; 71 long long dist=ve[v][i].first+dis[v]; 72 if(!vis[vv]&&dist<dis[vv]){ 73 dis[vv]=dist; 74 Q.push({dis[vv],vv}); 75 } 76 } 77 } 78 } 79 if(dis[t]==0x3f3f3f3f3f3f3f3f) cout<<-1<<endl; 80 else cout<<dis[t]<<endl; 81 } 82 83 int main(){ 84 #ifndef ONLINE_JUDGE 85 // freopen("1.txt","r",stdin); 86 #endif 87 std::ios::sync_with_stdio(false); 88 cin>>n>>m>>s>>t; 89 int u,v; 90 long long c; 91 for(int i=1;i<=m;i++){ 92 cin>>u>>v>>c; 93 G[u].pb({c,v}); 94 G[v].pb({c,u}); 95 } 96 a.pb({0,0}); 97 for(int i=1;i<=n;i++){ 98 cin>>u>>c; 99 a.pb({c,u}); 100 } 101 for(int i=1;i<=n;i++){ 102 dijstra1(i); 103 } 104 dijstra2(s,t); 105 }
E
大数+数位DP
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,mid,rt<<1 4 #define rson mid+1,r,rt<<1|1 5 #define sqr(x) ((x)*(x)) 6 #define pb push_back 7 #define eb emplace_back 8 #define maxn 13000005 9 #define eps 1e-8 10 #define pi acos(-1.0) 11 #define rep(k,i,j) for(int k=i;k<j;k++) 12 typedef long long ll; 13 typedef pair<int,int> pii; 14 typedef pair<long long,int>pli; 15 typedef pair<char,int> pci; 16 typedef pair<pair<int,string>,pii> ppp; 17 typedef unsigned long long ull; 18 const long long mod=1e9+7; 19 /*#ifndef ONLINE_JUDGE 20 freopen("1.txt","r",stdin); 21 #endif */ 22 const int N=1005; 23 int digit[N]; 24 ll dp[N][N][2]; 25 char l[N], r[N]; 26 int k; 27 int dfs(int len, int p, bool flag, bool limit) { 28 if (len == 0) return flag; 29 if (limit == 0 && dp[len][p][flag] != -1) return dp[len][p][flag]; 30 int up = limit ? digit[len] : 9; 31 int res = 0; 32 rep(i, 0, up + 1) { 33 if (i != 4 && i != 7) 34 res = (res + dfs(len - 1, max(0, p - 1), flag, limit && i == up)) % mod; 35 else res = (res + dfs(len - 1, 1 * k, flag || p, limit && i == up)) % mod; 36 } 37 if (!limit) dp[len][p][flag] = res; 38 return res; 39 } 40 void solve() { 41 int t; 42 memset(dp, -1, sizeof dp); 43 scanf("%d%d", &t, &k); 44 while (t--) { 45 scanf("%s%s", l, r); 46 int len = strlen(r); 47 for(int i=len;i>=0;i--) digit[i] = r[len - i] - '0'; 48 int ans = dfs(len, 0, 0, 1); 49 len = strlen(l); 50 for(int i=len;i>=0;i--) digit[i] = l[len - i] - '0'; 51 digit[1]--; 52 for (int i = 1; digit[i] < 0; i++) { 53 digit[i] += 10; 54 digit[i + 1]--; 55 } 56 if (digit[len] == 0) len--; 57 ans = (ans - dfs(len, 0, 0, 1) + mod) % mod; 58 printf("%d\n", ans); 59 } 60 } 61 62 int main(){ 63 #ifndef ONLINE_JUDGE 64 // freopen("1.txt","r",stdin); 65 #endif 66 std::ios::sync_with_stdio(false); 67 solve(); 68 }
posted on 2019-03-12 14:11 Fighting_sh 阅读(185) 评论(0) 编辑 收藏 举报