别问我为什么现在才发。。。

我怎么睡醒午觉吃了个饭就晚上九点半了啊?????

真实自闭场,感觉码力严重不足需要补魔。

A:

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll s,g;
int main(){
ios::sync_with_stdio(false);
cin>>s>>g;
if(s%g!=){
cout<<-;
}else if(s==g){
cout<<-;
} else{
ll tmp = s/g;
cout<<g<<' '<<(tmp-)*g;
}
}

B:显然最小的三角形两条边相邻,扫一遍就完了。

 #include <bits/stdc++.h>
using namespace std;
typedef double db;
typedef long long ll;
const db eps = 1e-;
const db pi = acos(-);
int sign(db k){
if (k>eps) return ; else if (k<-eps) return -; return ;
}
int cmp(db k1,db k2){return sign(k1-k2);}
struct point {
ll x,y;
point operator - (const point &k1) const{return (point){x-k1.x,y-k1.y};}
};
ll cross(point k1,point k2){return k1.x*k2.y-k1.y*k2.x;}
int n;
point p[];
int main(){
ios::sync_with_stdio(false);
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%lld%lld",&p[i].x,&p[i].y);
}
ll ans = 4e18;
for(int i=;i<n;i++){
ll tmp = cross(p[i]-p[(i+)%n],p[(i+)%n]-p[(i+)%n]);
ans=min(ans,abs(tmp));
}
printf("%lld\n",ans);
}

C:贪心选最晚的时刻就完了。

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct Node{
int a,b;
}node[];
bool cmp(Node x,Node y){
return x.b<y.b;
}
int n;
vector<int> ans;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d",&node[i].a,&node[i].b);
}
sort(node+,node++n,cmp);
int now;
for(int l=,r;l<=n;l=r+){
now = node[l].b;r=l;
ans.push_back(now);
while (r<n&&node[r+].a<=now){
r++;
}
}
int t = ans.size();
printf("%d\n",t);
for(auto u:ans){
printf("%d ",u);
}
}

D:

E:

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string s,t;
bool slove(int l,int r){
while (l<=r){
if(s[l]==t[r]&&s[r]==t[l]){
} else {
return false;
}
l++,r--;
}
return true;
}
int main(){
ios::sync_with_stdio(false);
cin>>s>>t;
if(s==t){
cout<<"YES"<<endl;
exit();
}
int l=-,r=-;
for(int i=;i<s.length();i++){
if(s[i]!=t[i]) {
l=i;
break;
}
}
for(int i=s.length()-;i>=;i--){
if(s[i]!=t[i]){
r=i;
break;
}
}
if(slove(l,r))
cout<<"YES";
else
cout<<"NO";
}
/**
adcba
adabc
*/

F:wa自闭了。。一直wa48。。这个题显然我们可以用一种类似拓扑排序的方式搞。

但是在中间过程要记录一下当前节点的父节点来check,

可以看一下这位大神的题解  https://blog.csdn.net/v5zsq/article/details/80156734

一是建完图以后看一下是否连的边在原图中都存在。

二是在中间更新父节点的时候,新更新的父节点肯定在之前的父节点(祖先)里。

有点含糊不清。fa其实就是从祖先不断更新一直更新到父节点的这个过程。

 #include <bits/stdc++.h>
#define pii pair<int,int>
#define mk(a,b) make_pair(a,b)
using namespace std;
typedef long long ll;
int n,c,a;
int g[][];
int deg[],fa[];
vector<int> v[];
vector<pii>ans;
void gg() { cout << "NO";exit(); }
int main(){
ios::sync_with_stdio(false);
memset(fa,-, sizeof(fa));
cin>>n;
for(int i=;i<=n;i++){
cin>>c;
while (c--){
cin>>a;
g[i][a]=;
v[i].push_back(a);
deg[a]++;
}
}
queue<int> q;
for(int i=;i<=n;i++)
if(deg[i]==)q.push(i);
if(q.size()!=)gg();
int rt=q.front();
while (!q.empty()){
int x = q.front();
q.pop();
for(auto u:v[x]){
deg[u]--;
if(fa[u]!=-&&!g[fa[u]][x]){//新的祖先必然要以之前的祖先为祖先
gg();
}
fa[u]=x;
if(deg[u]==){
q.push(u);
ans.push_back(mk(x,u));
}
}
}
for(int i=;i<=n;i++){
if(i==rt)continue;
for(auto u:v[i]){
if(!g[fa[i]][u])gg();
}
}
if(ans.size()==n-){
cout<<"YES"<<endl;
for(auto tmp:ans){
cout<<tmp.first<<' '<<tmp.second<<endl;
}
} else {
gg();
}
}

H:bfs。要注意的是判断能不能走的时候每个点被更新的次数是很少的所以不会T。

看到有大神说至多两次。。。不太清楚。。。

 #include <bits/stdc++.h>
#define pii pair<int,int>
#define mk(a,b) make_pair(a,b)
using namespace std;
typedef long long ll;
const int N = 2e5+;
int n,m,d;
bool in(int x,int y){
return x>=&&y>=&&x<=n&&y<=m;
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>m>>d;
char s[n+][m+];
int vis[n+][m+];
int val[n+][m+];
memset(vis,, sizeof(vis));
memset(val,, sizeof(val));
queue<pii> q;
pii u,v;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++) {
cin >> s[i][j];
if(s[i][j]=='S') u=mk(i,j);
else if(s[i][j]=='F') v=mk(i,j);
else if(s[i][j]=='M') {
q.push(mk(i,j));vis[i][j]=;
}
}
}
while (!q.empty()){
int x = q.front().first,y=q.front().second;
q.pop();
if(in(x-,y)&&!vis[x-][y]&&val[x][y]<d){
vis[x-][y]=;
val[x-][y]=val[x][y]+;
q.push(mk(x-,y));
}
if(in(x+,y)&&!vis[x+][y]&&val[x][y]<d){
vis[x+][y]=;
val[x+][y]=val[x][y]+;
q.push(mk(x+,y));
}
if(in(x,y-)&&!vis[x][y-]&&val[x][y]<d){
vis[x][y-]=;
val[x][y-]=val[x][y]+;
q.push(mk(x,y-));
}
if(in(x,y+)&&!vis[x][y+]&&val[x][y]<d){
vis[x][y+]=;
val[x][y+]=val[x][y]+;
q.push(mk(x,y+));
}
}
if(vis[u.first][u.second]){
return *printf("-1\n");
}
while (!q.empty()) q.pop();
q.push(u);
memset(val,, sizeof(val));
while (!q.empty()){
int x=q.front().first,y=q.front().second;
q.pop();
if(in(x,y+)&&!val[x][y+]&&!vis[x][y+]){
val[x][y+]=val[x][y]+;
q.push(mk(x,y+));
}
if(in(x,y-)&&!val[x][y-]&&!vis[x][y-]){
val[x][y-]=val[x][y]+;
q.push(mk(x,y-));
}
if(in(x+,y)&&!val[x+][y]&&!vis[x+][y]){
val[x+][y]=val[x][y]+;
q.push(mk(x+,y));
}
if(in(x-,y)&&!val[x-][y]&&!vis[x-][y]){
val[x-][y]=val[x][y]+;
q.push(mk(x-,y));
}
}
if(val[v.first][v.second])
printf("%d\n",val[v.first][v.second]);
else
printf("-1\n");
}

J:

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = ;
int n,x,a[N];
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=;i<=n;i++){
cin>>x;a[x]++;
}
int ans = ;
for(int i=;i<=;i++){
ans+=a[i]/;
}
ans/=;
cout<<ans<<endl;
}

K:显然二分,然后我们贪心的选就可以了。

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m;
int a[];
int check(int x){
int res=;
for(int i=;i<=n;i++){
if(a[i]<=res){
res++;
} else if(a[i]>res&&x>){
x--;
res++;
}
}
return res;
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=;i<=n;i++){
cin>>a[i];
}
int l=,r=n,ans=m;
while (l<=r){
int mid = l+r>>;
if(check(mid)>=m){
r=mid-;
ans=mid;
} else{
l=mid+;
}
}
cout<<ans;
}

L:严重码力不足,,其实挺好想的,我们维护s串第i个位置下一个j字母的位置就可以了。

但是当时没写。。。貌似在专心自闭F。。。

 #include <bits/stdc++.h>
using namespace std;
const int N = ;
int nxt[N][],pos[],q;
char s[N],op[];
int ans[N];
int main(){
scanf("%s",s+);
int n = strlen(s+);
memset(nxt,-, sizeof(nxt));
memset(pos,-, sizeof(pos));
for(int i=n;i>=;i--){
for(int j=;j<;j++)
nxt[i][j]=pos[j];
pos[s[i]-'a']=i;
}
scanf("%d",&q);
int m=,len=;
while (q--){
scanf("%s",op);
if(op[]=='o'){//
m--;len=min(len,m);
} else{
scanf("%s",op);
if(ans[m]!=-&&nxt[ans[m]][op[]-'a']!=-) {
ans[m+]=nxt[ans[m]][op[]-'a'];
m++;len++;
} else{
ans[++m]=-;
}
}
if(len==m)printf("YES\n");
else printf("NO\n");
}
}
/**
abcabc
4
push a
push a
push a
push a
*/

M:

还是上面那个大神的 https://blog.csdn.net/v5zsq/article/details/80168485

这种小模拟思路清晰非常重要,然后我当时大概神志不清??反正就是不想写(雾

 #include <bits/stdc++.h>
using namespace std;
string a,b,c;int n;
vector<int> v;
bool check(){
int num=;
for(int i=;i<n;i++){
if(b[i]!=a[i])num++;
if(num>)return ;
}
num=;
for(int i=;i<n;i++){
if(c[i]!=a[i])num++;
if(num>)return ;
}
return ;
}
int main(){
ios::sync_with_stdio(false);
cin>>a>>b>>c;n=a.length();
for(int i=;i<n;i++){
if(a[i]!=b[i]||a[i]!=c[i])v.push_back(i);
}
if(v.size()>){
cout<<"Impossible"<<endl;
return ;
}
if(v.size()==){
cout<<"Ambiguous"<<endl;
return ;
}
int ans = ;
int pos,x;
if (check()){
ans++;
x=a[];pos=;
}
bool f=;
for(auto id:v){
char tmp = a[id];
for(int i=;i<;i++){
if(tmp==char('a'+i))continue;
a[id]=char('a'+i);
if(check()){
ans++;pos=id,x=char('a'+i);
//cout<<id<<' '<<char('a'+i)<<endl;
}
}
a[id]=tmp;
} if(ans==){
cout<<"Impossible\n";
} else if(ans>){
cout<<"Ambiguous"<<endl;
} else{
a[pos]=x;
cout<<a;
}
}

为什么好友单切全都9题10题啊?我才6题啊好尴尬啊。。。

gym 101755的更多相关文章

  1. GYM 101755 K.Video Reviews 【贪心】+【二分】

    <题目链接> 题目大意: 一家公司想让n个人给他们的产品评论,所以依次去找这n个人,第i个人会评论当且仅当已经有ai个人评论或他确实对这个产品感兴趣,但是这n个人都不对这个产品感兴趣,问这 ...

  2. Video Reviews

    题目链接:http://codeforces.com/gym/101755/problem/K 题目理解: 一家公司想让n个人给他们的产品评论,所以依次去找这n个人,第i个人会评论当且仅当已经有ai个 ...

  3. Safe Path(bfs+一维数组存图)

    题目链接:http://codeforces.com/gym/101755/problem/H 题目分析:先bfs一遍怪兽可以到达的点,再bfs人可以走的地方看可不可以到达终点: 很显然读到  2&l ...

  4. ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力

     Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS     Memory Limit:65536KB     64bit IO Fo ...

  5. ACM: Gym 101047K Training with Phuket's larvae - 思维题

     Gym 101047K Training with Phuket's larvae Time Limit:2000MS     Memory Limit:65536KB     64bit IO F ...

  6. ACM: Gym 101047E Escape from Ayutthaya - BFS

    Gym 101047E Escape from Ayutthaya Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I6 ...

  7. ACM: Gym 101047B Renzo and the palindromic decoration - 手速题

     Gym 101047B  Renzo and the palindromic decoration Time Limit:2000MS     Memory Limit:65536KB     64 ...

  8. Gym 101102J---Divisible Numbers(反推技巧题)

    题目链接 http://codeforces.com/gym/101102/problem/J Description standard input/output You are given an a ...

  9. Gym 100917J---Judgement(01背包+bitset)

    题目链接 http://codeforces.com/gym/100917/problem/J Description standard input/outputStatements The jury ...

随机推荐

  1. poj1328 Radar Installation(贪心 策略要选好)

    https://vjudge.net/problem/POJ-1328 贪心策略选错了恐怕就完了吧.. 一开始单纯地把island排序,然后想从左到右不断更新,其实这是错的...因为空中是个圆弧. 后 ...

  2. 【小程序】小程序开发自定义组件的步骤>>>>>>>>>小程序开发过程中报错:jsEnginScriptError

    报错:jsEnginScriptError VM6342: jsEnginScriptError Component is not found in path "component/spac ...

  3. 两个UITableView的级联菜单

    效果 源码 https://github.com/YouXianMing/Animations 说明 1. TwoLevelLinkageView封装了两个tableView,左边tableView中 ...

  4. 罗技Setpoint控制酷狗等第三方播放器

    手里有个淘过来的二手戴尔蓝牙键盘,虽然是戴尔的,但是确实罗技代工的,因此可以使用罗技的Setpoint,用这个软件后可以集中管理罗技的键盘鼠标进行一些个性化设置,如下图所示.不过郁闷的是如果不装Set ...

  5. 诡异的druid链接池链接断开故障经验总结

    背景 症状 排查 修复 背景 最近在陆续做机房升级相关工作,配合DBA对产线数据库链接方式做个调整,将原来直接链接读库的地址切换到统一的读负载均衡的代理 haproxy 上,方便机柜和服务器的搬迁. ...

  6. Foxmail中配置O365邮箱和Hotmail邮箱

    一.简述 平时我们经常使用第三方的邮箱工具来管理邮箱.可能性能比Outlook好很多,比如Foxmail,而且也能和Skype会议关联的很好.本文就讲如何在Outlook中关联Office365邮箱和 ...

  7. java AOP Before, After, AfterReturning, AfterThrowing, or Around 注解

    https://www.eclipse.org/aspectj/doc/next/adk15notebook/ataspectj-pcadvice.html Advice In this sectio ...

  8. 系统管理员需知的 16 个 iptables 使用技巧

    现代 Linux 内核带有一个叫 Netfilter[1] 的数据包过滤框架.Netfilter 提供了允许.丢弃以及修改等操作来控制进出系统的流量数据包.基于 Netfilter 框架的用户层命令行 ...

  9. 适用于 Windows 10 的触摸板手势

    高级用户! 在 Windows 10 笔记本电脑的触摸板上试用这些手势: 选择项目:点击触摸板. 滚动:将两根手指放在触摸板上,然后以水平或垂直方向滑动. 放大或缩小:将两根手指放在触摸板上,然后收缩 ...

  10. <%: Html.DisplayNameFor与 <%: Html.DisplayFor的区别

    DisplayNameForModel只有在model定义了DisplayName时有用,简单说,DisplayNameFor是针对model里的"字段"别名,DisplayNam ...